世事如棋
          Aspire to Professionalism
          posts - 4,  comments - 12,  trackbacks - 0
          很久之前寫給一個朋友看的,在JR發過,試發下,測試下這個blog

          開發及調試環境為 JBOSS4.0+ECLIPSE3.1,軟件下載配置安裝我就不多說了,相信大家都會很輕易搞定。

          開發流程,寫一個簡單的stateful?session?bean,進行遠程調用,計算出某一特定正整數的Fibonacci值。

          所創建的project下引入jbossall-client.jar,在JBOSS_HOME/client目錄下
          分別用eclipse寫出EJB遠程調用的home接口,remote接口和相對應的Bean
          ———1.?home接口———
          package?com.terry.ejbsample;

          import?java.rmi.RemoteException;
          import?javax.ejb.CreateException;
          import?javax.ejb.EJBHome;

          /**
          ?*?@author?terry
          ?*
          ?*/
          public?interface?FibonacciHome?extends?EJBHome
          {
          ????Fibonacci?create()?throws?RemoteException,?CreateException;

          }
          ———2.?remote?接口———
          package?com.terry.ejbsample;

          import?java.rmi.RemoteException;
          import?javax.ejb.EJBObject;
          /**
          ?*?@author?terry
          ?*
          ?*/
          public?interface?Fibonacci?extends?EJBObject
          {
          ????public?long?getFibonacci(int?n)?throws?RemoteException;
          }
          ———3.?FibonacciBean———
          package?com.terry.ejbsample;

          import?javax.ejb.CreateException;
          import?javax.ejb.SessionBean;
          import?javax.ejb.SessionContext;
          /**
          ?*?@author?terry
          ?*
          ?*/
          public?class?FibonacciBean?implements?SessionBean
          {
          ????public?long?getFibonacci(int?n)
          ????{
          ????????if?(n==0)?return?1;
          ????????else?if?(n==1)?return?1;
          ????????else
          ????????????return?getFibonacci(n?-?1)?+?getFibonacci(n?-?2);
          ????}
          ????public?void?ejbCreate()?throws?CreateException
          {
          System.out.println(“Bean?created”);
          }
          ????public?void?ejbRemove(){}????
          ????public?void?ejbActivate(){}????
          ????public?void?ejbPassivate(){}
          ????public?void?setSessionContext(SessionContext?ctx){}
          }

          配置相對應的ejb-jar.xml和jboss.xml文件
          ———1.?ejb-jar.xml———
          <?xml?version="1.0"?>

          <ejb-jar?xmlns="http://java.sun.com/xml/ns/j2ee"
          ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          ????xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
          ?????????????????????????http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
          ????version="2.1">
          ????<enterprise-beans>
          ????????<session>
          ????????????<ejb-name>Fibonacci</ejb-name>
          ????????????<home>com.terry.ejbsample.FibonacciHome</home>
          ????????????<remote>com.terry.ejbsample.Fibonacci</remote>
          ????????????<ejb-class>com.terry.ejbsample.FibonacciBean</ejb-class>
          ????????????<session-type>Stateful</session-type>
          ????????????<transaction-type>Container</transaction-type>
          ????????</session>
          ????</enterprise-beans>
          </ejb-jar>
          ———2.?jboss.xml———
          <?xml?version="1.0"?>

          <jboss>
          ????<enterprise-beans>
          ????????<session>
          ????????????<ejb-name>Fibonacci</ejb-name>
          ????????????<jndi-name>FibonacciHome</jndi-name>
          ????????</session>
          ????</enterprise-beans>
          </jboss>
          在Eclipse中配置所需package的jar包,將class文件以及xml描述文件分別添加進去,注意正確的前綴,xml文件必須在根目錄下的META-INF文件夾中。或者你可以在console窗口使用jar命令進行打包(如?jar?cf?ff.jar?*)

          將剛剛打包的ff.jar放入JBOSS_HOME/server/default/deploy,啟動jboss的默認服務器,如果一切順利的話,你會在console窗口中看到你剛剛所寫的FibonacciBean已經被成功部署到jboss中了。

          寫一個簡單的測試程序
          ———FibonacciClient.java———
          package?com.terry.ejbsample;
          import?javax.naming.Context;
          import?javax.naming.InitialContext;
          import?javax.rmi.PortableRemoteObject;
          /**
          ?*?@author?terry
          ?*?
          ?*/
          public?class?FibonacciClient
          {
          ????public?static?void?main(String[]?args)
          ????{
          ????????try
          ????????{
          ????????????java.util.Properties?p?=?new?java.util.Properties();
          ????????????p.put(Context.INITIAL_CONTEXT_FACTORY,
          ????????????????????"org.jnp.interfaces.NamingContextFactory");
          ????????????p.put(Context.URL_PKG_PREFIXES,?"jboss.naming:org.jnp.interfaces");
          ????????????p.put(Context.PROVIDER_URL,?"localhost:1099");
          ????????????
          ????????????Context?jndiContext?=?new?InitialContext(p);
          ????????????Object?ref?=?jndiContext.lookup("FibonacciHome");
          ????????????FibonacciHome?home?=?(FibonacciHome)?PortableRemoteObject.narrow(
          ????????????????????ref,?FibonacciHome.class);
          ????????????Fibonacci?ff?=?home.create();
          ????????????long?result;
          ????????????for?(int?i?=?40;?i?>=?0;?i--)
          ????????????{
          ????????????????result?=?ff.getFibonacci(i);
          ????????????????System.out.println("Fibonacci?of"?+?i?+?"?is?"?+?result);
          ????????????}
          ????????}?catch?(java.rmi.RemoteException?re)
          ????????{
          ????????????re.printStackTrace();
          ????????}?catch?(Throwable?t)
          ????????{
          ????????????t.printStackTrace();
          ????????}
          ????}
          }

          解析此例
          J2EE應用說白了其實原理也很簡單,J2EE是分布式系統,意味著server與client是通過RMI-IIOP和JNDI進行交互的。簡單來說就是提供給client一種可以遠程調用server端程序的方法,當然其中的細節會比較復雜,不過這些都是你深入之后才會接觸到的東西。
          本文示例,客戶端通過JNDI利用Home接口創建出一個Remote?object,再通過調用Remote?object?中的方法與FibonacciBean進行交互,處理邏輯。客戶端并不是直接與Bean進行交互。
          程序中的ejb-jar.xml是用來描述EJB屬性的,jboss.xml是用來定義ejb-jar.xml中Bean所對應的JNDI信息。
          posted on 2006-03-23 15:35 KingWell 閱讀(913) 評論(0)  編輯  收藏 所屬分類: J2EE 相關
          歡迎訪問我的網站
          JSF中國

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          我的資源

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 乌兰察布市| 贡嘎县| 兖州市| 杨浦区| 昌乐县| 花莲市| 宁远县| 阳城县| 绥江县| 宽甸| 诏安县| 江山市| 监利县| 咸丰县| 定西市| 祁连县| 江华| 高雄市| 贵州省| 襄樊市| 北流市| 余江县| 五寨县| 门源| 美姑县| 常宁市| 米泉市| 平江县| 彭水| 眉山市| 平谷区| 安西县| 南康市| 嘉峪关市| 郧西县| 仁寿县| 道真| 开鲁县| 丹阳市| 胶南市| 枣庄市|