亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JBoss3.0 下配置和部署EJB簡介

2019-11-18 11:26:29
字體:
來源:轉載
供稿:網友

JBoss3.0 下配置和部署EJB簡介

(by huihoo.org 趙晨希,zhaochenxi@vip.sina.com)

1.JBoss簡介

JBoss是一個運行EJB的J2EE應用服務器。它是開放源代碼的項目,遵循最新的J2EE規范。從JBoss項目開始至今,它已經從一個EJB容器發展成為一個基于的J2EE的一個web 操作系統Operating system for web),它體現了J2EE規范中最新的技術,并且它還在the javaWorld Editors' Choice 2002評選中獲得“最佳Java應用服務器”大獎。無論是學習還是應用,JBoss為我們提供了一個非常優秀的平臺。有關JBoss的具體信息請參閱其主頁http://www.jboss.org。

       剛開始使用JBoss進行EJB開發時,由于可供參考的資源不是很多,所以有一個比較困難的起步階段。JBoss的配置和使用沒有提供圖形向導界面,所以開發部署EJB相對比較復雜。本文通過盡量具體的演示來對JBoss3.0下的EJB開發和部署的進行一個簡單的介紹,從而使剛開始使用JBoss的用戶可以很快地進入到真正的J2EE應用開發中。

由于本文主要介紹JBoss3.0中不同類型EJB的配置和部署,不對基本的EJB開發做太多的描述,所以希望讀者具有J2EE和EJB的經驗。想要了解有關信息請查閱參考資料1。

2.JBoss3.0中基本的ejb配置和部署

根據J2EE規范的要求,一個基本的ejb jar包使用的描述文件是ejb-jar.xml。web應用的war包使用的是web.xml。企業應用的ear包使用的是application.xml。這些配置文件都是中性的和平臺無關的。同時應用服務器可以使用一些其他的配置文件用于描述特定服務器的相關信息。在JBoss中這樣的文件有jboss.xml,jboss-web.xml等。JBoss容器中這些文件不是必須的,假如提供了那么jboss.xml和ejb-jar.xml放在同一目錄下,jboss-web.xml和web.xml放在同一目錄下。關于jboss.xml和jboss-web.xml的規范請參考JBoss安裝目錄下docs/dtd/目錄下的對應的DTD文件。

2.1 JBoss中關于EJB客戶端的配置:

調用EJB的客戶端可以是jsp、Servlet或客戶端應用程序。假如客戶端和服務器不在同一個Java VM上,那么在客戶端必須提供一個jndi.PRoperties文件告訴客戶端進行有關JNDI命名服務的信息,并且把這個文件所在目錄設定到環境變量classpath中。

以下是一個jndi.properties的樣例:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099  (服務器地址和端口號)
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

通過這個文件和JBoss的一些客戶端類庫,就可以使用JBoss提供的EJB對象服務了。

2.2 JBoss中部署EJB:

首先介紹JBoss容器中部署各類EJB對象的兩種方法。下面的演示以session Bean為例,客戶端是一個本機上的web應用。這里不對演示程序進行具體介紹。

第一種方式:

把開發好的ejb jar包和web應用的war包公共放在deploy目錄下。

演示1:不需要jboss.xml文件和其他任何非凡的設置。

ejb-jar.xml:

<ejb-jar>

       ······

              <ejb-name>ejBTest</ejb-name>

       ······

</ejb-jar>

客戶端:web應用中對web.xml不需要添加ejb信息,不需要jboss-web.xml文件。引用ejb對象的jsp文件如下:

       ······

       InitialContext ctx = new InitialContext();

       Object objref  = ctx.lookup("ejbtest");        //使用<ejb-name>                              beanHome=(zcxejb1Home)PortableRemoteObject.narrow(objref,ejbtestHome.class);

       ······

 

演示2:使用jboss.xml文件。

在缺省情況下JBoss的JNDI服務將通過ejb-jar.xml中<ejb-name>XXX</ejb-name>中的XXX來使用EJB的home interface。但是假如有多個ejb對象在相同的ejb jar包中,在ejb-jar.xml中通過<ejb-name>XXX</ejb-name>就可能不能很好的表示某一個ejb對象,所以一般我們希望可以提供一些附加的信息,例如采用這樣的格式"[應用名]/[bean名]"來引用一個EJB對象。這時JNDI服務就可能不能正確地找到你的ejb對象,我們就需要使用jboss.xml文件,通過它實現jndi 名到ejb名的重定向。這個文件必須和ejb-jar.xml一起放到META-INFO目錄下。

ejb-jar.xml:

<ejb-jar>

       ······

       <ejb-name>ejbtest</ejb-name>

       ······

</ejb-jar>

jboss.xml:

<jboss>

       <ejb-name>ejbtest</ejb-name>

       <jndi-name>example/ejbtest</jndi-name>

</jboss>

 

客戶端:需要使用新的jndi名進行ejb定位。

······

       InitialContext ctx = new InitialContext();

       Object objref  = ctx.lookup("example/ejbtest");   //使用<jndi-name>                             beanHome=(zcxejb1Home)PortableRemoteObject.narrow(objref,ejbtestHome.class);

······

第二種方式:

把ejb和web應用包裝成一個企業應用包。部署ear時可以簡單地把通過application.xml描述ejb jar包和web應用的war包,同樣在web.war中不需要提供非凡的信息就可以和第一種方式一樣使用ejb對象。客戶端代碼也不需要進行改動。這里不再舉例說明。

此外我們可以進行更進一步的部署,這時需要使用到web.xml和jboss-web.xml。jboss-web.xml是JBoss提供的一個針對web應用進行配置的文件。jboss-web.xml和web.xml一起放在web應用的WEB-INF目錄下。

演示1:改動web.xml文件,添加<ejb-ref>標記,不使用jboss-web.xml文件。

(注重<ejb-ref>包括內部引用和外部引用。假如是同一個單元的可以通過<ejb-link>直接進行引用,而不用提供其他信息。)

web.xml:

······

<ejb-ref>

           <ejb-ref-name>ejb/ejbtest</ejb-ref-name>  <!--采用sun推薦的命名方式-->

        <ejb-ref-type>Session</ejb-ref-type>

        <home>org.zcx.test.zcxejb1Home</home>

        <remote>org.zcx.test.zcxejb1</remote>

        <ejb-link>ejbtest</ejb-link>    <!--必須和被應用的ejb-name匹配-->

</ejb-ref>

······

客戶端:由于在web.xml中引入ejb引用描述這時ejb定位發生了變化:

······

       InitialContext ctx = new InitialContext();

       Object objref  = ctx.lookup("java:comp/env/ ejb/ejbtest "); //使用java:comp/env命名空間       beanHome=(zcxejb1Home)PortableRemoteObject.narrow(objref,ejbtestHome.class);

······

 

演示2:聯合使用web.xml和jboss-web.xml

web.xml

······

<ejb-ref>

<ejb-ref-name>ejb/ejbtest</ejb-ref-name>  <!--采用sun推薦的命名方式-->

        <ejb-ref-type>Session</ejb-ref-type>

        <home>org.zcx.test.zcxejb1Home</home>

        <remote>org.zcx.test.zcxejb1</remote>

</ejb-ref>

······

jboss-web.xml

<ejb-ref>

<ejb-ref-name> ejb/ejbtest </ejb-ref-name>

<jndi-name> example/ejbtest </jndi-name> <!-- 這里對應ejb對象的jndi名-->

</ejb-ref>

客戶端:

       nitialContext ctx = new InitialContext();

       Object objref  = ctx.lookup("java:comp/env/ ejb/ejbtest ");                                           beanHome=(zcxejb1Home)PortableRemoteObject.narrow(objref,ejbtestHome.class);

 

以上的所有演示說明了ejb-jar.xml、jboss.xml、web.xml、jboss-web.xml之間的基本關系和它們的使用方式。它們是部署各類ejb對象的要害文件。接下來介紹針對不同類型的ejb對象所需要的非凡配置。

3.JBoss3.0中對于CMP2.0 Entity Bean的有關配置

JBoss3.0中JBossCMP引擎實現了EJB2.0 CMP2.0規范。JBoss3.0以前的版本CMP的引擎是Jaws,它通過standardjaws.xml和jaws.xml進行有關的配置。在新的JBossCMP引擎中Jboss3.0通過standardjbosscmp-jdbc.xml和josscmp-jdbc.xml來配置Entity Bean。JBoss3.0首先處理standardjbosscmp-jdbc.xml然后根據ejb jar中是否提供jbosscmp-jdbc.xml來做進一步處理。通過standardjbosscmp-jdbc.xml和jbosscmp-jdbc.xml可以為entity bean的部署提供如下的功能有:

l         指定所使用的數據源和對應的類型映射

l         指定一些引擎關心的屬性

l         指定引擎如何創建和治理數據庫表的原則

l         描述finder和ejbSelect方法

l         指定屬性和字段的類型映射

這里主要根據standardjbosscmp-jdbc.xml/jbosscmp-jdbc.xml介紹CMP2.0的配置方法。JBoss中原有的Jaws引擎的配置方法和新的JBossCMP的配置方法類似。這些文件的具體的信息可以參考JBoss安裝路徑下/docs/dtd中對應的DTD文件。

3.1增加新的數據源

JBoss自帶的數據庫是Hypersonic數據庫,我們可以增加一些新的數據源。具體的步驟很簡單,參照Jboss安裝目錄下/docs/examples/jca中的*-service.xml文件可以增加找到對應類型的數據庫配置樣本文件。以MySQL-service.xml文件為例,它可以配置一個MySQL數據庫作為Entity Bean的數據源。以下演示創建一個名為MySQLDS的MySQL數據源。

圖一是配置好的mysql-service.xml文件的一段代碼樣本,通過屬性設置可以定制數據源的名稱和有關連接的其他屬性。注重該文件中所有name屬性必須保持一致。

圖一 mysql-servic.xml的樣本代碼

在配置好這個文件后,把它部署在JBoss的deploy目錄下,把對應的jdbc驅動也放在lib目錄下。重新啟動Jboss就會加載這個新的數據源。

3.2 Entity Bean 對數據源的使用

第一種方式:

直接改動standardjbosscmp-jdbc.xml。把原有的數據源java:/DefautlDS屏蔽掉使用新的數據源java:/MySQLDS。(Java前綴是必須的。)不需在其他地方作改動。JBoss會實現新的數據源做為缺省的數據源。圖二是一個配置好的文件片斷。

圖二 standardjbosscmp-jdbc.xml的樣本代碼

第二種方式:

由于有可能不同的Entity Bean使用不同的數據源,而不是都使用同樣的缺省配置,所以必須為單獨的Entity Bean提供定制數據源信息的支持。這時不需要改動standardjbosscmp-jdbc.xml文件,可以通過在Entity Bean的jar包中META-INFO目錄下添加新的部署文件jbosscmp-jdbc.xml來完成。通過這個文件可以描述特定的Entity Bean的關于數據源的配置信息。圖三是一個配置好的文件片斷。

圖三 jbosscmp-jdbc.xml的樣本代碼

4.JBoss3.0中對于Message Driven Bean的配置

在JBoss中開發MDB需要使用JMS功能。JMS是Sun公司開發的面向消息的中間件API。它的主要目的是創造一種統一的面向消息編程的JavaAPI,從而避免使用提供商特定的API?,F在有幾種不同的JMS系統可供使用。JBoss3.0中提供的是JBossMQ。

4.1 JBoss3.0中配置JMS服務

在JBoss3.0中與JMS服務相關的配置文件包括兩個文件:jbossMQ-service.xml和jbossMQ-destinations-service.xml。jbossMQ-service.xml配置了jbossMQ服務中的核心對象信息。一般我們不需要處理這個配置文件。jbossMQ-destinations-service.xml用于定義具體應用所需的目的地信息。通過編輯它我們可以創建新的Topic和Queue用于具體的JMS應用的目的地。在JBoss中創建應用特定的Topic和Queues的步驟比較簡單,參照jbossMQ-destinations-service.xml

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区日韩| 欧美在线观看日本一区| 日韩精品在线播放| 国产欧美日韩中文字幕| 久久久精品2019中文字幕神马| 成人免费观看49www在线观看| 2020久久国产精品| 91免费观看网站| 久久久爽爽爽美女图片| 91精品国产综合久久久久久蜜臀| 日韩亚洲欧美中文高清在线| 国产精品久久久久av| 日韩欧美在线视频日韩欧美在线视频| 久久久亚洲国产| 亚州av一区二区| 91国产美女在线观看| 日本国产欧美一区二区三区| 久久久精品欧美| 中文在线资源观看视频网站免费不卡| 欧美一区在线直播| xxxxx91麻豆| 国产精品美女www爽爽爽视频| 久久国内精品一国内精品| 亚洲欧美中文日韩v在线观看| 丝袜情趣国产精品| 欧美一级免费看| 亚洲资源在线看| 日韩美女视频免费在线观看| 欧美激情视频一区二区三区不卡| 国产亚洲欧美日韩美女| 九九九久久国产免费| 中文字幕亚洲在线| 色悠悠久久久久| 伦伦影院午夜日韩欧美限制| 日韩中文视频免费在线观看| 92国产精品久久久久首页| 国产精品视频久| 国产精品天天狠天天看| 欧美一级淫片aaaaaaa视频| 91精品国产网站| 国产精品一区二区三区在线播放| 萌白酱国产一区二区| 久久影视免费观看| 精品亚洲aⅴ在线观看| 中文字幕精品—区二区| 国产视频久久久久| 亚洲精品v欧美精品v日韩精品| 国产精品久久久久久久久久东京| 国产精品国语对白| 国产精品老女人精品视频| 亚洲国产成人精品久久| 夜色77av精品影院| 亚洲欧美日韩精品久久| 日韩av最新在线| 中文字幕日韩在线播放| 欧美激情久久久久久| 亚洲电影免费观看高清完整版在线| 久久精品国产一区二区三区| 成人在线精品视频| 国产专区欧美专区| 日韩欧美成人区| 在线观看精品自拍私拍| 亚洲老头老太hd| 国产精品一香蕉国产线看观看| 欧美性猛交xxxx乱大交蜜桃| 亚洲影视九九影院在线观看| 亚洲精品国产品国语在线| 欧美大片免费观看| 国产精品永久免费在线| 日韩在线视频网| 精品无人国产偷自产在线| 亚洲自拍小视频| 伊人久久久久久久久久久久久| 2021久久精品国产99国产精品| 亚洲资源在线看| 亚洲自拍在线观看| 亚洲欧美中文在线视频| 久久综合伊人77777蜜臀| 亚洲国产免费av| 中文字幕日韩欧美| 亚洲成**性毛茸茸| 理论片在线不卡免费观看| 精品国产乱码久久久久久天美| 亚洲激情中文字幕| 国产午夜精品久久久| 亚洲一级片在线看| 久久精品中文字幕| 久久精品视频在线播放| 国产精品都在这里| 欧美日韩福利视频| 国外成人性视频| 欧美日韩国产麻豆| 夜夜嗨av色综合久久久综合网| 久久99精品久久久久久琪琪| 国产三级精品网站| 正在播放欧美视频| 北条麻妃久久精品| 日韩在线一区二区三区免费视频| 国产成人精品在线| 91av在线免费观看视频| 色妞一区二区三区| 欧美日韩午夜视频在线观看| 亚洲开心激情网| 一区二区三区精品99久久| 亚洲视频axxx| 九九精品在线观看| 国产区亚洲区欧美区| 日韩av123| 欧美日韩人人澡狠狠躁视频| 亚洲免费人成在线视频观看| 日韩中文字幕在线| 久久久久久久999| 97视频色精品| 日韩亚洲综合在线| 欧美精品福利在线| 日韩欧美视频一区二区三区| 91精品91久久久久久| 欧美性在线视频| 亚洲无限av看| 欧美日韩中文字幕在线视频| 国产啪精品视频网站| 久热在线中文字幕色999舞| 91精品在线影院| 欧美精品一区二区三区国产精品| 欧美视频第一页| 欧美黑人一级爽快片淫片高清| 精品中文字幕在线| 91精品国产综合久久香蕉的用户体验| 亚洲欧美激情视频| 亚洲国产日韩一区| www.亚洲免费视频| 色综合天天狠天天透天天伊人| 中文在线资源观看视频网站免费不卡| 欧美性色xo影院| 九九久久精品一区| 亚洲欧洲免费视频| 国产亚洲欧洲黄色| 久久久久久这里只有精品| 欧美精品在线网站| 日本欧美一二三区| 久久久久久久国产精品视频| 欧美日韩在线观看视频小说| 欧美国产日韩中文字幕在线| 国产日韩在线精品av| 在线观看久久久久久| 美女久久久久久久| 中文字幕精品一区二区精品| 亚洲成av人片在线观看香蕉| 久久九九热免费视频| 91亚洲va在线va天堂va国| 国产精品第一区| 久久伊人91精品综合网站| 啪一啪鲁一鲁2019在线视频| 久久久亚洲欧洲日产国码aⅴ| 一区二区三区在线播放欧美| 欧美黑人一级爽快片淫片高清| 日本人成精品视频在线| 欧美激情高清视频| 精品免费在线观看| 欧美亚洲激情在线| 色爱精品视频一区| 久久在精品线影院精品国产| 日韩免费观看网站| 久久久久久国产精品三级玉女聊斋|