在一台机器上跑多个JBOSS?
默认情况下,jboss启动时加载server/default/目录下的配置,要实现多个实例的启动,主要是解决端口冲突的问题,因为一套端口只能被一个应用占有;
一般来说,我们可以在Jboss启动时通过-Djboss.server.home设置当前实例启动时加载不同的目录来实现;
比如Jboss主程序安装在/usr/xx/jboss/,应用放在/home/admin/app/;那此时就可以cp一份default目录到当前应用app目录下,通过-Djboss.server.home=/home/admin/app/default来启动该实例;
若直接在/usr/xx/jboss/server/下复制default目录并改名为yy,则可以用更简单的参数-c yy来启动;
对于多应用的情况,我们仍然要解决端口冲突的问题,有两种方式:
其一,直接修改各应用对应的default目录下的所有配置端口,主要涉及配置文件conf/jboss-service.xml、tomcat下的server.xml;该方法比较土,很容易出错,因为端口众多,只要有一项端口没有改,jboss就将无法正常启动;若应用较少,比如就只有2个,那这种方式勉强可以用用;
其二,在jboss-service.xml中启用jboss.system:service=ServiceBindingManager这个mbean服务,设置ServerName、StoreURL属性;将各套应用对应的端口全部配置在同一个文件中;推荐采用该方案,具体可参考:
1: <mbean code="org.jboss.services.binding.ServiceBindingManager"
2: name="jboss.system:service=ServiceBindingManager">
3: <attribute name="ServerName">ports-01</attribute>
4: <attribute name="StoreURL">${jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml</attribute>
5: <attribute name="StoreFactoryClassName">
6: org.jboss.services.binding.XMLServicesStoreFactory
7: </attribute>
8: </mbean>
Jboss已经正常启动,但是无法用IP或者绑定IP访问应用?
在服务器上用./run.sh & 启动jboss,启动正常,确无法访问
出现这个问题一般是因为你使用的是4.2系列及其之后的版本,因为从这个系列开始,Jboss默认绑定的端口由之前的0.0.0.0变成了127.0.0.1;前者表示绑定当前服务器下所有地址,包括自身的IP、127.0.0.1;而后者只绑定了127.0.0.1,而没有绑定本机IP,通过IP去访问应用自然也就无法成功了,因为访问的IP地址没有开放对应的端口;
对于默认的这种情况,一般来说jboss是要和apache搭配使用的,apache暴露应用外部访问的端口,然后apache再监听本地(也就是127.0.0.1)的端口;
当然这个默认配置也是可以修改的,方式也比较多,比如:
方式1,启动脚本中通过参数-b, –host=<host or ip>指定地址,比如-b 0.0.0.0就表示绑定所有地址;
./run -b 0.0.0.0 &
方式2,启动脚本中通过参数-Djboss.bind.address指定地址,比如-Djboss.bind.address=0.0.0.0;
方式3,直接修改需要对外暴露的端口绑定地址,比如tomcat/server.xml中的http端口绑定address信息;
关闭Linux ssh终端窗口jboss就关闭?
用 ./run.sh & 注意后面的&
启动后,用exit退出
或者直接用nohup启动jboss服务,like
nohup sh run.sh -b 0.0.0.0 &
大部分copy自 http://blog.csdn.net/sfdev/archive/2009/06/13/4266728.aspx,更多jboss问题也见该文
http://dzq2008.javaeye.com/blog/627078
http://bbs.chinaunix.net/viewthread.php?tid=1238545