我正在尝试触发一个导致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。
工作流:
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)`
答案 0 :(得分:1)
有两种解决方案。等到weld-core-1.1.8.FINAL.jar更新!或者你得到源代码并在org.jboss.weld.context.AbstractBoundContext中进行硬性修复:
public void deactivate() {
if (getBeanStore() != null )
{ getBeanStore().detach(); super.deactivate(); }
}