成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

EJB2.0教程 詳解EJB技術及實現原理

開發 后端
本文向您介紹了EJB是一個能夠遠程調用的javaBean.以及詳細介紹了EJB2.0教程

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的部署。例如:

 

  1. import javax.ejb.*;  
  2. import java.rmi.*;  
  3.  
  4. public interface AddCount extends EJBObject  
  5. {  
  6.         public int addCount(int a,int b) throws RemoteException;  

AddCountHome.java這個是繼承EJBHome的類.它里面包含的這個create()返回的是AddCount類型對象.

 

  1. import javax.ejb.*;  
  2. import java.rmi.*;  
  3.  
  4. public interface AddCountHome extends EJBHome  
  5. {  
  6.         public AddCount create() throws RemoteException,CreateException;  

 

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

 

  1. import javax.ejb.*;  
  2.  
  3. public class AddCountBean implements SessionBean  
  4. {  
  5.         public void ejbCreate()  
  6.         {  
  7.         }  
  8.         public void setSessionContext(SessionContext ctx)  
  9.                        throws EJBException,  
  10.                               java.rmi.RemoteException  
  11.         {  
  12.         }  
  13.         public void ejbRemove()  
  14.                throws EJBException,  
  15.                       java.rmi.RemoteException  
  16.         {  
  17.         }  
  18.  
  19.         public void ejbActivate()  
  20.                  throws EJBException,  
  21.                         java.rmi.RemoteException  
  22.         {  
  23.         }  
  24.         public void ejbPassivate()  
  25.                   throws EJBException,  
  26.                          java.rmi.RemoteException  
  27.         {  
  28.         }  
  29.         public int addCount(double a,double b)  
  30.         {  
  31.                 return a+b;  
  32.         }  

#p#

這個里面我們實現了業務的方法addCount(){a+b;}。同時需要指出一下它的其他方法(這些僅僅簡單指出后面的教程有詳細說明)。首先是ejbCreate()這個方法實際上是對我們的遠程接口的實現類的初始化.setSessionContext(SessionContext ctx)設置context.容器是在這個方法之后產生的實例.

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

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

 

 
  1. xml version="1.0" encoding="UTF-8"?> 
  2. Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> 
  3. <ejb-jar> 
  4.     <enterprise-beans> 
  5.         <session> 
  6.             <display-name>firstdisplay-name> 
  7.             <ejb-name>addejb-name> 
  8.             <home>AddCountHomehome> 
  9.             <remote>AddCountremote> 
  10.             <ejb-class>AddCountBeanejb-class> 
  11.             <session-type>Statelesssession-type> 
  12.             <transaction-type>Containertransaction-type>       
  13.         session> 
  14.     enterprise-beans> 
  15.     <assembly-descriptor> 
  16.         <container-transaction> 
  17.             <method> 
  18.                 <ejb-name>addejb-name> 
  19.                 <method-name>*method-name> 
  20.             method> 
  21.             <trans-attribute>Requiredtrans-attribute> 
  22.         container-transaction> 
  23.           
  24.     assembly-descriptor> 
  25. ejb-jar> 

 

下面這個是weblogic-ejb-jar.xml

  1. xml version="1.0" encoding="UTF-8"?> 
  2. <weblogic-ejb-jar> 
  3.     <weblogic-enterprise-bean> 
  4.         <ejb-name> 
  5.                 add    
  6.                 ejb-name> 
  7.           
  8.         <jndi-name>rainnightjndi-name> 
  9.     weblogic-enterprise-bean> 
  10. weblogic-ejb-jar> 

 

我們接下來寫測試類

 
  1. import java.util.*;  
  2. import java.naming.*;  
  3. import java.rim.*;  
  4. public class AddTest{  
  5.         public static void main(String bb[])throws Exception{  
  6.                 Hashtable hash = new Hashtable();  
  7.                 hash.put(Context.INITIAL_COUNTEXT_FACTORY,  
  8.                                 "weblogic.jndi.WLInitialContextFactory");  
  9.                 hash.put(Context.PROVIDER_URL,  
  10.                                 "t3://localhost:7001");  
  11.                 Object obj = context.lookup("rainnight");  
  12.                 AddCountHome home = (AddCountHome)PortableRemoteObject(obj,AddCountHome.class);  
  13.                 AddCount local = home.create();  
  14.                 System.out.println(local.add(1,1));  
  15.         }  

 

測試類的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類.

【編輯推薦】

  1. MyEclipse+Weblogic開發EJB組件
  2. Java中的EJB的介紹
  3. 精通EJB組件和EJB容器
  4. Java使用EJB容器的詳細概述
  5. 利用mod_jk整合Apache與JBoss
責任編輯:佚名 來源: IT技術
相關推薦

2009-06-11 16:53:09

什么是EJBEJB

2009-06-12 11:06:35

EJB技術

2009-06-25 16:35:12

EJB技術

2009-06-11 15:26:05

EJB組件EJB容器

2009-06-22 16:19:45

JavaBeansEJBPOJO

2009-06-26 14:54:18

Spring支持EJB

2009-06-11 16:01:17

EJB容器

2009-06-25 16:47:30

EJB技術

2011-06-03 13:15:01

JAVAEJB

2011-03-04 10:03:45

EJB數據庫應用

2009-06-26 16:01:39

EJB組織開發EJB容器EJB

2009-06-11 17:37:32

EJB注釋

2009-06-04 17:33:08

EJB 3.1EJB 3.0

2009-06-12 12:46:59

EJB3.0

2009-06-12 11:19:03

EJB技術商務預訂系統

2009-06-12 09:07:01

EJB入門

2009-06-12 09:15:04

EJB入門

2009-06-26 14:37:10

EJB和Spring

2009-06-26 15:58:28

EJB

2009-06-06 19:29:16

java EJB詳細概述
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品电影在线观看 | 伊久在线| 一级黄色片免费在线观看 | 精品av| 欧美一区二区黄 | 狠狠操电影 | 亚洲av毛片成人精品 | 国产精品久久久久久久久久免费看 | 国产免费又色又爽又黄在线观看 | 波霸ol一区二区 | 69电影网 | 能免费看的av| 黑人粗黑大躁护士 | 91看片| 成人精品一区二区 | 亚洲第一区久久 | 久久国产精品视频 | 精品久久电影 | 欧美 日韩精品 | www.成人免费视频 | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 在线观看av不卡 | 欧美日韩在线电影 | 久草免费电影 | 国产欧美日韩在线观看 | 国产精品a久久久久 | 爽爽免费视频 | 欧美性网| 91免费在线看 | 99精品在线 | 天堂在线中文 | 欧美日韩精品区 | 精品亚洲一区二区 | 色综合视频 | 亚洲精品成人 | 日韩一区二区在线观看 | 国产一区二区精 | 欧美区日韩区 | www.久久 | 日日欧美| 国产精品a免费一区久久电影 |