Q:

How to direct subdomains to the correct JBoss App?

new to JBoss and am configuring some applications.  I know how to do this in apache webserver, but not using Jboss.
I have successfully deployed 3 applications on a redhat box, JBoss 4.2.
If my server is called fruit.mycompany.com, I can access the three apps this way:
http://fruit.mycompany.com:8080/quince
http://fruit.mycompany.com:8080/pineapple
http://fruit.mycompany.com:8080/lime

Next, I created three subdomains, which are aliases of the server fruit.
http://quince.mycompany.com
http://pineapple.mycompany.com
http://lime.mycompany.com

How can I get each subdomain to point at it's corresponding application?
I want http://quince.mycompany.com to actually open http://fruit.mycompany.com:8080/quince.
In apache, I would use the VirtualHost tag to point each subdomain to the correct Document Root.  How do I do it with JBoss or Tomcat?
Can I do it with redirection ( does Tomcat have something like mod_rewrite )? 

A:

Tomcat supports virtual hosts. You'll basically have to:
1) Change tomcat's "listen" port to 80 instead of 8080.
2) Modify tomcat's server.xml to list your servers:
<Engine name="Catalina" defaultHost="quince">
    <Host name="quince"    appBase="quince_apps"/>
    <Host name="pineapple" appBase="pineapple_apps"/>
    <Host name="lime"      appBase="lime_apps"/>
</Engine>

3) Move each application to 'ROOT' folder of corresponding "_apps" folder.
When I was in a similar situation, I chose to use Apache redirection instead; however I had Apache already serving static pages (public website).

A:

I gave up with Tomcat.
The situation became too complicated.
I have a web site running on port 80 already (on a separate instance of JBoss).
I have these three applications, quince, pineapple and lime running on their own JBoss instance on port 8080.
To solve my problem, I just wrote a javascript function on the index page of the website running on port 80.  
I check location to see which domain is being called and then redirect to the appropriate website on port 8080.
The script looks something like this:
var whois=location+" ";
if (whois.indexOf("quince.mycompany.com") > -1)
{ 
    setTimeout('window.location.replace("http://quince.mycompany.com:8080/quince/");', 10);     
    exit;
}
if (whois.indexOf("lime.mycompany.com") > -1)
{ 
    setTimeout('window.location.replace("http://lime.mycompany.com:8080/lime/");', 10);     
    exit;
}
...
// otherwise redirect to the app running on port 80
setTimeout('window.location.replace("http://fruit.mycompany.com/otherapp/");', 10);  

It's not exactly what I wanted, but at least my users now have a shortcut URL, and they don't have to remember port numbers: 
http://lime.mycompany.com redirects to -> http://lime.langara.bc.ca:8080/lime

