Neolectric

Apache config

This is a sample config file (server.xml) that tells Tomcat to listen on localhost for requests from Apache using the ajp protocol.

<Server port="8005" shutdown="SHUTDOWN">
 <Service name="Catalina">
  	
  <!-- Define a Coyote/JK2 AJP 1.3 Connector (for apache) on port 8009 -->
  <Connector port="8009" enableLookups="false" connectionTimeout="300000"
   debug="0" protocol="AJP/1.3" address="127.0.0.1" />
			   
  <Engine name="Catalina" defaultHost="host.com" debug="1">

   <!-- first virtual host -->
   <Host name="domain.com" debug="1" appBase="/home/domain/htdocs"
    autoDeploy="false" xmlValidation="false" xmlNamespaceAware="true">
    <Alias>www.domain.com</Alias>
    <Context path="" docBase="/home/domain/htdocs" debug="0" reloadable="false"/>
   </Host>
   <!-- other virtual hosts follow -->
   
  </Engine>
 </Service>
</Server>

You have to create a web.xml file for each virtual host mentioned in server.xml. Here's a sample that uses my application framework. Yours will differ.

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

 <servlet> <!-- ContextServlet loads service classes into this host's ServletContext -->
  <servlet-name>ctxtservlet</servlet-name>
  <servlet-class>com.neolectric.servlet.ContextServlet</servlet-class>
  <init-param> <!-- file that describes service classes -->
   <param-name>contextFile</param-name>
   <param-value>/home/domain/prop/context.xml</param-value>
  </init-param>
  <init-param> <!-- xml parser that reads config values -->
   <param-name>parser</param-name>
   <param-value>org.apache.xerces.parsers.SAXParser</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup> <!-- load this servlet first --> 
 </servlet>
	
 <servlet> <!-- DxpServlet delivers dynamic dxp pages -->
  <servlet-name>dxpservlet</servlet-name>
  <servlet-class>com.neolectric.servlet.DxpServlet</servlet-class>
  <init-param>
   <param-name>maxPost</param-name>
   <param-value>8192</param-value>
  </init-param>
  <init-param>
   <param-name>debug</param-name>
   <param-value>false</param-value>
  </init-param>
  <init-param> <!-- how often a cached page is checked for changes to the src file -->
   <param-name>updateInterval</param-name>
   <param-value>5</param-value> <!-- sec -->
  </init-param>
  <init-param>
   <param-name>docroot</param-name>
   <param-value>/home/domain/htdocs</param-value>
   </init-param>
  <init-param>
   <param-name>errdoc</param-name>
   <param-value>/home/domain/htdocs/dxperrdoc.html</param-value>
  </init-param>
  <init-param>
   <param-name>notauthdoc</param-name>
   <param-value>/home/domain/htdocs/error/notauthorized.html</param-value>
  </init-param>
  <init-param>
   <param-name>excludeDir</param-name> <!-- comma delim list -->
   <param-value>/home/domain/htdocs/WEB-INF</param-value>
  </init-param>
  <init-param>
   <param-name>errtag</param-name>
   <param-value>[msg]</param-value>
  </init-param>
  <init-param>
   <param-name>parser</param-name>
   <param-value>org.apache.xerces.parsers.SAXParser</param-value>
  </init-param>
  <load-on-startup>2</load-on-startup>
 </servlet>
 <servlet-mapping> 
  <servlet-name>dxpservlet</servlet-name> 
  <url-pattern>*.dxp</url-pattern> 
 </servlet-mapping>

 <servlet-mapping> <!-- /usr/local/apache/conf/worker2.properties also maps /dataview -->
  <servlet-name>dvservlet</servlet-name> 
  <url-pattern>/dataview</url-pattern> 
 </servlet-mapping>
	
 <!-- docs (relative to host docroot) returned by servlet runner for various http errors -->
 <error-page>
  <error-code>401</error-code>
  <location>/error/notauthorized.html</location>
 </error-page>
 <error-page>
  <error-code>403</error-code>
  <location>/error/forbidden.html</location>
 </error-page>
 <error-page>
  <error-code>404</error-code>
  <location>/error/notfound.html</location>
 </error-page>
 <error-page>
  <error-code>500</error-code>
  <location>/error/internalerr.html</location>
 </error-page>
 <error-page>
  <error-code>503</error-code>
  <location>/error/unavailable.html</location>
 </error-page>
	
</web-app>