JBoss: Multiple webroots and domains in a single instance

2009 August 30
tags: Development · Linux · Mac · Windows
by Josh Hand

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>

1 Response leave one →
  1. Google
    Jan 28, 2010 at 12:48 AM

    Thanks for information!

Leave a Reply