我已经声明了下一个接口:
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。
答案 0 :(得分:-1)
尝试修复终点,您将拥有以下内容:
接口中有一个“ /”,实现中有一个“ /”...
并且您在以下位置没有端点: 本地主机:8080 / 因此,它总是需要2个参数。
希望这会有所帮助。