日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

详解EJB技术及实现原理

發布時間:2023/12/8 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详解EJB技术及实现原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

EJB是什么呢?
EJB是一個J2EE體系中的組件.再簡單的說它是一個能夠遠程調用的javaBean.它同普通的javaBean有兩點不同.
第一點,就是遠程調用.
第二點,就是事務的功能,我們在EJB中聲明的事務會通過容器幫助我們來處理.支持EJB的SERVER有以下幾個:
Weblogic
Webspere
Appserver
Jboss

我選用的是weblogic+JBuilder9開發.回過來我們繼續說這個EJB的原理.它是分布式的.這個的意思其實很簡單不需要想太復雜.就是我們把事情不是交給一個人去處理.而是把事情劃分一下交給多個人處理,而多個人處理之后我們讓這個分配的人來把最后得到的結合處理.

EJB我們首先要明確它是放在服務器端的組件.
一共有三種EJB
1,SessionBean 復雜處理業務邏輯的.
2,EntityBean? 處理數據
3,MessageBean 消息Bean異步,耦合的處理.

那么誰能調用EJB呢?也或者說EJB被誰調用呢?我們說它就是放在server的一個能夠遠程調用的javaBean.所以它可以被Java的語言調用servlet,jsp等都ok的說.而且它還可以被C++語言調用.很強大吧.EJB的最基本的出發點就是推動Java在服務器端的編程能力.所以呢它的功能就我個人來看太強悍了..= =

這個遠程調用是通過什么呢.Java是通過RMI-JRMP(java遠程方法調用)協議來調用.EJB就是通過這個來實現的.C++是通過Corba-iiop協議來調用的.這個協議支持兩端不同語言的調用.Corba是公共對象請求代理服務iiop是網絡內部對象協議.

下面我們來簡單說一下這個分布式的調用。客戶端發送一個請求給服務器首先是傳給stub代理類它發送參數給skeleton委托類然后這個類調用我們的實現類取得結果再遠路返回。這樣一個分布處理就結束了。后面會具體的結合代碼分析。先記住這個大致的結構就好。

我們寫一個EJB需要做那些工作呢?
1,寫一個接口繼承EJBObject??????? 這個類作為遠程接口
2,寫一個接口繼承EJBHome????????? 這個類里有一個方法是create()它返回接口類型。
3,寫一個Bean繼承SessionBean,??? 這個類里包含一個create()方法和一個業務方法。
4,寫一個ejb-jar.xml????????????? 這個xml是把上面的三個文件組合起來
5,寫一個weblogic-ejb-jar.xml???? 這個xml是連接查找source的作用

上面的兩個xml文件需要放在META-INF目錄下。而以上這些類都需要打包在一個jar文件中然后在server部署。這樣就完成了EJB的部署。例如:

  • import?javax.ejb.*; ?
  • import?java.rmi.*; ?
  • ?
  • public?interface?AddCount?extends?EJBObject ?
  • { ?
  • ????????public?int?addCount(int?a,int?b)?throws?RemoteException; ?
  • }
  • AddCountHome.java這個是繼承EJBHome的類.它里面包含的這個create()返回的是AddCount類型對象.

  • import?javax.ejb.*; ?
  • import?java.rmi.*; ?
  • ?
  • public?interface?AddCountHome?extends?EJBHome ?
  • { ?
  • ????????public?AddCount?create()?throws?RemoteException,CreateException; ?
  • }?
  • ?

    下面這個是我們的Bean.這個類繼承了SessionBean

  • import?javax.ejb.*; ?
  • ?
  • public?class?AddCountBean?implements?SessionBean ?
  • { ?
  • ????????public?void?ejbCreate() ?
  • ????????{ ?
  • ????????} ?
  • ????????public?void?setSessionContext(SessionContext?ctx) ?
  • ???????????????????????throws?EJBException, ?
  • ??????????????????????????????java.rmi.RemoteException ?
  • ????????{ ?
  • ????????} ?
  • ????????public?void?ejbRemove() ?
  • ???????????????throws?EJBException, ?
  • ??????????????????????java.rmi.RemoteException ?
  • ????????{ ?
  • ????????} ?
  • ?
  • ????????public?void?ejbActivate() ?
  • ?????????????????throws?EJBException, ?
  • ????????????????????????java.rmi.RemoteException ?
  • ????????{ ?
  • ????????} ?
  • ????????public?void?ejbPassivate() ?
  • ??????????????????throws?EJBException, ?
  • ?????????????????????????java.rmi.RemoteException ?
  • ????????{ ?
  • ????????} ?
  • ????????public?int?addCount(double?a,double?b) ?
  • ????????{ ?
  • ????????????????return?a+b; ?
  • ????????} ?
  • }?
  • 這個里面我們實現了業務的方法addCount(){a+b;}。同時需要指出一下它的其他方法(這些僅僅簡單指出后面的教程有詳細說明)。首先是ejbCreate()這個方法實際上是對我們的遠程接口的實現類的初始化.setSessionContext(SessionContext ctx)設置context.容器是在這個方法之后產生的實例.

    ejbRemove()毫無疑問是一個實例結束移除.ejbActivate()激活方法.它的作用是激活鈍化.ejbPassivate()鈍化方法.當實例的內容長時間不進行處理的時候就會鈍化.也就是閑置的意思.以上這幾個是SessionBean的基本方法.希望大家可以自己慢慢理解.之后也會反復說到這些的.

    下面我們寫xml文件
    首先是ejb-jar.xml

    ?

    ?
  • xml?version="1.0"?encoding="UTF-8"?>?
  • Enterprise?JavaBeans?2.0//EN"?"http://java.sun.com/dtd/ejb-jar_2_0.dtd">?
  • <ejb-jar>?
  • ????<enterprise-beans>?
  • ????????<session>?
  • ????????????<display-name>firstdisplay-name>?
  • ????????????<ejb-name>addejb-name>?

  • ????????????<home>AddCountHomehome>?
  • ????????????<remote>AddCountremote>?
  • ????????????<ejb-class>AddCountBeanejb-class>?

  • ????????????<session-type>Statelesssession-type>?
  • ????????????<transaction-type>Containertransaction-type>????? ?
  • ????????session>?
  • ????enterprise-beans>?
  • ????<assembly-descriptor>?
  • ????????<container-transaction>?
  • ????????????<method>?
  • ????????????????<ejb-name>addejb-name>?
  • ????????????????<method-name>*method-name>?
  • ????????????method>?
  • ????????????<trans-attribute>Requiredtrans-attribute>?
  • ????????container-transaction>?
  • ???????? ?
  • ????assembly-descriptor>?
  • ejb-jar>?
  • 下面這個是weblogic-ejb-jar.xml

  • xml?version="1.0"?encoding="UTF-8"?>?

  • <weblogic-ejb-jar>?
  • ????<weblogic-enterprise-bean>?
  • ????????<ejb-name>?
  • ????????????????add?? ?
  • ????????????????ejb-name>?
  • ???????? ?
  • ????????<jndi-name>rainnightjndi-name>?

  • ????weblogic-enterprise-bean>?
  • weblogic-ejb-jar>?
  • ?

    我們接下來寫測試類

    ?
  • import?java.util.*; ?
  • import?java.naming.*; ?
  • import?java.rim.*; ?
  • public?class?AddTest{ ?
  • ????????public?static?void?main(String?bb[])throws?Exception{ ?
  • ????????????????Hashtable?hash?=?new?Hashtable(); ?
  • ????????????????hash.put(Context.INITIAL_COUNTEXT_FACTORY, ?
  • ????????????????????????????????"weblogic.jndi.WLInitialContextFactory"); ?
  • ????????????????hash.put(Context.PROVIDER_URL, ?
  • ????????????????????????????????"t3://localhost:7001"); ?
  • ????????????????Object?obj?=?context.lookup("rainnight"); ?
  • ????????????????AddCountHome?home?=?(AddCountHome)PortableRemoteObject(obj,AddCountHome.class); ?
  • ????????????????AddCount?local?=?home.create(); ?
  • ????????????????System.out.println(local.add(1,1)); ?
  • ????????} ?
  • }?
  • ?

    測試類的hash是初始化我們的weblogic的xml信息.這里的t3://localhost:7001是weblogic的特殊協議指向的是ip位置.然后lookup("rainnight")查找jndi,而實際上也就是通過這個jndi找到我們的ejb組件.通過得到的對象我們對比一下是不是Home類型.然后我們執行home.create()產生AddCount的實例.最后調用方法就ok了.


    下面是如何執行這個的方法.
    第一步,jdk,weblogic.需要快些下載安裝啦..
    第二步,配置環境變量.基本的java的環境變量如何配置我就不說了.
    這里需要特別指出要把java目錄下的lib中的tools.jar加載到我們的class_path中.
    然后我們再把weblogic的目錄下的server目錄下的lib中的weblogic.jar找到也加載進來.
    這樣我們編譯需要的東西就ok了.
    第三步,編譯java類.
    第四步,打包.jar cvf AddCount.jar *.class META-INF/*.xml
    第五步,java weblogic.appc AddCount.jar
    第六步,部署到weblogic中.
    第七步,運行Test類.

    總結

    以上是生活随笔為你收集整理的详解EJB技术及实现原理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 精品一二三四区 | 女儿的朋友5中汉字晋通话 欧美成人免费高清视频 | 久久精品无码毛片 | 国产日产欧美一区二区 | 亚洲欧美日韩天堂 | 欧美精品在线免费 | 欧美一区二区三区在线观看 | 无码人妻丰满熟妇区毛片18 | 五月天婷婷色综合 | ass东方小嫩模pics | 97在线免费公开视频 | 四虎永久在线精品免费网址 | 污网站在线观看免费 | 91禁在线看| 亚洲AV乱码国产精品观看麻豆 | 被警察猛c猛男男男 | 亚洲色成人一区二区三区小说 | 国产精品91视频 | 国语精品 | 日本免费三级网站 | 国产视频一区二区三区在线播放 | 中文字幕欧美一区 | 免费亚洲一区 | 久久网亚洲 | 欧美日韩国产高清 | 欧美日一本 | 久草新 | 性xxx18 | 国产免费专区 | 中文字幕+乱码+中文乱 | 日本道在线观看 | 人妻少妇一区二区三区 | 波多野结衣在线播放 | 中文字幕av高清片 | 亚洲AV成人无码一二三区在线 | 女女同性高清片免费看 | 无码少妇精品一区二区免费动态 | 久久久99精品国产一区二区三区 | 天天躁日日躁bbbbb | 毛片网站视频 | 欧美性猛片aaaaaaa做受 | 五月天婷婷在线播放 | 国产精品vip | 欧美激情不卡 | 男女午夜视频在线观看 | 国产午夜精品理论片 | 少妇一级淫免费放 | 理论视频在线观看 | 日本午夜一区二区三区 | 91欧美日韩麻豆精品 | www.天堂av | 色老板精品凹凸在线视频观看 | 看av网| 成人免费精品视频 | 日b影院| 国产资源第一页 | 欧洲美女与动交ccoo | www.黄在线| 97精品在线| 国产精品一区在线播放 | 欧美精品videos极品 | 99视频在线精品 | 中国女人和老外的毛片 | 三级中文字幕在线 | 国产午夜精品一区二区理论影院 | 中文字字幕第183页 欧美特级一级片 | 丁香啪啪综合成人亚洲 | 日韩综合精品 | 亚洲人av在线 | 免费中文av| 国产av无码专区亚洲av麻豆 | 91微拍| 国产91在线亚洲 | 91青青视频| 中文字幕激情视频 | 日本在线免费观看 | 国产乱淫片视频 | 亚洲狼人综合 | 欧美成人一区二区三区高清 | 制服丝袜先锋影音 | 国产真实乱人偷精品视频 | 国产成a人亚洲精v品无码 | 农村妇女av | 操操操操操操 | 26uuu国产精品视频 | 色婷婷久久综合中文久久蜜桃av | 成人在线不卡视频 | 在线一区二区三区四区 | 免费大片av | 午夜啊啊啊 | 欧美日韩在线免费 | 好姑娘在线观看高清完整版电影 | 国产精品男同 | 一级特黄aa大片免费播放 | 狠狠躁夜夜躁人人爽视频 | 国产精品99久久久久久大便 | 99精品在线免费观看 | 色哟哟免费视频 | 欧美一区二区三区久久成人精品 |