私は@LocalBean
s と JAX-RS リソースを 1 つの耳の異なるパッケージに持っています。
また、これらのリソースの前に 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 が単一の耳に組み込まれていることに興味があります。
そして、web-war は Web コンポーネントですね。
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>