posts - 0,comments - 10,trackbacks - 0
          今天終于搞定了在JBOSS中群集EJB3中的無狀態會話BEAN,心里總算松了一口2個月以來的長氣,現在發出來給想無一樣苦惱的人一個光明的大路

          環境
          MyEclipse5.5
          JBoss4.2.0
          測試目的:群集EJB3
          首先我門先啟動JBOSS.下面我用%JBOSS%來代替JBOSS的跟目錄
          在%JBOSS%\bin目錄下先創建一個RUN.BAT的快捷方式然后,鼠標右擊屬性給新做的快捷方式加2個參數第1個參數是-C ALL 目的是讓他啟動ALL服務,第2個參數是-B 192.168.0.60都開出來了把是本機IP只有加了IP在可以讓他被在局域內部被訪問到.我做的是3臺計算機的群集,所以3太機子上的JBOSS都的這么寫注意寫對IP.然后啟動JBOSS OK環境就算OK了然后開始寫EJB3
          寫遠程接口

          public interface HelloRemote extends Serializable {

           public String getString(int i);

          然后寫本地接口

          @Stateless
          @Clustered     //EJB3群集的標簽
          @Remote(HelloRemote.class)
          public class HelloRemoteService implements HelloRemote {

           public String getString(int i) {
            
             System.out.println("我被執行了第"+i+"次");
            
            
            return null;
           }

          }

          EJB寫的很簡單就是在服務器上打一句話而已,完了將EJB3打成JAR包部署到
          %JBOSS%\server\all\farm目錄下,注意在這個目錄發布完后,其他機子上同時會響應及其他機子上也會發布完成這個JAR包.下面開始運行這個EJB,當然要重新在局域網內找一臺機子做客戶端調用.
          首先在那臺機子上將剛才的JAR包導入項目中完了寫測試代碼
          Public class EJBFactory {
             
              public static Object getEJB(String jndipath) {
                  try {
                      Properties props = new Properties();
                     
                      props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
                      props.setProperty("java.naming.provider.url", "192.168.0.149:1099,192.168.0.60,192.168.0.51:1099");
                      props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
                      props.setProperty("jnp.disableDiscovery", "true");
          //        
          //            props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
          //            props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
          //            props.setProperty("java.naming.provider.url", "192.168.0.251:3700");
          //            props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
          //          
                      InitialContext ctx = new InitialContext(props);
                      return ctx.lookup(jndipath);
                  } catch (NamingException e) {
                      e.printStackTrace();
                  }
                  return null;
              }
          }
          看清楚我寫了3個IP地址,這樣做的好處是隨便那個機子掛掉其他機子一樣可以運行
          測試代碼

          public class Test {
          public static void main(String[] args) {
           
           HelloRemote helloRemote =(HelloRemote)EJBFactory.getEJB("HelloRemoteService/remote");
           for(int i=0;i<10;i++){
            helloRemote.getString(i);
           }
          }
          }
          運行測試代碼我門可以發現在3臺服務器上他會打印出結果.這是JBOSS自己的負載平衡功能幫助我門實現的,呵呵寫完了,這簡單的實現我郁悶了2個月,郁悶~~~呵呵希望能給研究EJB3集群的朋友一點幫助
          QQ58194033有問題我門可以繼續探討

          posted on 2007-10-09 17:04 大博的BLOG 閱讀(1391) 評論(0)  編輯  收藏 所屬分類: EJB3.0

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 井冈山市| 丰台区| 鄄城县| 新田县| 越西县| 汝州市| 苏尼特左旗| 吉木萨尔县| 宁德市| 乌鲁木齐县| 平邑县| 汉中市| 武强县| 常山县| 瓮安县| 沁源县| 南皮县| 安福县| 土默特右旗| 龙泉市| 泗水县| 龙海市| 民县| 苍南县| 宝山区| 读书| 夹江县| 尚志市| 镇康县| 珠海市| 孟州市| 新竹市| 秦安县| 和平县| 兴城市| 青州市| 哈密市| 三门峡市| 台中市| 霸州市| 南汇区|