gpt4 book ai didi

ejb - @EJB 未注入(inject)到 JAX-RS

转载 作者:行者123 更新时间:2023-12-04 05:43:47 24 4
gpt4 key购买 nike

我有 @LocalBean s 和 JAX-RS 资源在一个耳朵的不同包中。

而且我在这些资源之前还有一个 ServletFilter 过滤。

我发现 @EJB适用于 ServletFilter 但不适用于那些资源。

@Stateless
@LocalBean
class MyBean { // in ejb jar
}

@WebFilter(urlPatterns = {"/*"})
class MyFilter implements Filter { // in the same war
@EJB MyBean myBean; // not null
}

@ApplicationPath("/")
class MyApplication extends Application { // in the same war
}

@Path("/my")
class MyResource { // in the same war
@EJB MyBean myBean; // null
}

没有特殊的日志,只是 MyResource 方法中的 NPE。
有谁能够帮助我?

更新 - - - - - - - - - - - - - - - - - - - - - - - -

将这些资源类设为 @Stateless做作品。

但我只是好奇那些 ejb-jar 和 web-war 组合成一个耳朵。

然后网络 war 是一个网络组件,不是吗?

UPDATE2 ------------------------------------------------- -----

哦,对不起。还有 MyApplication这使 MyResource 成为 JAX-RS 资源。

当我部署 ear GF 将其检测为“企业应用程序”。

UPDATE3 ------------------------------------------------- --------------

这是我的application.xml

<?xml version="1.0" encoding="UTF-8"?>
<application 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/application_6.xsd" version="6">
<display-name>sngp-v0-ear</display-name>
<module> <!-- EJBs are here -->
<ejb>sngp-v0-beans-1.0-alpha-1-SNAPSHOT.jar</ejb>
</module>
<module>
<web> <!-- JAX-RS are here -->
<web-uri>sngp-v0-mobile-resources-1.0-alpha-1-SNAPSHOT.war</web-uri>
<context-root>/sngp-v0-mobile-resources</context-root>
</web>
</module>
<library-directory>lib</library-directory>
</application>

最佳答案

MyResource类既不是 Web 组件也不是企业 bean,但您正试图将 EJB 注入(inject)其中。只有当客户端是 Web 组件或另一个企业 bean 时,才能保证 EJB 注入(inject)有效。

尝试制作MyResource @Stateless .

看看这个 Java EE 6 tutorial关于 EJB注入(inject)。如果您使用的是 NetBeans,我还发现使用内置向导创建 RESTFul Web 服务很有用。看看这个link如果。

关于ejb - @EJB 未注入(inject)到 JAX-RS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10944583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com