没有活动的事件上下文——RESTeasy、Seam
No event context active - RESTeasy, Seam
我正在尝试使用 Seam2 在 JBoss 7.x 上向我们的应用程序 运行 添加带有 RESTeasy 的 RESTful Web 服务。
我想尽可能少地使用 Seam,但我需要它来进行依赖注入。
我的 REST 端点如下:
@Name("myEndpoint")
@Stateless
@Path("/path")
@Produces(MediaType.APPLICATION_JSON+"; charset=UTF-8")
public class MyEndpoint {
@In private FooService fooService;
@GET
@Path("/foo/{bar}")
public Response foobar(@CookieParam("sessionId") String sessionId,
@PathParam("bar") String bar)
{ ... }
}
我正在使用 class 扩展 Application
。没有 XML 配置。
我可以使用 Web 服务方法并且它们有效,但我总是得到 IllegalStateException
:
Exception processing transaction Synchronization after completion: java.lang.IllegalStateException: No event context active
我确实尝试了 documentation 中的所有内容,但我无法摆脱它。如果我省略了 @Stateless
注释,我就不会完成任何注入。添加 @Scope
不会做杰克。通过 seam/resource/
访问服务甚至不起作用(即使没有使用 @ApplicationPath
的应用程序 class)。
如果我不使用 Dep,它就会消失。注入,而是添加到每个方法
fooService = Component.getInstance("fooService");
Lifecycle.beginCall();
...
Lifecycle.endCall();
这不是一个很好的解决方案。 不,也行不通...
我已经解决了这个问题。出于某种原因(仍然不确定为什么,可能是因为我试图单独使用注释和代码并且没有 XML 配置),我的 REST 服务在 "non-standard" URL 下可用。
通常类似于“/seam/resources/rest”。
无论如何,如果您有 "custom" 路径,Seam 不知道它应该注入上下文。您需要将 <web:context-filter url-pattern="something" />
添加到 component.xml
。
具体来说,我们已经有了这个标签,但带有 regex-url-pattern
属性,我扩展它以匹配 REST URL。
我正在尝试使用 Seam2 在 JBoss 7.x 上向我们的应用程序 运行 添加带有 RESTeasy 的 RESTful Web 服务。
我想尽可能少地使用 Seam,但我需要它来进行依赖注入。
我的 REST 端点如下:
@Name("myEndpoint")
@Stateless
@Path("/path")
@Produces(MediaType.APPLICATION_JSON+"; charset=UTF-8")
public class MyEndpoint {
@In private FooService fooService;
@GET
@Path("/foo/{bar}")
public Response foobar(@CookieParam("sessionId") String sessionId,
@PathParam("bar") String bar)
{ ... }
}
我正在使用 class 扩展 Application
。没有 XML 配置。
我可以使用 Web 服务方法并且它们有效,但我总是得到 IllegalStateException
:
Exception processing transaction Synchronization after completion: java.lang.IllegalStateException: No event context active
我确实尝试了 documentation 中的所有内容,但我无法摆脱它。如果我省略了 @Stateless
注释,我就不会完成任何注入。添加 @Scope
不会做杰克。通过 seam/resource/
访问服务甚至不起作用(即使没有使用 @ApplicationPath
的应用程序 class)。
如果我不使用 Dep,它就会消失。注入,而是添加到每个方法
fooService = Component.getInstance("fooService");
Lifecycle.beginCall();
...
Lifecycle.endCall();
这不是一个很好的解决方案。 不,也行不通...
我已经解决了这个问题。出于某种原因(仍然不确定为什么,可能是因为我试图单独使用注释和代码并且没有 XML 配置),我的 REST 服务在 "non-standard" URL 下可用。
通常类似于“/seam/resources/rest”。
无论如何,如果您有 "custom" 路径,Seam 不知道它应该注入上下文。您需要将 <web:context-filter url-pattern="something" />
添加到 component.xml
。
具体来说,我们已经有了这个标签,但带有 regex-url-pattern
属性,我扩展它以匹配 REST URL。