使用JBoss 7.1.1的EJB导致WELD 001303错误

时间:2013-04-10 16:26:01

标签: java-ee ejb jboss7.x sip jboss-weld

我正在尝试触发一个导致WELD 001303问题的get请求。     @Path( “/测试”)     @RequestScoped     公共类TestRest {

    @EJB
    HelloWorldInterface helloWorld;

    @GET
    @Path("/get")
    public Response get() {
        return Response.status(201).entity(helloWorld.sayHello()).build();
    }

    @POST
    @Path("/post")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public Response post(String request) {
        String answer = helloWorld.sayHello() + request;
        return Response.status(201).entity(answer).build();
    }

}

使用:http://sourceforge.net/projects/mobicents/files/Mobicents%20Sip%20Servlets/Mobicents%20Sip%20Servlets%201.7.0.FINAL/中的mss-1.7.0FINAL-jboss-as-7.1.1.FINAL

我需要这个MSS包来支持sip。

我的项目为Sourecode,项目为.war

工作流:

1. install mss package

2. start mss/jboss server with sip support (standalone-sip.xml) and deploy project

3. open http://127.0.0.1:8080/my-sipapp/rest/test/get

- > `org.jboss.resteasy.spi.UnhandledException:org.jboss.weld.context.ContextNotActiveException:WELD-001303范围类型javax.enterprise.context.RequestScoped没有活动的上下文     org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:340)     org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:214)     org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:190)     org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:540)     org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:502)     org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:119)     org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)     org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)     org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)     javax.servlet.http.HttpServlet.service(HttpServlet.java:847)     org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62) 根本原因

org.jboss.weld.context.ContextNotActiveException:WELD-001303范围类型javax.enterprise.context.RequestScoped没有活动的上下文     org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:598)     org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:71)     org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:79)     com.mycompany.app.rest.TestRest $代理$ _ $ $ WeldClientProxy.get(TestRest $ $代理 $$ _ WeldClientProxy.java)     sun.reflect.NativeMethodAccessorImpl.invoke0(原生方法)     sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)     sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     java.lang.reflect.Method.invoke(Method.java:601)     org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:155)     org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:257)     org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:222)     org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:211)     org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:525)     org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:502)     org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:119)     org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)     org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)     org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)     javax.servlet.http.HttpServlet.service(HttpServlet.java:847)     org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62)`

1 个答案:

答案 0 :(得分:1)

有两种解决方案。等到weld-core-1.1.8.FINAL.jar更新!或者你得到源代码并在org.jboss.weld.context.AbstractBoundContext中进行硬性修复:

public void deactivate() {
if (getBeanStore() != null )
{ getBeanStore().detach(); super.deactivate(); }
}

有关详细信息,请参阅https://issues.jboss.org/browse/WELD-1020?_sscc=t