【发布时间】:2019-03-09 13:13:05
【问题描述】:
我已经声明了下一个接口:
public interface IArea {
@GET
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
@Path("/")
Response get(
@QueryParam("param1") String param1,
@QueryParam("param2") String param2
);
}
我使用这个接口实现了两个无状态bean:
@Stateless
@Path("/first")
public class FirstController implements IArea {
public Response get(String param1, String param2) {
return Response.status(200).build();
}
}
@Stateless
@Path("/second")
public class SecondController implements IArea {
public Response get(String param1, String param2) {
return Response.status(200).build();
}
}
结果我们在调用两个端点期间出现未知错误:
org.jboss.weld.exceptions.IllegalArgumentException:WELD-001456: 参数 bean 不能为空
在 org.jboss.weld.util.Preconditions.checkArgumentNotNull(Preconditions.java:40) 在 org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:703) 在 org.jboss.weld.util.ForwardingBeanManager.getReference(ForwardingBeanManager.java:64) 在 org.jboss.weld.bean.builtin.BeanManagerProxy.getReference(BeanManagerProxy.java:86) 在 org.jboss.resteasy.cdi.CdiConstructorInjector.construct(CdiConstructorInjector.java:68) 在 org.jboss.resteasy.cdi.CdiConstructorInjector.construct(CdiConstructorInjector.java:73) 在 org.jboss.resteasy.plugins.server.resourcefactory.POJOResourceFactory.createResource(POJOResourceFactory.java:53) 在 org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:312) 在 org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:441) ... 51 更多
如果我实现单个 bean,例如 FirstController,服务器工作正常。
在这两种情况下,“部署”选项卡中的“资源方法”都是正确的。
我们的平台是 Wildfly 12.0.0.Final。 Java EE 8。
【问题讨论】:
-
我在 WF10(不是 12)+ JEE8 中尝试了您的示例。它工作得很好(并不奇怪,因为您的代码似乎完全正确)。