<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    甘先生Blog

    生活就像一盒巧克力,你永遠不知道你會得到什么

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      59 Posts :: 29 Stories :: 186 Comments :: 0 Trackbacks
    前言

      本文是為想在JBOSS環境下進行EJB開發的讀者而寫的,在閱讀本文之前,你最好對EJB有一個基本了解。

      JBOSS是一個開放源碼的免費EJB服務器,它實現了其它J2EE所規定的大多數功能,現在sun公司已經把JBOSS作為J2EE1.4的標準實現服務器了,本文就帶領大家從Jboss3.2.6的安裝開始,一直到開發出一個完整的”hello,world”的ejb為止。

      JBOSS的安裝與啟動

      如果你是第一次使用JBOSS,你一定會感到很沮喪,因為它雖然是開放源碼,并可以免費下載,但是它的文檔或技術培訓卻是收費的,而且對于國人來說高不可及(幾天的培訓大約要10000美元,文檔也要幾十至幾百美一份)!如果你試圖在網上找一些關于JBOSS下簡單入門的文章,可只是那么寥寥可數的幾篇,而且很少有菜鳥級的文章。相反,對其核心設計等高深理論性的文章倒是居多,這樣反倒讓你越看越糊涂。因此,本文的目的就是:讓你的JBOSS盡快地跑起來,并馬上可以在其之上開發出簡單的EJB!

      在安裝JBOSS之前,首先要確定你已經安裝了jdk1.3或以上版本,由于JBOSS不像weblogic等其它應用服務器捆綁了JDK,因此JBOSS非要jdk的支持才能運行。然后在 http://www.jboss.org網站上下載一個jboss的發行版(我下載的是jboss-3.2.6.zip),在本文中我使用的其穩定的發行版JBOSS3.2.6 (集成了tomcat4.1),需要附帶一句的是tomcat是apache基金會旗下著名的開源jsp/servlet服務器,如果要更多的了解tomcat,請訪問http://jakarta.apache.org 以獲得更詳細的信息。

      當你把jboss-3.2.6.zip下載之后,下一步就是將它解壓縮,如果你是在windows上,可以用winzip或winrar;如果是在linux下,就用unzip命令,以我自己為例,假設我將它解壓到了如下目錄

    c:\ jboss-3.2.6

      相對于weblogic,websphere等j2ee服務器來說,JBOSS的啟動是簡單得出乎意料,如果你是windows用戶,只需要進入c:\ jboss-3.2.6\bin下面,輸入run.bat命令,JBOSS就跑起來啦;如果是linux用戶的話,只需要進入c:\ jboss-3.2.6\bin下面,輸入run.sh,那么JBOSS也同樣運行。怎么樣?是挺簡單的吧?
    當你輸入run.bat或run.sh后,你會發現屏幕上會不斷地滾動一些提示信息,過大約1分鐘之后(依賴于你機器的配置,我的是P4 1.7G,128M),提示信息就會停止滾動。(注意:如果你是在windows下,那么請讓這個DOS窗口一直保持這種狀態,千萬不可將其中止!)等到它自己停止。
    這樣,JBOSS就已經處于運行狀態了。和其它J2EE服務器一樣,JBOSS也提供了一個WEB方式控制臺,使用方法是在IE瀏覽器中輸入http://127.0.0.1:8080/web-console/,看見歡迎界面,就成功了。
    編寫第一個EJB:”hello,world”

      下面我們正式開始EJB編程。在編寫我們的第一個EJB之前,你應該對EJB有一個大致的了解,如果沒有的話,建議你先到網上找一些這方面的文章來看,否則你將無法理解下面要講述的內容。

      遠程接口

      遠程接口是指對于客戶端而言所能看到了調用接口

    //HelloWorld.java
    package?sample;
    /*這是一個遠程接口,客戶端調用這個接口來使真正的ejb工作*/
    public?interface?HelloWorld?extends?javax.ejb.EJBObject
    {
     
    public?String?hello()?throws?java.rmi.RemoteException;
    }
    ?

      Home接口

      我們可以把Home接口看做是一個制造EJB的工廠,Home接口告訴EJB容器:“嗨,我的客戶要我生成一個EJB,現在我把這個任務交給你啦!”

    //HelloWorldHome.java
    package?sample;
    /*Home接口告訴EJB容器怎樣生成或銷毀EJB的實例*/
    public?interface?HelloWorldHome?extends?javax.ejb.EJBHome
    {
     HelloWorld?create()?
    throws?java.rmi.RemoteException,javax.ejb.CreateException;
    }
    ?

      EJB的實現

      這里才是真正的EJB的實現

    //HelloWorldBean.java
    package?sample;
    import?javax.ejb.SessionContext;
    /*這個類具體實現的遠程接口HelloWorld*/
    pubic?
    class?HelloWorldBean?implements?javax.ejb.SessionBean
    {
     
    private?SessionContext?ctx;
     
    public?void?setSessionContext(SessionContext?ctx)
     
    {
      
    this.ctx?=?ctx;
     }

     pubic?
    void?ejbRemove()
     
    {
      System.out.println(“ejbRemove()”);
     }

     
    public?void?ejbActivate()
     
    {
      System.out.println(“ejbActivate()”);
     }

     
    public?void?ejbPassivate()
     
    {
      System.out.println(“ejbPassivate()”);
     }

     
    /*hello方法是實際的業務邏輯,它可以在客戶端顯示“hello,world”這個字符串*/
     
    public?String?hello()
     
    {
      System.out.println(“hello()”);
      
    return?“hello,world”;
     }

    }
    ?

      好了,這個會話EJB的全部代碼編寫完畢,下一步我們要做的是編寫它的部署文件:

      ejb-jar.xml
    <?xml?version="1.0"?encoding="UTF-8"?>
    <ejb-jar>
     
    <description>JBoss?Hello?World?Application</description>
     
    <display-name>Hello?World?EJB</display-name>
     
    <enterprise-beans>
     
    <session>
      
    <ejb-name>Hello</ejb-name>
      
    <home>sample.HelloHome</home>
      
    <remote>sample.Hello</remote>
      
    <ejb-class>sample.HelloBean</ejb-class>
      
    <session-type>Stateless</session-type>
      
    <transaction-type>Bean</transaction-type>
     
    </session>
    </enterprise-beans>
    </ejb-jar>?

    這樣我們就完成了一個簡單的會話EJB的編寫,但其實JBOSS還提供了一個額外的配置文件:JBoss.xml,利用它可以對JBOSS服務器進行更多的定制,但由于本例實在是太簡單了,因此我們可以將它省略不寫。

      雖然我們完成了這個會話EJB的編寫,但還有最后的一步工作要做:打包。首先我們進入當前項目的根目錄:

    cd F:\project\jboss-tutorial

      然后執行jar命令將所有的類及ejb-jar.xml打包:

    jar cf HelloWorld.jar sample META-INF

      這時你會發現,在當前目錄下多了一個名為HelloWorld.jar的文件,這就是我們的最終成品。

      部署我們的EJB

      部署EJB在JBOSS中是一件非常容易的事,你只需簡單將HelloWorld.jar拷貝到c:\ jboss-3.2.6\server\default\deploy目錄下就可以了。

     這時,你可以切換到JBOSS運行的那個DOS窗口下,你會發現屏幕上會新出現如下提示信息:

    15:09:21,184 INFO [MainDeployer] Starting deployment of
    package: file:/F:/jboss
    -3.2.3/server/default/deploy/HelloWorld.jar
    15:09:21,324 INFO [EjbModule] Creating
    15:09:21,354 INFO [EjbModule] Deploying HelloWorld
    15:09:21,464 INFO [EjbModule] Created
    15:09:21,484 INFO [EjbModule] Starting
    15:09:21,555 INFO [EjbModule] Started
    15:09:21,555 INFO [MainDeployer] Successfully completed
    deployment of package: file:/F:/jboss-3.2.6/server/default/deploy/HelloWorld.jar

      客戶端代碼

      如果沒有客戶端代碼的話,那么EJB對我們來說幾乎毫無用處。以下我們將編寫客戶端代碼來調用這個HelloWorld。

      如果你在同一臺機器上運行客戶端代碼和JBOSS服務器的話,那以下代碼無須任何修改就可以運行,但你的客戶端在另一臺機器上運行的話,那你要將源碼中的相應行改變一下:

    /*以下是客戶端源碼中需要修改的行*/
    env.put(Context.PROVIDER_URL, "localhost:1099");

      假設EJB部署在一臺IP地址為192.168.0.1的機器上,那么就應該將以上源碼改為如下:

    /*以下是客戶端源碼中修改后的行*/
    env.put(Context.PROVIDER_URL, "192.168.0.1:1099");

    /*HelloWorldClient.java*/
    package?sample;
    import?javax.naming.Context;
    import?javax.naming.InitialContext;
    import?java.util.Hashtable;
    public?class?HelloWorldClient
    {
     
    public?static?void?main(?String?[]?args?)
     
    {
      Hashtable?env?
    =?new?Hashtable();
      env.put(Context.INITIAL_CONTEXT_FACTORY,
    "org.jnp.interfaces.NamingContextFactory");
      env.put(Context.PROVIDER_URL,?
    "localhost:1099");
      env.put(
    "java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
      
    try
      
    {
       Context?ctx?
    =?new?InitialContext(env);
       Object?obj?
    =?ctx.lookup(?"HelloWorld"?);
       HelloWorldHome?home?
    =(HelloWorldHome)javax.rmi.PortableRemoteObject.narrow(
    obj,?HelloWorldHome.
    class?);
       HelloWorld?helloWorld?
    =?home.create();
       System.out.println(?helloWorld.hello());
       helloWorld.remove();
      }

      
    catch?(?Exception?e?)
      
    {
       e.printStackTrace();
       System.out.println(?
    "Exception:?"?+?e.getMessage()?);
      }

     }

    }
    ?
     好了,下面我就就可以編譯并運行這個客戶端了,如果你在編譯的時候JVM報告找不到某些類的話,則可能是你沒有將j2ee.jar這個包放在CLASSPATH這個路徑變量中。客戶端的執行結果雖然只是簡單的在屏幕上打印一行“hello,world”,但它是來自于另一個世界
    ——JBOSS的聲音!

    實例代碼下載
    posted on 2006-04-10 17:38 甘先生 閱讀(2305) 評論(4)  編輯  收藏 所屬分類: JavaJavaEE
    主站蜘蛛池模板: 日韩亚洲人成在线综合| 四虎影库久免费视频| 国产亚洲日韩在线三区| 久久久久亚洲国产AV麻豆| 好大好深好猛好爽视频免费| 亚洲国产精品久久久久秋霞影院| 成在人线av无码免费高潮喷水 | 亚洲精品午夜无码专区| 无遮挡a级毛片免费看| 无码不卡亚洲成?人片| 人人公开免费超级碰碰碰视频| 国产成人高清精品免费软件| 中文字幕乱码亚洲无线三区 | 一级毛片免费观看不卡的| 亚洲色自偷自拍另类小说| 你好老叔电影观看免费| 亚洲成色999久久网站| 69影院毛片免费观看视频在线| 亚洲精品动漫在线| 无码人妻一区二区三区免费手机| 亚洲国产中文v高清在线观看| 大片免费观看92在线视频线视频 | 337p欧洲亚洲大胆艺术| 国产又大又粗又长免费视频| 国产亚洲精品bv在线观看| 国产乱子影视频上线免费观看| 视频免费1区二区三区| 亚洲欧洲无码AV电影在线观看 | 久久不见久久见免费影院| 亚洲真人无码永久在线观看| 亚洲JIZZJIZZ中国少妇中文| 91福利免费网站在线观看| 亚洲欧洲尹人香蕉综合| 国产成人在线观看免费网站| 99re6在线精品免费观看| 在线电影你懂的亚洲| 国产黄色片在线免费观看| a毛片久久免费观看| 亚洲人成在线中文字幕| 亚洲国产精品无码久久九九 | 好紧我太爽了视频免费国产|