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

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

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

    世事如棋
    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 閱讀(909) 評論(0)  編輯  收藏 所屬分類: J2EE 相關
    歡迎訪問我的網站
    JSF中國

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    我的資源

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久亚洲AV午夜福利精品一区| 黄床大片免费30分钟国产精品| 亚洲桃色AV无码| 性xxxx视频播放免费| 久久久免费精品re6| A国产一区二区免费入口| 色欲aⅴ亚洲情无码AV| 亚洲成a人片毛片在线| 亚洲av午夜成人片精品网站 | 亚洲视频在线免费观看| 亚洲日韩VA无码中文字幕| 国产免费av片在线播放| 成人免费视频试看120秒| **真实毛片免费观看| 日韩精品无码专区免费播放| 国产无限免费观看黄网站| 农村寡妇一级毛片免费看视频| 亚洲欧美日韩中文字幕一区二区三区| 亚洲欧洲综合在线| 亚洲色图国产精品| 日产亚洲一区二区三区| 亚洲国产成人久久综合一| 亚洲AV午夜成人影院老师机影院 | 免费人成视频在线播放| 亚洲第一综合天堂另类专| 亚洲熟妇无码一区二区三区| 亚洲午夜精品国产电影在线观看| 91久久亚洲国产成人精品性色| 亚洲AV成人无码久久精品老人| 久久精品国产亚洲av麻| 亚洲丝袜美腿视频| 亚洲精品成人久久| 亚洲fuli在线观看| 亚洲日韩国产精品乱-久| 亚洲色大成网站www尤物| 亚洲久热无码av中文字幕| 亚洲av永久无码精品秋霞电影秋| 亚洲精品无码少妇30P| 另类专区另类专区亚洲| 国产特黄一级一片免费| 久久久久国产精品免费免费不卡 |