大鳥的學習樂園
          路漫漫其修遠兮,吾將上下而求索
          posts - 26,comments - 27,trackbacks - 0

           

          剛剛開始學習JBoss,學習了一個入門級的小例子,對于剛接觸JBoss和Eclipse的菜鳥來說很有幫助的,現在把我的試驗過程介紹一下。
          首先,打開Eclipse,新建——其它——JBoss IDE——J2EE Projects——J2EE 1.4 Projects
          下一步
          填入項目名稱:HelloWorld
          項目內容可以選擇使用缺省值或者自己制定存儲空間
          下一步
          在源選單下,添加文件夾,分別命名為j2src(存放java文件)和src(存放部署文件),缺省輸出文件夾改為:HelloWorld/bin
          完成

          在包資源管理器中,右鍵單擊j2src,選擇新建——包,輸入包名:sample.server。

          右鍵單擊sample.server,選擇新建——接口,輸入接口名字:HelloWorld,此為遠程接口,是指對于客戶端而言所能看到的調用接口,該接口內容為:

          /**
           *HelloWorld.java
           */
          package sample.server;

          import javax.ejb.EJBObject;

          /**
           * @author Administrator
           *
           * TODO 要更改此生成的類型注釋的模板,請轉至
           * 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
           */
          public interface HelloWorld extends EJBObject {
           public String hello() throws java.rmi.RemoteException;
          }

          同樣的,新建Home接口HelloWorldHome,我們可以把Home接口看做是一個制造EJB的工廠,它告訴EJB容器:“我的客戶要我生成一個EJB,現在我把這個任務交給你啦!”
          /**
           * HelloWorldHome.java
           */
          package sample.server;
          import javax.ejb.EJBHome;
          /**
           * @author Administrator
           *
           * TODO 要更改此生成的類型注釋的模板,請轉至
           * 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
           */
          public interface HelloWorldHome extends EJBHome {
           HelloWorld create() throws java.rmi.RemoteException,
             javax.ejb.CreateException;
          }
          下面就是EJB的實現,右鍵單擊sample.server,新建——其它——JBoss IDE——EJB Components——Session Bean,輸入名稱:HelloWorldBean,類型為Stateless,Remote,選擇創建來自超類的構造函數,繼承的抽象方法,ejbCreate() method。完成。

          /**
           * HelloWorldBean.java
           */

          package sample.server;

          import java.rmi.RemoteException;

          import javax.ejb.EJBException;
          import javax.ejb.SessionBean;
          import javax.ejb.SessionContext;

          import javax.ejb.CreateException;

          /**
           * @ejb.bean name="HelloWorld"
           *           display-name="Name for HelloWorld"
           *           description="Description for HelloWorld"
           *           jndi-name="ejb/HelloWorld"
           *           type="Stateless"
           *           view-type="remote"
           */
          public class HelloWorldBean implements SessionBean {

           /**
            *
            */
           public HelloWorldBean() {
            super();
            // TODO 自動生成構造函數存根
           }

           /* (非 Javadoc)
            * @see javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext)
            */
           public void setSessionContext(SessionContext ctx)
            throws EJBException,
            RemoteException {
            // TODO 自動生成方法存根

           }

           /* (非 Javadoc)
            * @see javax.ejb.SessionBean#ejbRemove()
            */
           public void ejbRemove() throws EJBException, RemoteException {
            // TODO 自動生成方法存根

           }

           /* (非 Javadoc)
            * @see javax.ejb.SessionBean#ejbActivate()
            */
           public void ejbActivate() throws EJBException, RemoteException {
            // TODO 自動生成方法存根

           }

           /* (非 Javadoc)
            * @see javax.ejb.SessionBean#ejbPassivate()
            */
           public void ejbPassivate() throws EJBException, RemoteException {
            // TODO 自動生成方法存根

           }

           /**
            * Default create method
            *
            * @throws CreateException
            * @ejb.create-method
            */
           public void ejbCreate() throws CreateException {
            // TODO Auto-generated method stub
           }
           public String hello()
           {
            System.out.println("hello()");
            return "Hello,world";
           }
          }
          服務器端程序編好,下一步就要做部署工作了。

          右鍵選擇src,新建目錄META-INF,在該目錄下,新建——其它——JBoss-IDE——Descriptors——EJB 2.1 Deployment Descriptor,默認名字為ejb-jar.xml,完成。
          ejb-jar.xml:

          《?xml version="1.0" encoding="UTF-8"?》
          《ejb-jar version="2.1"
           xmlns="  xmlns:xsi="  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
            《ejb-jar》
          《enterprise-beans》
            《session》
             《ejb-name》HelloWorldBean《/ejb-name》
             《home》sample.server.HelloWorldHome《/home》
             《remote》sample.server.HelloWorld《/remote》
             《ejb-class》sample.server.HelloWorldBean《/ejb-class》
             《session-type》Stateful《/session-type》
             《transaction-type》Bean《/transaction-type》
            《/session》
           《/enterprise-beans》
          《/ejb-jar》

          (備注:在此,由于網頁顯示的原因,將<>符號改成了《》,所以,在實際應用中應改為<>,以正常工作。同時,ejb-jar.xml開頭的版本標記文字會因jboss版本不同而不同,希望大家注意)

          這樣我們就完成了一個簡單的會話EJB的編寫,下一步是打包。
          同時選擇j2src和src兩個目錄,右鍵單擊選擇導出——jar——選擇導出目標,可以放在定義的HelloWorld目錄下,起個名字叫HelloWorld.jar,則會在包資源管理器中看到一個文件HelloWorld.jar。

          光有EJB,沒有客戶端,對我們來說毫無用處,所以下一步我們就要編寫客戶端程序。
          同樣的,在j2src下創建包sample.client。
          在該包下新建類,類名為HelloWorldClient,添加接口:sample.server.HelloWorld,
          /**
           * HelloWorldClient.java
           */

          sample.server.HelloWorldHome。

          package sample.client;

          import java.util.Hashtable;

          import javax.naming.Context;
          import javax.naming.InitialContext;

          import sample.server.HelloWorld;
          import sample.server.HelloWorldHome;

          /**
           * @author Administrator
           *
           * TODO 要更改此生成的類型注釋的模板,請轉至
           * 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
           */
          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");
          /**
           * 默認是把服務器端EJB部署在本機上,如果部署在其它機器上,比如192.168.0.1,則將localhost  * 改為192.168.0.1即可
           */
            env.put("Java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
            try{
             Context ctx = new InitialContext(env);
             Object obj = ctx.lookup("HelloWorldBean");
             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());
            }   
           }
          }

          下面就可以編譯運行了。
          手動啟動JBoss,直接運行JBoss\bin\目錄下的run.bat即可,這個過程時間長短跟計算機的配置有關,配置高的計算機幾秒鐘就可以了,比較傳統的計算機則需要等上1分多鐘甚至更長,不過你不需要專門等著它的運行,你雙擊run.bat后,不用管它,你可以先做一些其他的事情,比如給mm發條短信啊什么的,等你發完短信后,你會發現JBoss已經運行成功,并會告訴你啟動JBoss花了多長時間:Started in 1m:36s:870ms,呵呵,我的機器比較傳統哈。
          選擇包資源管理器中的HelloWorld.jar,右鍵單擊選擇Deployment——Deploy to,
          選擇jboss 4.0(default)[file:/D:/jboss4/server/default/deploy/]
          則系統會自動把HelloWorld.jar文件拷貝到jboss的/server/default/deploy/目錄下,jboss的運行窗口將出現
          10:09:50,679 INFO  [EjbModule] Deploying HelloWorldBean
          10:09:52,051 INFO  [org.jboss.ejb.EJBDeployer] Deployed: file:/D:/jboss4/server/default/deploy/HelloWorld.jar
          服務器端運行成功
          右鍵選擇HelloWorldClient.java,選擇運行——運行,在左邊選擇java應用程序下的HelloWorldClient,右邊選擇類路徑,在引導程序條目下添加外部JAR,分別jboss的client目錄下的jboss-j2ee.jar、log4j.jar、jboss-client.jar。然后單擊運行,就會看到底下控制臺上顯示的“Hello,World”,哈哈,成功了,這可跟一般的“HelloWorld”不太一樣哦。

          主站蜘蛛池模板: 汝阳县| 田东县| 洪江市| 临城县| 库伦旗| 教育| 白沙| 马边| 长乐市| 彩票| 上虞市| 蓬安县| 云霄县| 达日县| 合阳县| 鸡泽县| 商都县| 和田县| 景泰县| 安泽县| 永清县| 洪洞县| 积石山| 贡嘎县| 三亚市| 平顶山市| 湄潭县| 冕宁县| 仙居县| 武山县| 台州市| 琼结县| 博野县| 仁寿县| 兴海县| 扎兰屯市| 烟台市| 蒙自县| 偏关县| 临安市| 婺源县|