用JBOSS群集EJB3实例

测试目的:群集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有问题我门可以继续探讨

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值