ejb 2.0 3.0_EJB 3.1全局JNDI访问
ejb 2.0 3.0
如本系列前面部分所述,EJB 3.0版規(guī)范的主要缺點(diǎn)是缺少可移植的全局JNDI名稱。 這意味著沒(méi)有可移植的方式將EJB引用鏈接到應(yīng)用程序外部的Bean。EJB v。3.1規(guī)范用自己的話填補(bǔ)了這一定義:
“一個(gè)標(biāo)準(zhǔn)化的全局JNDI名稱空間和一系列相關(guān)的名稱空間,它們映射到Java EE應(yīng)用程序的各個(gè)范圍。”
此博客文章將為您提供EJB v.3.1規(guī)范定義的Global JNDI Access的概述。
命名空間和范圍
EJB v。3.1規(guī)范使用其自己的范圍定義了三個(gè)不同的名稱空間:
- 全球。
- 應(yīng)用。
- 模塊。
該規(guī)范要求兼容的容器使用所需的JNDI名稱注冊(cè)所有會(huì)話Bean。 這樣的標(biāo)準(zhǔn)化名稱是可移植的,您的應(yīng)用程序組件將能夠使用跨應(yīng)用程序服務(wù)器可移植的名稱來(lái)建立對(duì)EJB的引用。
全球
全局名稱空間中的名稱將可以在任何應(yīng)用程序中被代碼訪問(wèn),并符合以下語(yǔ)法:
java:global [/ <app-name>] / <module-name> / <bean-name> [!<interface-fqn>]
<app-name>是在其標(biāo)準(zhǔn)部署描述符( application.xml )中指定的Java EE應(yīng)用程序的名稱,或者默認(rèn)情況下是已部署EAR歸檔文件的基本名稱。 僅當(dāng)會(huì)話EJB部署在Java EE應(yīng)用程序EAR文件中時(shí),才使用此路徑片段。
如果會(huì)話EJB部署在EAR文件中,則其<module-name>是Java EE模塊的路徑名,該Java EE模塊包含EAR文件中的bean(無(wú)擴(kuò)展名)。 如果將會(huì)話bean部署為JAR文件中的獨(dú)立Java EE組件或WAR文件中的Java EE Web模塊的一部分(Java EE 6規(guī)范現(xiàn)在允許),則<module-name>是檔案名稱(不帶擴(kuò)展名)。 可以通過(guò)組件的標(biāo)準(zhǔn)部署描述符( ejb-jar.xml或web.xml )的<module-name>元素覆蓋<module-name>值。
<bean-name>是EJB名稱,由本博文前面部分中描述的機(jī)制指定。
<interface-fqn>部分是EJB業(yè)務(wù)接口的標(biāo)準(zhǔn)名稱。
容器必須為EJB及其無(wú)接口視圖實(shí)現(xiàn)的每個(gè)本地和遠(yuǎn)程業(yè)務(wù)接口注冊(cè)一個(gè)JNDI全局條目。
具有一個(gè)業(yè)務(wù)接口或無(wú)接口視圖的會(huì)話EJB
如果EJB僅實(shí)現(xiàn)一個(gè)業(yè)務(wù)接口或僅具有無(wú)接口視圖,則還需要容器使用以下JNDI名稱注冊(cè)這種視圖:
java:global [/ <應(yīng)用程序名稱>] / <模塊名稱> / <bean名稱>
應(yīng)用
應(yīng)用程序名稱空間中的名稱只能由同一應(yīng)用程序中的代碼訪問(wèn),并且符合以下語(yǔ)法:
java:app / <模塊名稱> / <bean-名稱> [!<interface-fqn>]
每個(gè)路徑片段保留與上一節(jié)中為全局名稱空間JNDI名稱語(yǔ)法描述的相同含義。
上一部分中描述的兼容容器的發(fā)布規(guī)則相同。
模組
模塊名稱空間中的名稱只能由同一模塊中的代碼訪問(wèn),并且符合以下語(yǔ)法:
java:module / <bean-name> l [!<interface-fqn>]
同樣,每個(gè)路徑片段都保留了針對(duì)全局名稱空間JNDI名稱描述的相同含義。
全局命名空間部分中描述的兼容容器的發(fā)布規(guī)則相同。
本地客戶
這可能是重要的發(fā)現(xiàn),雖然本地接口(和無(wú)界面視圖)公布的全球JNDI名稱,這并不意味著這樣的接口將是在另一個(gè)JVM中運(yùn)行的組件訪問(wèn)。
結(jié)論
EJB v。3.1規(guī)范以及Java EE 6平臺(tái)中的其他規(guī)范帶來(lái)了簡(jiǎn)單性,并為開(kāi)發(fā)人員的工具箱添加了許多新功能和工具。 “全局JNDI名稱”是一個(gè)杰出的功能,盡管很簡(jiǎn)單,因?yàn)樗罱K填補(bǔ)了該規(guī)范以前的版本以及整個(gè)Java EE平臺(tái)長(zhǎng)期存在的可移植性限制。
EJB 3.0和EJB 3.1提供了功能強(qiáng)大,可移植但簡(jiǎn)單的組件模型來(lái)構(gòu)建企業(yè)應(yīng)用程序。 “ EJB糟透了 ”的日子已經(jīng)過(guò)去了,但是只有時(shí)間才能證明這項(xiàng)技術(shù)是否會(huì)重新獲得我們(開(kāi)發(fā)人員)的信任。
就我自己而言,我對(duì)Java EE 6,EJB,CDI bean,NetBeans或JDeveloper之類(lèi)的IDE(盡管后者尚不支持EJB 3.1)提供的良好支持以及所有的規(guī)范感到非常滿意。建立這個(gè)古老的平臺(tái)
參考: The Gray Blog上來(lái)自我們的JCG合作伙伴 Gray的 EJB 3.1全局JNDI訪問(wèn) 。
相關(guān)文章 :- EJB 3.0注入和查找簡(jiǎn)介
- 基本的EJB參考,注入和查找
- EJB程序化查找
- 使用Oracle WebLogic對(duì)應(yīng)用程序外部的EJB的引用
- GWT EJB3 Maven JBoss 5.1集成教程
- Java泛型快速教程
- JVM如何處理鎖
翻譯自: https://www.javacodegeeks.com/2011/08/ejb-31-global-jndi-access.html
ejb 2.0 3.0
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的ejb 2.0 3.0_EJB 3.1全局JNDI访问的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 从数百万个光纤(而不是数千个线程)中查询
- 下一篇: 协同遗漏的效果–使用简单的NIO客户端/