JBoss: Multiple webroots and domains in a single instance
Further to my previous post about setting up Jboss, ColdFusion, Apache on Linux/Mac you can run multiple webroots (.war's) and domains in a single jboss instance if you do the following:
> JBoss:
Contents of jboss/server/default/deploy/ that you need to be concerned with:
>cf_website1.war
>> CFIDE
>> website1
>> WEB-INF
>>> jboss-web.xml
>cf_website2.war
>> CFIDE
>> website2
>> WEB-INF
>>> jboss-web.xml
>jbossweb.sar
>> server.xml
1. Edit jboss/server/default/deploy/jbossweb.sar/server.xml and setup your required ports.
- Under:
<!-- A HTTP/1.1 Connector on port 8080 -->
<Connector protocol="HTTP/1.1" port="8080" address="${jboss.bind.address}"
connectionTimeout="20000" redirectPort="8443" />
- Setup enough ports so you have one for each webroot (remember to specify a proxyName):
<Connector protocol="HTTP/1.1" port="8090" address="${jboss.bind.address}" enableLookups="false"
connectionTimeout="20000" redirectPort="8443" proxyName="cf_website1" proxyPort="80" />
<Connector protocol="HTTP/1.1" port="8091" address="${jboss.bind.address}" enableLookups="false"
connectionTimeout="20000" redirectPort="8443" proxyName="cf_website2" proxyPort="80" />
2. Continue editing jboss/server/default/deploy/jbossweb.sar/server.xml and setup your required hosts.
- Under:
</Host>
- Setup a host for each webroot:
<Host name="cf_website1">
<Valve className="org.apache.catalina.valves.AccessLogValve"
prefix="website1_access_log." suffix=".log"
pattern="%t %H %m %U %s %q %b %D %I %h" directory="${jboss.server.log.dir}"
resolveHosts="false" />
<Alias>website1.mysites.com</Alias>
</Host>
<Host name="cf_website2">
<Valve className="org.apache.catalina.valves.AccessLogValve"
prefix="website2_access_log." suffix=".log"
pattern="%t %H %m %U %s %q %b %D %I %h" directory="${jboss.server.log.dir}"
resolveHosts="false" />
<Alias>website2.mysites.com</Alias>
</Host>
3. Edit your jboss-web.xml file for each webroot and add a virtual-host node (jboss/server/default/deploy/cf_website1.war/WEB-INF/jboss-web.xml).
<jboss-web>
<context-root>/</context-root>
<virtual-host>cf_website1</virtual-host>
</jboss-web>
> Apache:
Based on the entries we just made in the jboss/server/default/deploy/jbossweb.sar/server.xml our apache virual hosts should look something like so:
<VirtualHost *:80 >
ServerName website1.mysites.com
ProxyPass /CFIDE http://127.0.0.1:8090/CFIDE
ProxyPassReverse /CFIDE http://127.0.0.1:8090/CFIDE
ProxyPass /website1 http://127.0.0.1:8090/website1/
ProxyPassReverse /website1 http://127.0.0.1:8090/website1/
ProxyPass / http://127.0.0.1:8090/website1/
ProxyPassReverse / http://127.0.0.1:8090/website1/
ProxyPreserveHost on
</VirtualHost>
<VirtualHost *:80 >
ServerName website2.mysites.com
ProxyPass /CFIDE http://127.0.0.1:8091/CFIDE
ProxyPassReverse /CFIDE http://127.0.0.1:8091/CFIDE
ProxyPass /website2 http://127.0.0.1:8091/website2/
ProxyPassReverse /website2 http://127.0.0.1:8091/website2/
ProxyPass / http://127.0.0.1:8091/website2/
ProxyPassReverse / http://127.0.0.1:8091/website2/
ProxyPreserveHost on
</VirtualHost>
Thanks for information!