在开发中,你是否也会因为JBOSS的繁锁配置而放弃使用这款重量级的容器,取而代之的是众人皆爱的TOMCAT?

可是在当你进行类EJB重量级项目的开发时却不得不选择JBOSS,这里Dreamforce就提供一些本人常用到的JBOSS配置。相当实用哦。

1.你是否经常会遇到JVM端口占用的问题?

我们常用的端口是8080,可是8080却受众人追求,如果你装了Oracle服务,你会惊讶的发现,你的8080端口被占用了。是的,Oracle的默认WEB Listener端口就是8080。你将面临两个选择:

a). 将Oracle默认端口改为其它非常用端口

call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(), ‘/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()’,8081));
这个脚本的意思就是将当前Oracle Http 端口改为8081.
b). 将JBOSS服务端口改为其它端口
    1. 进入JBOSS_HOME下面的 ‘deploy\jboss-web.deployer’这个目录
    2. 编辑 ‘Server.xml’
    3. 按如下说明进行修改
    <Connector port=”8080” address=”${jboss.bind.address}”

maxThreads=”250″ maxHttpHeaderSize=”8192″
emptySessionPath=”true” protocol=”HTTP/1.1″
enableLookups=”false” redirectPort=”8443″ acceptCount=”100″
connectionTimeout=”20000″ disableUploadTimeout=”true” />

    to :
<Connector port=”8090” address=”${jboss.bind.address}”
maxThreads=”250″ maxHttpHeaderSize=”8192″
emptySessionPath=”true” protocol=”HTTP/1.1″
enableLookups=”false” redirectPort=”8443″ acceptCount=”100″
connectionTimeout=”20000″ disableUploadTimeout=”true” />
这样修改后,你就将你的WEB应用端口改为8090了。

2. 多实例服务加载

上面提到的配置只是单服务单实例的修改规则,但是如果你将会启动多服务怎么办? 比如你一个前端的展示网站+后端管理系统,往往这是两个WAR包,需要启动两个实例的话,你就需要做多实例配置了。
    1. 进入JBOSS_HOME下的Server/Your APP/Conf/
    2. 编辑jboss-service.xml
    3. 将下列代码解注释
   <mbean code="org.jboss.services.binding.ServiceBindingManager"
     name="jboss.system:service=ServiceBindingManager">
     <attribute name="ServerName">ports-01</attribute>
     <attribute name="StoreURL">${jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml</attribute>
     <attribute name="StoreFactoryClassName">
       org.jboss.services.binding.XMLServicesStoreFactory
     </attribute>
   </mbean>
 上述代码是将当前应用加入端口管理,启用Ports-01端口,一般来说,ports-00 代表8080,ports-01代表8180,ports-02代表8280依此类推。
  同理,你将你另外需要同时加载的应用改为其它相应的端口。 这样你就开启了JBOSS多实例服务。

3.远程调试

远程调试应该是作为开发来说不可或缺的技巧,但是如何开启JBOSS的远程调试呢? JBOSS默认是关闭了远程调试功能,如果想开启JBOSS远程调试功能的话,有以下几种途径可以实现。
     1. 最为暴力直接的方式,找到JBOSS_HOME/bin/run.bat 将以下语句解注释(去掉REM)
          rem set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y %JAVA_OPTS%

同时将suspend=y改为supspend=n. (注 suspend = y 意味着服务必须要被远程监听才会执行,一般情况下都默认不监听。)
2. 稍为优雅的方式,配置如下环境变量
JAVA_OPTS= -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n
JBOSS会默认加载JAVA_OPTS环境变量进行初始化配置,如果你在启动时看到“Listening for transport dt_socket at address: 8787”,那么恭喜你,你可以进行远程调试了。

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: