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 閱讀(1388) 評論(0)  編輯  收藏 所屬分類: EJB3.0

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


          網站導航:
           
          主站蜘蛛池模板: 从化市| 神农架林区| 陆河县| 南宁市| 偏关县| 沂源县| 江城| 沁源县| 应城市| 德清县| 五台县| 安龙县| 淮南市| 德安县| 明星| 都江堰市| 丹巴县| 乾安县| 河北省| 博兴县| 陇川县| 泽州县| 临泉县| 崇信县| 望都县| 绩溪县| 合江县| 达日县| 游戏| 东丰县| 绥棱县| 尤溪县| 项城市| 开封县| 依兰县| 深泽县| 中宁县| 会理县| 建湖县| 哈密市| 郸城县|