JAVA-EE7/javax.ws.rs:在REST资源中注入EJB

JAVA-EE7/javax.ws.rs:在REST资源中注入EJB,java,web-services,rest,jakarta-ee,ejb-3.1,Java,Web Services,Rest,Jakarta Ee,Ejb 3.1,我试图通过Annotation@EJB将无状态EJB注入我的JAX-RS web服务。不幸的是,被注入的EJB为null,并且在调用它时抛出NullPointerException,请参见类“RegistrationRest”: 你能帮忙吗?试试这个: @ApplicationPath("/rest") public class RestConfiguration extends Application { private Set<Class<?>> resou

我试图通过Annotation@EJB将无状态EJB注入我的JAX-RS web服务。不幸的是,被注入的EJB为null,并且在调用它时抛出NullPointerException,请参见类“RegistrationRest”:

你能帮忙吗?

试试这个:

@ApplicationPath("/rest")
public class RestConfiguration extends Application {

    private Set<Class<?>> resources = new HashSet<Class<?>>();

    public RestConfiguration () {
        resources.add(RegistrationRest.class);
    }

    @Override
    public Set<Class<?>> getClasses() {
        return resources;
    }

}
@ApplicationPath(“/rest”)
公共类RestConfiguration扩展了应用程序{
私有集>();
公共REST配置(){
添加(RegistrationRest.class);
}
@凌驾
公共设置尝试以下操作:

@ApplicationPath("/rest")
public class RestConfiguration extends Application {

    private Set<Class<?>> resources = new HashSet<Class<?>>();

    public RestConfiguration () {
        resources.add(RegistrationRest.class);
    }

    @Override
    public Set<Class<?>> getClasses() {
        return resources;
    }

}
@ApplicationPath(“/rest”)
公共类RestConfiguration扩展了应用程序{
私有集>();
公共REST配置(){
添加(RegistrationRest.class);
}
@凌驾

public set您是否尝试使用“@LocalBean”而不是“@Local”?您有任何stacktrace吗?请告诉我们。我编辑了我的问题以显示stacktrace,我认为错误的主要原因是异常:org.jboss.resteasy.spi.unhandledeException:java.lang.NullPointerException.org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:222)[resteasy-jaxrs-2.3.2.Final.jar:@OlivierM.:LocalBean也不起作用,我得到了同样的错误。你试过用“@LocalBean”代替“@Local”吗?你有任何stacktrace吗?请告诉我们。我编辑了我的问题以显示stacktrace,我认为错误的主要原因是异常:org.jboss.resteasy.spi.UnhandledException:java.lang、 NullPointerException.org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:222)[resteasy-jaxrs-2.3.2.Final.jar:@OlivierM.:LocalBean也不起作用,我也有同样的错误。非常感谢,在我的界面中声明了注释Local之后,它就起作用了!所以解决方案是设置一个特殊的侦听器或servlet来监视rest服务?很高兴它起作用了!我不确定它在幕后是如何工作的,但我知道侦听器er必须在那里!非常感谢,在我的界面中声明注释本地后,它可以工作!因此解决方案是设置一个特殊的侦听器或servlet来监视rest服务?很高兴它工作了!我不确定它在引擎盖下如何工作,但我知道侦听器必须在那里!
@Stateless(name = "DbDao")
@Local
public class DbDaoImpl implements DbDao {
    private final String ENTITY_MANAGER = "mouPU";

    @PersistenceContext(unitName = ENTITY_MANAGER)
    protected EntityManager em;

    @Override
    public List<Address> findInfoByName(final String name) {
        @SuppressWarnings("unchecked")
        List<Person> persons = em.createNamedQuery("findInfoByName").setParameter("name", name)).getResultList();
        return persons;
    }
}
16:28:14,831 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/].[net.Bplace.mou.ui.rest.RestConfiguration]] (http--0.0.0.0-80-6) Servlet.service() for servlet net.Bplace.mou.ui.rest.RestConfiguration threw exception: org.jboss.resteasy.spi.UnhandledException: java.lang.NullPointerException
    at org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:340) [resteasy-jaxrs-2.3.2.Final.jar:]
    at org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:214) [resteasy-jaxrs-2.3.2.Final.jar:]
    at org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:190) [resteasy-jaxrs-2.3.2.Final.jar:]
    at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:540) [resteasy-jaxrs-2.3.2.Final.jar:]
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:502) [resteasy-jaxrs-2.3.2.Final.jar:]
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:119) [resteasy-jaxrs-2.3.2.Final.jar:]
    at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208) [resteasy-jaxrs-2.3.2.Final.jar:]
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) [resteasy-jaxrs-2.3.2.Final.jar:]
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) [resteasy-jaxrs-2.3.2.Final.jar:]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
    at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145) [prettyfaces-jsf2-3.3.3.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
    at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
    at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_11]
Caused by: java.lang.NullPointerException
    at net.Bplace.mou.ui.rest.RegistrationRest.getCityByCountryAndZipCode(RegistrationRest.java:100) [classes:]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_11]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_11]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_11]
    at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_11]
    at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:155) [resteasy-jaxrs-2.3.2.Final.jar:]
    at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:257) [resteasy-jaxrs-2.3.2.Final.jar:]
    at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:222) [resteasy-jaxrs-2.3.2.Final.jar:]
    at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:211) [resteasy-jaxrs-2.3.2.Final.jar:]
    at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:525) [resteasy-jaxrs-2.3.2.Final.jar:]
    ... 23 more
@ApplicationPath("/rest")
public class RestConfiguration extends Application {

    private Set<Class<?>> resources = new HashSet<Class<?>>();

    public RestConfiguration () {
        resources.add(RegistrationRest.class);
    }

    @Override
    public Set<Class<?>> getClasses() {
        return resources;
    }

}
<listener>
    <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
      http://java.sun.com/xml/ns/javaee 
      http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>