隨筆-11  評論-10  文章-8  trackbacks-0

          個(gè)人心得

          這段時(shí)間一直在修改ECperf,主要心得都是EJB應(yīng)用方面的,對EJB部署的復(fù)雜和調(diào)試的痛苦深有感觸,其中主要原因可能是我對EJB不太熟悉,沒有用EJB開發(fā)應(yīng)用的經(jīng)驗(yàn),以下的幾點(diǎn)心得在熟手看來可能是理所當(dāng)然的,但卻折磨我了好久。

          1.              EJB部署

          部署應(yīng)用實(shí)際上就是將應(yīng)用安裝到應(yīng)用服務(wù)器上,按書上部署Hell Word時(shí)沒有遇到絲毫困難,但在部署ECperf時(shí)卻冒出了一堆問題。其中困擾我最久的就是EJB互相引用的問題,實(shí)際上只需要將所有的引用關(guān)系和JNDI名寫入sun-ejb-jar.xml就可以了(借助sun的部署工具很容易實(shí)現(xiàn),不同的應(yīng)用服務(wù)器會(huì)有不同的文件名如,格式可能也會(huì)不同)。在ejb-jar.xml中,每個(gè)EJB必須申明自己引用的EJB的類型,home接口,remote接口,和ejb的引用名,引用名不需要與JNDI名相同,在sun-ejb-jar.xml要申明ejb引用名對應(yīng)的JNDI名。DataSource也需要如此設(shè)置,對于env-entry好像不需要在sun-ejb-jar.xml中申明。由此可以看出應(yīng)用服務(wù)器對EJB所能訪問的資源做了嚴(yán)格的控制,而ejb不是直接引用JNDI名,也為ejb應(yīng)用提供了一定的靈活性。

          2.              EJB調(diào)用

          在同一容器調(diào)用EJB和遠(yuǎn)程調(diào)用EJB有很大不同。同一容器中調(diào)用者與被調(diào)用者有相同的Context,因此不需要額外設(shè)置,而在遠(yuǎn)程調(diào)用需要指定java.naming.factory.initialjava.naming.provider.url,另外還要部署時(shí)產(chǎn)生的client jar

          在調(diào)用PortableRemoteObject.narrow()得到home接口時(shí)拋出java.lang.ClassCastException

          一般將client jar 放到 classpath中就可以解決,這里主要用到的是remote接口和home接口的stub。如果不將client jar 放到classpath中也可以得到home的接口,但由于使用了不同的classload,在用PortableRemoteObject.narrow()進(jìn)行轉(zhuǎn)型被視為不同的類而轉(zhuǎn)型失敗,我在用sun的部署工具得到的 client jar中竟然沒有stub(可能是部署文件的問題),所以遠(yuǎn)程調(diào)用始終不成功。

          3.              下一步學(xué)習(xí)的方向

          繼續(xù)研究遠(yuǎn)程對象是如何返回的

          Classload 是如何工作的

          JDBC中關(guān)于分布式事務(wù)的處理方式

          容器處理事務(wù)的規(guī)則

          posted on 2005-08-23 23:04 JBahamut 閱讀(1719) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 丁青县| 海宁市| 黄大仙区| 纳雍县| 宝鸡市| 神池县| 理塘县| 南华县| 余姚市| 天全县| 循化| 荔波县| 永登县| 容城县| 太谷县| 龙江县| 抚宁县| 四子王旗| 铁岭市| 徐州市| 阳原县| 波密县| 林周县| 黑河市| 宁晋县| 江川县| 阿克陶县| 巴塘县| 惠安县| 澄城县| 原平市| 揭西县| 庄河市| 珠海市| 邢台市| 集安市| 安阳县| 西充县| 上思县| 迁安市| 长泰县|