How can I integrate Tomcat with JBoss?

Luigi Viggiano

Most of this information comes from the official JBoss site at http://www.jboss.org/business/jboss-tomcat.html

First of all, JBoss has been tested with tomcat 3.2.1, newer version shall be configured in similar way I think.

Tomcat libs must be in classpath; then edit JBOSS_HOME/conf/default/jboss.conf and un-comment ClassPathExtension mbean for the tomcat lib directory to:

<MLET CODE = "org.jboss.util.ClassPathExtension" ARCHIVE="jboss.jar" CODEBASE="../../lib/ext/">
  <ARG TYPE="java.lang.String" VALUE="TOMCAT_HOME/lib/">
  <ARG TYPE="java.lang.String" VALUE="Tomcat">

edit JBOSS_HOME/conf/default/jboss.jcml and uncomment the EmbeddedTomcatService mbean. Locate:

  <mbean code="org.jboss.tomcat.EmbeddedTomcatService" name="DefaultDomain:service=EmbeddedTomcat" />

Always in jboss.jcml, check that J2eeDeployer is:

  <mbean code="org.jboss.deployment.J2eeDeployer" name="J2EE:service=J2eeDeployer">
    <attribute name="DeployerName">Default</attribute>
    <attribute name="JarDeployerName">:service=ContainerFactory</attribute>
    <attribute name="WarDeployerName">:service=EmbeddedTomcat</attribute>

Add the following lines to TOMCAT_HOME/conf/server.xml

        <ContextInterceptor className="org.jboss.tomcat.ContextClassLoaderInterceptor" />

        <ContextInterceptor className="org.jboss.tomcat.naming.JbossWebXmlReader" />

        <RequestInterceptor className="org.apache.tomcat.request.Jdk12Interceptor" />

        <RequestInterceptor className="org.jboss.tomcat.security.JbossRealm" />

To compile JSP files, add the JDK lib/tools.jar file to the classpath in run.sh/run.bat, or copy tools.jar to the TOMCAT_HOME/lib directory.

Starting JBoss with run.sh/run.bat you should now see the following Tomcat related output in your log messages:

Using configuration "default"
[Info] Java version: 1.3.0_01,Sun Microsystems Inc.
[Info] Java VM: Java HotSpot(TM) Server VM 1.3.0_01,Sun Microsystems Inc.
[Info] System: Linux 2.2.16-22,i386
[EmbeddedTomcat] Starting
[EmbeddedTomcat] Starting EmbeddedTomcat....
2001-02-20 05:01:23 - ContextManager: Adding context Ctx( /examples )
2001-02-20 05:01:23 - ContextManager: Adding context Ctx( /admin )
[EmbeddedTomcat] Starting tomcat. Check logs/tomcat.log for error messages 
2001-02-20 05:01:23 - ContextManager: Adding context Ctx(  )
2001-02-20 05:01:23 - ContextManager: Adding context Ctx( /test )
2001-02-20 05:01:25 - PoolTcpConnector: Starting HttpConnectionHandler on 8080
2001-02-20 05:01:25 - PoolTcpConnector: Starting Ajp12ConnectionHandler on 8007
[EmbeddedTomcat] OK
[EmbeddedTomcat] Started
[Default] JBoss PRE-2.1 Started in 0m:14s

That's all. Check the link given at the top for updated/more detailed infos.