한꺼번에 JBoss AS의 적용 포트를 변경하는 방법을 설명합니다.
JBoss가 사용하는 포트는 이미 이전 글에서 설명되어 있습니다.
JBoss의 서비스 포트를 일률적으로 변경하고 싶은 경우 다음의 절차를 진행하십시오.
1. $SERVER_HOME/conf/jboss-service.xml 파일을 엽니다.
해당 파일의 service binding 영역을 찾아 주석을 풀도록 합니다.
<!-- ==================================================================== -->
<!-- Service Binding -->
<!-- ==================================================================== -->
<!-- Automatically activated when generatting the clustering environment -->
<!-- @TESTSUITE_CLUSTER_CONFIG@ -->
<!--
| Binding service manager for port/host mapping. This is a sample
| config that demonstrates a JBoss instances with a server name 'ports-01'
| loading its bindings from an XML file using the ServicesStoreFactory
| implementation returned by the XMLServicesStoreFactory.
|
| ServerName: The unique name assigned to a JBoss server instance for
| lookup purposes. This allows a single ServicesStore to handle mulitiple
| JBoss servers.
|
| StoreURL: The URL string passed to org.jboss.services.binding.ServicesStore
| during initialization that specifies how to connect to the bindings store.
| StoreFactory: The org.jboss.services.binding.ServicesStoreFactory interface
| implementation to create to obtain the ServicesStore instance.
<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>
-->
위의 설정파일에서는 port를 변경할 수 있는 파일이 sample-bindings.xml 에 정의되어 있다는 내용이 있습니다. 위의 파일 위치에 있는 설정 파일을 여십시오..
2. bindings.xml 파일을 열어 ServerName의 ports-01에 해당하는 태그를 찾습니다. 500라인 부근에 ports-01 속성값들이 해당 서버의 port정보를 모두 담고 있습니다. 필요한 port로 바꾸도록 합니다.
<!-- ********************************************************** -->
<!-- * ports-01 * -->
<!-- ********************************************************** -->
<server name="ports-01">
<!-- EJB3 Remoting Connector ejb3.deployer/META-INF/jboss-service.xml -->
<service-config name="jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3" delegateClass="org.jboss.services.binding.AttributeMappingDelegate">
<delegate-config>
<attribute name="InvokerLocator">socket://${jboss.bind.address}:3973</attribute>
</delegate-config>
<binding port="3973"/>
</service-config>
<!-- ********************* jboss-service.xml ****************** -->
<service-config name="jboss:service=Naming" delegateClass="org.jboss.services.binding.AttributeMappingDelegate">
<delegate-config portName="Port" hostName="BindAddress">
<attribute name="RmiPort">1198</attribute>
</delegate-config>
<binding port="1199" host="${jboss.bind.address}"/>
</service-config>
<service-config name="jboss:service=WebService" delegateClass="org.jboss.services.binding.AttributeMappingDelegate">
<delegate-config portName="Port"/>
<binding port="8183"/>
</service-config>
<service-config name="jboss:service=invoker,type=jrmp" delegateClass="org.jboss.services.binding.AttributeMappingDelegate">
<delegate-config portName="RMIObjectPort"/>
<binding port="4544"/>
</service-config>
<service-config name="jboss:service=invoker,type=pooled" delegateClass="org.jboss.services.binding.AttributeMappingDelegate">
<delegate-config portName="ServerBindPort"/>
<binding port="4545"/>
</service-config>
이하 생략
. . . . .
위의 xml tag 중 ServerName에 해당하는 값은 각 파일간에 서로 매핑되어 있어야 함은 당연합니다.