今天终于搞定了在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集群的朋友一点帮助
相关推荐
3. 将应用部署到至少两个JBOSS实例上,确保它们都配置为群集的一部分。 4. 配置外部负载均衡器,如mod_cluster或Nginx,根据群集策略分配请求。 5. 测试应用在群集环境下的行为,确保数据一致性,无单点故障。 在...
JBoss 7.1.1 是一款开源的应用服务器,它基于Java EE 6规范,提供了对Web服务、EJB、JMS、JPA等技术的支持。本配置指南旨在详细阐述JBoss 7.1.1的特性、配置方法以及管理实践,帮助用户深入了解并有效地利用该版本。...
- **域**是指一个由多个JBoss实例组成的逻辑单元,这些实例可以位于同一台物理机器上或分布在不同的服务器上。域允许管理员集中管理一组JBoss实例,包括配置更新、监控和故障恢复等。 - **群集**则是一种特定的...
- **企业级功能**:加强了对EJB(Enterprise JavaBeans)、JMS(Java Messaging Service)等企业级应用的支持。 #### JBOSS5特性 - **性能优化**:通过内存管理和线程池的改进,提升了整体性能。 - **安全增强**:...
本手册继续深入讨论JBoss 7的详细配置,包括但不限于线程池设置、JNDI绑定、数据源配置、EJB3服务配置、HTTP和HTTPS连接器配置、日志管理、监控和性能调优等方面,旨在为JBoss 7的管理员提供全面的参考和指导。...
- JBoss 5特性:增强了对Java EE 5标准的支持,包括EJB 3.0和JSF 1.2等,还引入了服务导向架构(SOA)组件。 - JBoss 6特性:进一步提升对Java EE 6的兼容性,如CDI、JPA 2.0、JSF 2.0等,并优化了管理和监控工具...