JBoss Weed
在使用JBoss的过程中,收集到的一些小知识。(最后更新2007.01.12)
如何改变JBoss启动Tomcat的端口号
修改文件JBOSS_HOME/server/Your_Server/deploy/jbossweb-tomcat55.sar/server.xml,将其中默认的8080端口号换成你所期望的端口号。Your_Server是你要启动的JBoss服务器名(如default),下同。
在一台机器上启动两个JBoss服务器
要启动两个JBoss,关键是修改会造成冲突的端口号,修改如下文件中的相应端口号就可以了。
1.
编辑文件
JBoss_Home
/server/
Your_Server
/deploy/jbossweb-tomcat55.sar/server.xml
<Service name="jboss.web" className="org.jboss.web.tomcat.tc5.StandardService">
<!-- A HTTP/1.1 Connector on port 8080 --> 原port=8080
<!-- A AJP 1.3 Connector on port 8009 -->
原port=
8009
<!-- SSL/TLS Connector configuration using the admin devl guide keystore --> 原port=8443
2.
编辑文件
JBoss_Home
/server/
Your_Server
/conf/jboss-service.xml
jboss-service.xml
<mbean code="org.jboss.web.WebService" name="jboss:service=WebService">
<attribute name="Port">8083</attribute>
<mbean code="org.jboss.naming.NamingService"
name="jboss:service=Naming"
xmbean-dd="resource:xmdesc/NamingService-xmbean.xml">
<attribute name="Port">1099</attribute>
<attribute name="RmiPort">1098</attribute>
<mbean code="org.jboss.invocation.jrmp.server.JRMPInvoker"
name="jboss:service=invoker,type=jrmp">
<attribute name="RMIObjectPort">4444</attribute>
<mbean code="org.jboss.invocation.pooled.server.PooledInvoker"
name="jboss:service=invoker,type=pooled">
<attribute name="ServerBindPort">4445</attribute>
建议:在修改这些端口号时,最好后一个服务器中对应的端口号比前一个服务器中对应的端口号大(小)100。
如下链接中的文章讲的更为详细:
Configuring Multiple JBoss Instances On One Machine
远程调试JBoss
编辑文件JBoss_Home-->bin-->run.bat/run.sh。
查找变量JAVA_OPTS,在它(至少是)第一次出现的位置之后,加入如下语句:
JAVA_OPTS=%JAVA_OPTS% -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket, address=Your_Port, server=y, suspend=n
将
Your_Port
换成由你指定的端口,如8787。
然后就可以用Eclipse对该JBoss进行远程调试了。
其实现在JBoss都已经提供了相应的语句(查找"8787"即可找到),只是被注释掉了。
Windows,run.bat中已经有该条语句了,去掉注释即可使用。
Linux,run.sh中没有这条语句,但run.conf中有该条语句,也只需要去掉注释即可使用。
注意:由于默认情况下,当打开debug端口后,JBoss在启动时将会监控该端口,并暂停(让用户能够有时间使用Debugger连接JBoss)。如果不希望暂停的话,需要将suspend=y改为suspend=n。
JBoss中的若干目录
conf -- 含有指定JBoss核心服务的jboss-service.xml文件。同时,还包括核心服务的其他配置文件。
data -- 这一目录存储持久化数据,即使服务器发生重启其中的数据也不会丢失。许多JBoss服务将数据存储在这里,比如 Hypersonic数据库实例。
deploy -- 用户将应用代码(JAR\WAR\EAR文件)部署在此处。同时,deploy目录也用于热部署服务(即,那些能够从运行服务器动态添加或删除的服务)和部署JCA 资源适配器。因此,用户能够在 deploy 目录看到大量的配置文件。尤其是,用户能够看到 JMX 控制台应用(未打包的WAR文件)。JBoss服务器将定期扫描该目录,从而查找是否有组件更新或修改,从而自动完成组件的重新部署。
lib -- 服务器配置所需的JAR件。用户可以添加自身的库文件,比如JDBC驱动,等等。
log -- 日志信息将存储到该目录。JBoss 使用Jakarta Log4j包作为其日志功能。同时,用户可以在应用中直接使用Log4j日志记录功能。
tmp -- 供部署器临时存储未打包应用使用,也可以作为其他用途。
work -- 供Tomcat编译JSP使用。
注:本主题内容摘自《Getting Started with JBoss 4.0》(release 5)
恢复数据库连接
当时JBoss服务器已经启动,而它连接的数据库服务器被重新启动,那么连接将丢失。即,JBoss无法自动地再连接上数据库服务器,此时只能重新启动JBoss服务器。但在数据源文件中进行简单配置,即可实现数据库连接的自动恢复。
在此处,使用JBoss4.0.4GA + MySQL5.0.16,已经配置了JBoss JNDI数据源--mysql-ds.xml。
在mysql-ds.xml文件中加入如下形式的语句:
<datasources>
<local-tx-datasource>
<check-valid-connection-sql>select * from some_table</check-valid-connection-sql>
<local-tx-datasource>
<datasources>
其中的SQL语句,是简单查询被使用的数据库中的一张表(当然也可以是其它形式的SQL语句)。当数据库连接断了之后,JBoss会察觉到,并尝试重新建立数据库连接。
参考资源:SetUpAHSQLDBDatasource
updating...