關於對java:comp/env
在EJB的存在範圍問題3。
傳統上(在JEE 6之前)java:comp/env
是war
模塊的模塊級別和jar
模塊中的EJB的EJB級別。 在該模型中,必須爲每個單獨的EJB定義環境條目(通過resource-ref
和env-entry
,ejb-jar.xml
或資源引用,因爲JEE5可以在類級別使用@Resource
)。
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>B1</ejb-name>
<ejb-class>p1.B1</ejb-class> <!-- ejb-class should be skipped if bean is already defined via annotation -->
<env-entry>
<env-entry-name>entry1</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>value1</env-entry-value
</env-entry>
</session>
</enterprise-beans>
</ejb-jar>
由於JEE 6,一個可以部署的EJB作爲war
模塊的一部分。是否war
模塊直接部署或是部分或ear
模塊,它具有一個單一的java:comp/env
命名空間的所有servlet,EJB和該模塊中的任何其它代碼之間共享。人們可以在web.xml
定義環境條目:
<web-app>
<env-entry>
<env-entry-name>entry1</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>value1</env-entry-value
</env-entry>
</web-app>
在這種war
基於模型,人們仍然可以有ejb-jar.xml
配置EJB的其他方面,但env-entry
對於一個給定的bean在ejb-jar.xml
最終會注入所有的環境價值其他豆在war
。
因此,我總是會使用war
歸檔一切(可能打包在ear
)。
感謝EJP。第一個問題和第三個問題,我的意思是,Web應用程序有IntialContext,另一個是EJB組件以及其他我不知道的其他問題。第二個問題我知道關於四個節點的java:comp/env''java:global''java:app''java:module''JNDI將查找資源的順序? –