今天終于搞定了在JBOSS中群集EJB3中的無狀態(tài)會話BEAN,心里總算松了一口2個月以來的長氣,現(xiàn)在發(fā)出來給想無一樣苦惱的人一個光明的大路
環(huán)境
MyEclipse5.5
JBoss4.2.0
測試目的:群集EJB3
首先我門先啟動JBOSS.下面我用%JBOSS%來代替JBOSS的跟目錄
在%JBOSS%\bin目錄下先創(chuàng)建一個RUN.BAT的快捷方式然后,鼠標(biāo)右擊屬性給新做的快捷方式加2個參數(shù)第1個參數(shù)是-C ALL 目的是讓他啟動ALL服務(wù),第2個參數(shù)是-B 192.168.0.60都開出來了把是本機IP只有加了IP在可以讓他被在局域內(nèi)部被訪問到.我做的是3臺計算機的群集,所以3太機子上的JBOSS都的這么寫注意寫對IP.然后啟動JBOSS OK環(huán)境就算OK了然后開始寫EJB3
寫遠(yuǎn)程接口
public interface HelloRemote extends Serializable {
public String getString(int i);
然后寫本地接口
@Stateless
@Clustered //EJB3群集的標(biāo)簽
@Remote(HelloRemote.class)
public class HelloRemoteService implements HelloRemote {
public String getString(int i) {
System.out.println("我被執(zhí)行了第"+i+"次");
return null;
}
}
EJB寫的很簡單就是在服務(wù)器上打一句話而已,完了將EJB3打成JAR包部署到
%JBOSS%\server\all\farm目錄下,注意在這個目錄發(fā)布完后,其他機子上同時會響應(yīng)及其他機子上也會發(fā)布完成這個JAR包.下面開始運行這個EJB,當(dāng)然要重新在局域網(wǎng)內(nèi)找一臺機子做客戶端調(diào)用.
首先在那臺機子上將剛才的JAR包導(dǎo)入項目中完了寫測試代碼
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);
}
}
}
運行測試代碼我門可以發(fā)現(xiàn)在3臺服務(wù)器上他會打印出結(jié)果.這是JBOSS自己的負(fù)載平衡功能幫助我門實現(xiàn)的,呵呵寫完了,這簡單的實現(xiàn)我郁悶了2個月,郁悶~~~呵呵希望能給研究EJB3集群的朋友一點幫助
QQ58194033有問題我門可以繼續(xù)探討
posted on 2007-10-09 17:04
大博的BLOG 閱讀(1387)
評論(0) 編輯 收藏 所屬分類:
EJB3.0