Step two: extract jboss-4.2.2.GA.zip to a local dir say ${JBOSS_HOME}


 


Step three: config -


 


注:以下配置对应的jboss版本为4.2.2.GA,部署的应用类型为ear。如果你的jboss版本不同或部署的应用类型不是ear,那配置上可能略有差别,其差异性不在本文讨论范围内。


 


1.拷贝数据源(datasource)配置文件(e.g. oracle-xxx-ds.xml)到${JBOSS_HOME}/server/default/deploy目录


 


2.修改class loader,打开


 


      for jboss-4.2.x: ${JBOSS_HOME}/server/default/deploy/jboss-web.deployer/META-INF/jboss-service.xml


 


      for jboss-4.0.x: ${JBOSS_HOME}/server/default/deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml


 


      文件,将UseJBossWebLoader属性设置为true,以使用JBoss Loader来代替Tomcat Loader。


 


      不过笔者 建议 还是使用jboss的默认配置,即 UseJBossWebLoader=false ,原因参见 ​​http://jira.jboss.com/jira/browse/JBAS-1691​​ 。


 


      P.S. 需将${war.dir}/WEB-INF/lib目录中的spring等类包都删除?因为默认配置会重复加载这些类包,但请注意denali应用不能将${war.dir}/WEB-INF/lib目录中的jar包删除的哦!因为denali中使用的tld必须inline加载?!。。。此处省略n字。。。未完待续。。。


 


3.修改访问端口


 


      方法一:修改${JBOSS_HOME}/server/default/deploy/jboss-web.deployer/server.xml文件,将port属性为8080的Connector修改为7001。e.g.


 


      <!-- A HTTP/1.1 Connector on port 8080 -->


      <Connector port="7001" address="${jboss.bind.address}"


         maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"


         emptySessionPath="true"


         enableLookups="false" redirectPort="8443" acceptCount="100"


         connectionTimeout="20000" disableUploadTimeout="true"/>


 


      方法二 :修改${JBOSS_HOME}/server/default/conf/jboss-service.xml文件,还原被注释掉的部分:


 


   <mbean code="org.jboss.services.binding.ServiceBindingManager"


     name="jboss.system:service=ServiceBindingManager">


     <attribute name="ServerName">ports-02</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>


 


      这样会将访问端口由8080改为8280,而且这个配置还有一个好处是可以在同一台机器上跑多个jboss as,只要将各个jboss as的这个配置项设置为不同的ports-xx就可以了,所以方法二也是推荐 配置。


 


    4.支持中文(如果不配置本项目则在GET方式的url中的中文将变为乱码¹)


 


      修改${JBOSS_HOME}/server/default/deploy/jboss-web.deployer/server.xml文件,在每一个Connector中添加属性useBodyEncodingForURI="true"。e.g.


 


    <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" useBodyEncodingForURI="true" />


 


    ...


 


    <!-- Define an AJP 1.3 Connector on port 8009 -->


    <Connector port="8009" address="${jboss.bind.address}" protocol="AJP/1.3"


         emptySessionPath="true" enableLookups="false" redirectPort="8443" useBodyEncodingForURI="true" />


 


    ...


 


    5.支持热部署(hot deployment)和远程目录部署


 


      修改${JBOSS_HOME}/server/default/conf/jboss-service.xml文件,添加远程目录到deployment/undeployment mbean的urls属性中。e.g.


 


   <mbean code="org.jboss.deployment.scanner.URLDeploymentScanner"


      name="jboss.deployment:type=DeploymentScanner,flavor=URL">


 


      ...


 


      <attribute name="URLs">


          deploy/,file:///D:/Projects/et/workcopy/deploy/target


      </attribute>


 


      ...


 


    6.支持remote debugging


 


      修改${JBOSS_HOME}/bin/run.bat,还原被注释掉的部分:


 


      rem set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y %JAVA_OPTS%


 


      修改为


 


      set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n %JAVA_OPTS%


 


       注意设置 suspend=n,使debug时不会挂起


 


作者:SVENNEE