3
votes

I've web portal developed in struts which is deployed in tomcat on port 8080 & now I want to deploy web service on the same tomcat server but on different port 8090.

C:\tomcat-6.0.32\conf\server.xml:

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
   <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
   <Listener className="org.apache.catalina.core.JasperListener" />
   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
   <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
          type="org.apache.catalina.UserDatabase"
          description="User database that can be updated and saved"
          factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
          pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <Service name="Catalina">        
  <Connector port="8080" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443" />
  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

  <Engine name="Catalina" defaultHost="localhost">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
         resourceName="UserDatabase"/>
    <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true"
        xmlValidation="false" xmlNamespaceAware="false">
    </Host>
  </Engine>
  </Service>

  <Service name="testing">        
    <Connector port="8090" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="9443" />
    <Connector port="8092" protocol="AJP/1.3" redirectPort="9443" />
    <Engine name="testing" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
         resourceName="UserDatabase"/>
      <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true"
        xmlValidation="false" xmlNamespaceAware="false">
      </Host>
    </Engine>
  </Service>
</Server>

Here, I added new service entry with name testing for web service to deploy it on 8090. The portal's war file is exploded in C:\tomcat-6.0.32\webapps\ROOT directory.

C:\tomcat-6.0.32\conf\Catalina\localhost\ROOT.xml contains below entry for web portal:

<?xml version="1.0" encoding="UTF-8"?>

<Context path="/" docBase="" debug="5" reloadable="false" useHttpOnly="true" crossContext="true">
</Context>

Now, for web service, I created C:\tomcat-6.0.32\conf\testing\localhost\testing.xml with below contents:

<?xml version="1.0" encoding="UTF-8"?>

<Context path="/" docBase="C:/testing" debug="5" reloadable="false" useHttpOnly="true" crossContext="true">
</Context>

And in C:/testing, I just placed abc.htm to see if it is accessible from http://localhost:8090/abc.htm but it didn't work. Instead, it shows me index.html within C:\tomcat-6.0.32\webapps\ROOT directory when I access http://localhost:8090 & http://localhost:8080 gives 404 error.

Here is my catalina.log:

INFO: Deploying configuration descriptor ROOT.xml
Jan 15, 2012 11:16:25 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Jan 15, 2012 11:16:25 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Jan 15, 2012 11:16:25 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/19  config=null
Jan 15, 2012 11:16:25 PM org.apache.catalina.core.StandardService start
INFO: Starting service testing
Jan 15, 2012 11:16:25 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.32
Jan 15, 2012 11:16:25 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor testing.xml
Jan 15, 2012 11:16:25 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory ROOT
Jan 15, 2012 11:16:25 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8090
Jan 15, 2012 11:16:25 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8092
Jan 15, 2012 11:16:25 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/16  config=null
Jan 15, 2012 11:16:25 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 510 ms

Can any one tell me what's going wrong?

UPDATE: I just noticed that if I put the index.html in C:\tomcat-6.0.32\webapps directory, it is accessible at http://localhost:8090 Can any one help me now how to fix this so that I want to place index.html in some other directory?

Thanks!

1
Maybe this could help: wiki.apache.org/tomcat/…Dyonisos
It does not solve my original issue. I think my basecontext path is not proper. But not sure how to fix it...Mike

1 Answers

3
votes

Please check this article

http://www.ntu.edu.sg/home/ehchua/programming/howto/Tomcat_More.html


<Service name="reciver">  
                <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="10"   
                           enableLookups="false" acceptCount="100"  
                           connectionTimeout="10000" disableUploadTimeout="true"   
                           useBodyEncodingForURI="true"/>  
                <Engine name="reciver" defaultHost="localhost" jvmRoute="host1">  
                        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"  
                               resourceName="UserDatabase" />  
                        <Host name="localhost" appBase="webapps" unpackWARs="true"  
                              autoDeploy="false" xmlValidation="false"  
                              xmlNamespaceAware="false">  
                                <Context docBase="browser" path="/browser" reloadable="false"/>  
                        </Host>  
                </Engine>  
        </Service>  
        <Service name="reciver2">  
                <Connector port="8081" maxHttpHeaderSize="8192" maxThreads="10"   
                           enableLookups="false" acceptCount="1"  
                           connectionTimeout="10000" disableUploadTimeout="true"   
                           useBodyEncodingForURI="true" proxyName="example.pt" proxyPort="80"/>  
                <Engine name="reciver2" defaultHost="example_app" jvmRoute="host2">  
                        <Host name="example_app" appBase="test_app/example_app" unpackWARs="true"  
                              autoDeploy="false" xmlValidation="false"  
                              xmlNamespaceAware="false">  
                                <Context docBase="example_app" path="/example_app" reloadable="false"/>  
                        </Host>  
                </Engine>  
</Service>