乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      EJB

       昵稱22369024 2015-05-02
      初識EJB

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

      我選用的是weblogic+JBuilder9開發(fā).

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

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

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

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

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

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

      上面的兩個xml文件需要放在META-INF目錄下。
      而以上這些類都需要打包在一個jar文件中然后在server部署。
      這樣就完成了EJB的部署
      例如:
      我們寫個簡單的計算吧。
      (先聲明下吧本教程的說明都是我自己的理解,
      也許并不是一些文檔上的描述那么正規(guī)但是很方便理解的。
      如果有實在無法茍同的地方大家多多包含。這是為了便于理解的講解)
      AddCount.java這個就是我們繼承EJBObject的類.

      import javax.ejb.*;
      import java.rmi.*;

      public interface AddCount extends EJBObject
      {
              public int addCount(int a,int b) throws RemoteException;
      }
      接口的作用.在這里強調(diào)一下吧.所有實現(xiàn)這個接口的類都會是這個接口的類型.
      同時都包含接口的方法的實現(xiàn).
      這個接口中的方法也就是在以后會實現(xiàn)的方法.我們這里要做的是一個加法的運算.


      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;
              }
      }
      這個里面我們實現(xiàn)了業(yè)務(wù)的方法addCount(){a+b;}
      同時需要指出一下它的其他方法(這些僅僅簡單指出后面的教程有詳細說明)
      首先是ejbCreate()這個方法實際上是對我們的遠程接口的實現(xiàn)類的初始化.
      setSessionContext(SessionContext ctx)設(shè)置context.容器是在這個方法之后產(chǎn)生的實例.
      ejbRemove()毫無疑問是一個實例結(jié)束移除.
      ejbActivate()激活方法.它的作用是激活鈍化.
      ejbPassivate()鈍化方法.當實例的內(nèi)容長時間不進行處理的時候就會鈍化.也就是閑置的意思.
      以上這幾個是SessionBean的基本方法.希望大家可以自己慢慢理解.
      之后也會反復(fù)說到這些的.




      下面我們寫xml文件
      首先是ejb-jar.xml
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java./dtd/ejb-jar_2_0.dtd">
      <ejb-jar>
          <enterprise-beans>
              <session>
                  <display-name>first</display-name>
                  <ejb-name>add</ejb-name>

                  <home>AddCountHome</home>
                  <remote>AddCount</remote>
                  <ejb-class>AddCountBean</ejb-class>

                  <session-type>Stateless</session-type>
                  <transaction-type>Container</transaction-type>     
              </session>
          </enterprise-beans>
          <assembly-descriptor>
              <container-transaction>
                  <method>
                      <ejb-name>add</ejb-name>
                      <method-name>*</method-name>
                  </method>
                  <trans-attribute>Required</trans-attribute>
              </container-transaction>
              
          </assembly-descriptor>
      </ejb-jar>

      下面這個是weblogic-ejb-jar.xml
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN' 'http://www./servers/wls810/dtd/weblogic-ejb-jar.dtd'>
      <weblogic-ejb-jar>
          <weblogic-enterprise-bean>
              <ejb-name>
                      add  
                      </ejb-name>
              
              <jndi-name>rainnight</jndi-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的特殊協(xié)議指向的是ip位置.
      然后lookup("rainnight")查找jndi,而實際上也就是通過這個jndi找到我們的ejb組件.
      通過得到的對象我們對比一下是不是Home類型.
      然后我們執(zhí)行home.create()產(chǎn)生AddCount的實例
      最后調(diào)用方法就ok了.


      下面是如何執(zhí)行這個的方法.
      第一步,jdk,weblogic.需要快些下載安裝啦..
      第二步,配置環(huán)境變量.基本的java的環(huán)境變量如何配置我就不說了.
             這里需要特別指出要把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類

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多