[英]Jndi Lookup in EJB and in its dependencies
我有一個作為EAR部署在Websphere 8.5上的Java應用程序。 我試圖找出如何從ejb-jar.xml中進行JNDI查找。 (從EJB到Noob)我通常通過在web.xml中添加條目來從WAR中查找JNDI條目。 現在,我正在研究ejb模塊,我仍然可以在ejb bean [1]上進行JNDI查找。 見下面我的ejb-jar.xml:
<?xml version="1.0" encoding="UTF-8"?><ejb-jar id="ejb-jar_ID" version="2.1"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
<display-name>MyService-ejb</display-name>
<enterprise-beans>
<message-driven id="MyServiceSyncOutboundCom">
<ejb-name>MyServiceSyncOutboundcom</ejb-name>
<ejb-class>
com.company.MyService.sync.com.MyServiceSyncOutboundCom
</ejb-class>
<transaction-type>Container</transaction-type>
<message-destination-type>
javax.jms.Queue
</message-destination-type>
<env-entry>
<env-entry-name>minBalance</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>500</env-entry-value>
</env-entry>
<env-entry>
<description></description>
<env-entry-name>maxCreditBalance</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>10000</env-entry-value>
</env-entry>
</message-driven>
</enterprise-beans>
我的問題:既然沒有web.xml,如何將這些條目添加到類中? 另外,如果ejb模塊包含JAR依賴項,例如帶有Configs
類的myservice-config.jar
,是否可以在該類中而不是我的消息驅動Bean中檢索這些條目? 那如何改變ejb-jar.xml
文件?
[1] https://docs.oracle.com/cd/E16439_01/doc.1013/e13981/servjndi008.htm
ejb-jar.xml
文件對EJB的作用與web.xml
文件對servlet的作用相同。 注入到EJB的XML語法與注入到servlet的XML語法相同,只是在ejb-jar.xml
它嵌套在企業bean中,而不僅僅是在模塊級別。 在您的示例中,將是這樣的:
<env-entry>
<env-entry-name>minBalance</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>500</env-entry-value>
<injection-target>
<injection-target-class>com.company.MyService.sync.com.MyServiceSyncOutboundCom</injection-target-class>
<injection-target-name>name of field or method</injection-target-name>
</injection-target>
</env-entry>
您只能注入將由容器創建的類; 因此,例如,servlet是由Web容器創建的; EJB實例和攔截器由EJB容器創建。
您的Configs
類似乎不是由容器管理的類,因此不能成為注入的目標。 我可以想到仍然可以采用的幾種選擇:
1-在您的ejb-jar.xml
,只需將其聲明為單例bean即可; 然后將您env-entry
值注入其中。 然后,您可以將Configs
單例bean注入其他bean。 盡管可能是非標准的,但ejb-jar.xml
可以將應用程序類路徑上的任何類聲明為EJB。
2-聲明Confg
為CDI托管bean,並使用@Inject
批注。 CDI沒有類似於web.xml
或ejb-jar.xml
任何內容,因此在使用CDI時必須使用注釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.