[英]glassfish-ejb-jar.xml / ejb-jar.xml RMI undocumented mandatory parameter
通過遵循本文檔中的簡單說明,我已成功配置了兩個Java EE 6應用程序以通過RMI-IIOP相互通信。 一個應用程序在另一個應用程序中調用遠程EJB以獲取當前時間,反之亦然。
一切似乎都正常,但是我對glassfish-ejb-jar.xml
的元素之一感到困惑。 給我一點時間解釋。 我有兩個應用程序,Alpha和Beta。 這是Beta的部署描述符:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-ejb-jar PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 EJB 3.1//EN" "http://glassfish.org/dtds/glassfish-ejb-jar_3_1-1.dtd">
<glassfish-ejb-jar>
<enterprise-beans>
<ejb>
<ejb-name>BetaLocalSessionBean</ejb-name>
<ejb-ref>
<ejb-ref-name>ejb/alphaSessionBean</ejb-ref-name>
<jndi-name>corbaname:iiop:alphaServerUrl:11637#java:global/AlphaApplication/AlphaApplication-ejb/AlphaSessionBean</jndi-name>
</ejb-ref>
</ejb>
</enterprise-beans>
</glassfish-ejb-jar>
BetaLocalSessionBean
是一個本地無狀態會話Bean,我注入了遠程AlphaSessionBean
來獲取時間。 我的困惑是:如果刪除 <ejb-name>
元素,為什么會出現以下異常?
Warning: DPL8007: Unsupported deployment descriptors element jndi-name value corbaname:iiop:alpha:3700#java:global/AlphaApplication/AlphaApplication-ejb/AlphaSessionBean
Severe: Exception while deploying the app [BetaApplication]
Severe: java.lang.NullPointerException
at com.sun.enterprise.deployment.node.runtime.EjbNode.endElement(EjbNode.java:202)
at com.sun.enterprise.deployment.node.SaxParserHandler.endElement(SaxParserHandler.java:481)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609)
...
Severe: Exception while deploying the app [BetaApplication]
為什么<ejb-name>
元素是強制性的? 我上面鏈接到的文檔中沒有提到它。 我放哪個豆名稱有關系嗎? 我已經證實,我可以注入AlphaSessionBean
到其他豆類相比BetaLocalSessionBean
,所以這是什么元素的意義是什么?
版本:
說明文件:
我認為您得到的錯誤只是邏輯上的,因為那是應用程序服務器知道將引用注入到哪里的唯一方法,即alphasessionbean。
該名稱還必須是您創建的EJB bean的名稱,除非您在@Stateless或@Stateful批注上配置了name屬性,在這種情況下,引用將是該名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.