You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by David Wynter <da...@roamware.com> on 2002/09/28 21:28:40 UTC

Correctly configuring server.xml?

I have now reinstalled Tomcat 4.1.12 a second time and it seem to be fine, I
could see the standard index.jsp on localhost before chaning my server.xml
to show my website to the world.

I have setup a redirect in the Apache index.html.en page to point to my web
application. But I change server.xml to identify my host (www.roamware.com)
and it stops working. I get connection refused. Also now when I shutdown
Tomcat I get a Connection refused exception. I have read the documentation
on server.xml and what I have below seems right, but it doesn't work.

I would also like to know how to stop people seeing the standard index.jsp
on my site?

Also I deleted my webapp and put the war file in the webapps directory. But
it now does not automatically unpack the war as specified. Ideas on what is
wrong?

Here is my server.xml

<!-- Example Server Configuration File -->
<!-- Note that component elements are nested corresponding to their
     parent-child relationships with each other -->

<!-- A "Server" is a singleton element that represents the entire JVM,
     which may contain one or more "Service" instances.  The Server
     listens for a shutdown command on the indicated port.

     Note:  A "Server" is not itself a "Container", so you may not
     define subcomponents such as "Valves" or "Loggers" at this level.
 -->

<Server port="8005" shutdown="SHUTDOWN" debug="0">

  <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig"
            modJk="usr/local/apache2/modules/mod_jk.so" />

  <!-- Uncomment these entries to enable JMX MBeans support -->
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
            debug="0"/>
  <Listener
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
            debug="0"/>

  <!-- Global JNDI resources -->
  <GlobalNamingResources>

    <!-- Test entry for demonstration purposes -->
    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>

    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
       description="User database that can be updated and saved">
    </Resource>
    <ResourceParams name="UserDatabase">
      <parameter>
        <name>factory</name>
        <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
      </parameter>
      <parameter>
        <name>pathname</name>
        <value>conf/tomcat-users.xml</value>
      </parameter>
    </ResourceParams>

  </GlobalNamingResources>

  <!-- A "Service" is a collection of one or more "Connectors" that share
       a single "Container" (and therefore the web applications visible
       within that Container).  Normally, that Container is an "Engine",
       but this is not required.

       Note:  A "Service" is not itself a "Container", so you may not
       define subcomponents such as "Valves" or "Loggers" at this level.
   -->

  <!-- Define the Tomcat Stand-Alone Service -->
  <Service name="Tomcat-Standalone">

    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned.  Each Connector passes requests on to
the
         associated "Container" (normally an Engine) for processing.

         By default, a non-SSL HTTP/1.1 Connector is established on port
8080.
         You can also enable an SSL HTTP/1.1 Connector on port 8443 by
         following the instructions below and uncommenting the second
Connector
         entry.  SSL support requires the following steps (see the SSL
Config
         HOWTO in the Tomcat 4.0 documentation bundle for more detailed
         instructions):
         * Download and install JSSE 1.0.2 or later, and put the JAR files
           into "$JAVA_HOME/jre/lib/ext".
         * Execute:
             %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA
(Windows)
             $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA
(Unix)
           with a password value of "changeit" for both the certificate and
           the keystore itself.

         By default, DNS lookups are enabled when a web application calls
         request.getRemoteHost().  This can have an adverse impact on
         performance, so you can disable it by setting the
         "enableLookups" attribute to "false".  When DNS lookups are
disabled,
         request.getRemoteHost() will return the String version of the
         IP address of the remote client.
    -->


    <!-- Define an AJP 1.3 Connector on port 8009 -->

    <Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
               port="8009" minProcessors="5" maxProcessors="75"
               acceptCount="10" debug="0"/>

    <!-- An Engine represents the entry point (within Catalina) that
processes
         every request.  The Engine implementation for Tomcat stand alone
         analyzes the HTTP headers included with the request, and passes
them
         on to the appropriate Host (virtual host). -->

    <!-- Define the top level container in our container hierarchy -->
    <Engine name="Standalone" defaultHost="www.roamware.com" debug="0">

      <!-- The request dumper valve dumps useful debugging information about
           the request headers and cookies that were received, and the
response
           headers and cookies that were sent, for all requests received by
           this instance of Tomcat.  If you care only about requests to a
           particular virtual host, or a particular application, nest this
           element inside the corresponding <Host> or <Context> entry
instead.

           For a similar mechanism that is portable to all Servlet 2.3
           containers, check out the "RequestDumperFilter" Filter in the
           example application (the source for this filter may be found in
           "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters").

           Request dumping is disabled by default.  Uncomment the following
           element to enable it. -->
      <!--
      <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
      -->

      <!-- Global logger unless overridden at lower levels -->
      <Logger className="org.apache.catalina.logger.FileLogger"
              prefix="catalina_log." suffix=".txt"
              timestamp="true"/>

      <!-- Because this Realm is here, an instance will be shared
globally -->

      <!-- This Realm uses the UserDatabase configured in the global JNDI
           resources under the key "UserDatabase".  Any edits
           that are performed against this UserDatabase are immediately
           available for use by the Realm.  -->
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                 debug="0" resourceName="UserDatabase"/>


      <!-- Define the default virtual host -->
      <Host name="www.roamware.com" debug="0" appBase="webapps"
       unpackWARs="true" autoDeploy="true">

        <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig"
append="true"
            forwardAll="false" modJk="usr/local/apache2/modules/mod_jk.so"
            workersConfig="/usr/local/apache2/conf/workers.properties" />

        <!-- Logger shared by all Contexts related to this virtual host.  By
             default (when using FileLogger), log files are created in the
"logs"
             directory relative to $CATALINA_HOME.  If you wish, you can
specify
             a different directory with the "directory" attribute.  Specify
either a
             relative (to $CATALINA_HOME) or absolute path to the desired
             directory.-->
        <Logger className="org.apache.catalina.logger.FileLogger"
                 directory="logs"  prefix="roamware_log." suffix=".txt"
	        timestamp="true"/>

        <!-- Define properties for each web application.  This is only
needed
             if you want to set non-default properties, or have web
application
             document roots in places other than the virtual host's appBase
             directory.  -->

        <!-- Tomcat Root Context -->
        <Context path="" docBase="ROOT" debug="0"/>

        <!-- Tomcat Roamware Context -->
        <!-- To support the path="" we have a symbolic link called rwsite in
ROOT to rwsite -->

        <Context path="/rwsite" docBase="rwsite" debug="0"/>

      </Host>

    </Engine>

  </Service>

  <!-- The MOD_WEBAPP connector is used to connect Apache 1.3 with Tomcat
4.0
       as its servlet container. Please read the README.txt file coming with
       the WebApp Module distribution on how to build it.
       (Or check out the "jakarta-tomcat-connectors/webapp" CVS repository)

       To configure the Apache side, you must ensure that you have the
       "ServerName" and "Port" directives defined in "httpd.conf".  Then,
       lines like these to the bottom of your "httpd.conf" file:

         LoadModule webapp_module libexec/mod_webapp.so
         WebAppConnection warpConnection warp localhost:8008
         WebAppDeploy examples warpConnection /examples/

       The next time you restart Apache (after restarting Tomcat, if needed)
       the connection will be established, and all applications you make
       visible via "WebAppDeploy" directives can be accessed through Apache.
  -->

  <!-- Define an Apache-Connector Service -->
<!--
  <Service name="Tomcat-Apache">

    <Connector className="org.apache.catalina.connector.warp.WarpConnector"
     port="8008" minProcessors="5" maxProcessors="75"
     enableLookups="true" appBase="webapps"
     acceptCount="10" debug="0"/>

    <Engine className="org.apache.catalina.connector.warp.WarpEngine"
     name="Apache" debug="0">

      <Logger className="org.apache.catalina.logger.FileLogger"
              prefix="apache_log." suffix=".txt"
              timestamp="true"/>

      <Realm className="org.apache.catalina.realm.MemoryRealm" />

    </Engine>

  </Service>
-->

</Server>

David Wynter

roamware Ltd.
(+44) (0) 208 922 7539 B.
(+44) (0) 7879 605 706 M.
david@roamware.com


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: Correctly configuring server.xml?

Posted by Jacob Kjome <ho...@visi.com>.
Hi David,

You app is not getting auto-deployed because you defined a context in the 
server.xml.  If you didn't define a context, Tomcat would expand the .war 
to a directory of the same name and create a context for you.   You have a 
couple of options...

1.  Don't define your context.  You don't seem to be doing anything really 
special so letting Tomcat auto-generate your context should be just 
fine.  Specifically, remove the following entry from your server.xml...
          <Context path="/rwsite" docBase="rwsite" debug="0"/>

2.  Define the context, like you have, but before tomcat is started, expand 
your .war file to a directory named "rwsite" in webapps.  You can use any 
zip utility to do this since .war files are compressed using the zip 
format.  Now start your server and things will work just fine.

3.  Use a context configuration file to define a <Context> element.  Look 
at the "admin.xml" and "manager.xml" files in the webapps directory for an 
example.  You can do a couple of things here:
     a.  leave the docBase the way you have it and when hot-deploying, copy 
both the directory *and* the context configuration file at the same time to 
the webapps directory
     b.  just copy the context configuration file to the webapps directory 
and have your docBase outside the webapps directory.  In this case, your 
docbase will need to be the fully qualified path to the directory 
containing your webapp.


I'm not sure about the index.html.en stuff.  I think Apache supports that 
sort of localization, but I'm not sure Tomcat does.  If it does, that would 
be cool!

Try that and see if most of your issues go away.

Jake

At 08:28 PM 9/28/2002 +0100, you wrote:
>I have now reinstalled Tomcat 4.1.12 a second time and it seem to be fine, I
>could see the standard index.jsp on localhost before chaning my server.xml
>to show my website to the world.
>
>I have setup a redirect in the Apache index.html.en page to point to my web
>application. But I change server.xml to identify my host (www.roamware.com)
>and it stops working. I get connection refused. Also now when I shutdown
>Tomcat I get a Connection refused exception. I have read the documentation
>on server.xml and what I have below seems right, but it doesn't work.
>
>I would also like to know how to stop people seeing the standard index.jsp
>on my site?
>
>Also I deleted my webapp and put the war file in the webapps directory. But
>it now does not automatically unpack the war as specified. Ideas on what is
>wrong?
>
>Here is my server.xml
>
><!-- Example Server Configuration File -->
><!-- Note that component elements are nested corresponding to their
>      parent-child relationships with each other -->
>
><!-- A "Server" is a singleton element that represents the entire JVM,
>      which may contain one or more "Service" instances.  The Server
>      listens for a shutdown command on the indicated port.
>
>      Note:  A "Server" is not itself a "Container", so you may not
>      define subcomponents such as "Valves" or "Loggers" at this level.
>  -->
>
><Server port="8005" shutdown="SHUTDOWN" debug="0">
>
>   <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig"
>             modJk="usr/local/apache2/modules/mod_jk.so" />
>
>   <!-- Uncomment these entries to enable JMX MBeans support -->
>   <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
>             debug="0"/>
>   <Listener
>className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
>             debug="0"/>
>
>   <!-- Global JNDI resources -->
>   <GlobalNamingResources>
>
>     <!-- Test entry for demonstration purposes -->
>     <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
>
>     <!-- Editable user database that can also be used by
>          UserDatabaseRealm to authenticate users -->
>     <Resource name="UserDatabase" auth="Container"
>               type="org.apache.catalina.UserDatabase"
>        description="User database that can be updated and saved">
>     </Resource>
>     <ResourceParams name="UserDatabase">
>       <parameter>
>         <name>factory</name>
>         <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
>       </parameter>
>       <parameter>
>         <name>pathname</name>
>         <value>conf/tomcat-users.xml</value>
>       </parameter>
>     </ResourceParams>
>
>   </GlobalNamingResources>
>
>   <!-- A "Service" is a collection of one or more "Connectors" that share
>        a single "Container" (and therefore the web applications visible
>        within that Container).  Normally, that Container is an "Engine",
>        but this is not required.
>
>        Note:  A "Service" is not itself a "Container", so you may not
>        define subcomponents such as "Valves" or "Loggers" at this level.
>    -->
>
>   <!-- Define the Tomcat Stand-Alone Service -->
>   <Service name="Tomcat-Standalone">
>
>     <!-- A "Connector" represents an endpoint by which requests are received
>          and responses are returned.  Each Connector passes requests on to
>the
>          associated "Container" (normally an Engine) for processing.
>
>          By default, a non-SSL HTTP/1.1 Connector is established on port
>8080.
>          You can also enable an SSL HTTP/1.1 Connector on port 8443 by
>          following the instructions below and uncommenting the second
>Connector
>          entry.  SSL support requires the following steps (see the SSL
>Config
>          HOWTO in the Tomcat 4.0 documentation bundle for more detailed
>          instructions):
>          * Download and install JSSE 1.0.2 or later, and put the JAR files
>            into "$JAVA_HOME/jre/lib/ext".
>          * Execute:
>              %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA
>(Windows)
>              $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA
>(Unix)
>            with a password value of "changeit" for both the certificate and
>            the keystore itself.
>
>          By default, DNS lookups are enabled when a web application calls
>          request.getRemoteHost().  This can have an adverse impact on
>          performance, so you can disable it by setting the
>          "enableLookups" attribute to "false".  When DNS lookups are
>disabled,
>          request.getRemoteHost() will return the String version of the
>          IP address of the remote client.
>     -->
>
>
>     <!-- Define an AJP 1.3 Connector on port 8009 -->
>
>     <Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
>                port="8009" minProcessors="5" maxProcessors="75"
>                acceptCount="10" debug="0"/>
>
>     <!-- An Engine represents the entry point (within Catalina) that
>processes
>          every request.  The Engine implementation for Tomcat stand alone
>          analyzes the HTTP headers included with the request, and passes
>them
>          on to the appropriate Host (virtual host). -->
>
>     <!-- Define the top level container in our container hierarchy -->
>     <Engine name="Standalone" defaultHost="www.roamware.com" debug="0">
>
>       <!-- The request dumper valve dumps useful debugging information about
>            the request headers and cookies that were received, and the
>response
>            headers and cookies that were sent, for all requests received by
>            this instance of Tomcat.  If you care only about requests to a
>            particular virtual host, or a particular application, nest this
>            element inside the corresponding <Host> or <Context> entry
>instead.
>
>            For a similar mechanism that is portable to all Servlet 2.3
>            containers, check out the "RequestDumperFilter" Filter in the
>            example application (the source for this filter may be found in
>            "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters").
>
>            Request dumping is disabled by default.  Uncomment the following
>            element to enable it. -->
>       <!--
>       <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
>       -->
>
>       <!-- Global logger unless overridden at lower levels -->
>       <Logger className="org.apache.catalina.logger.FileLogger"
>               prefix="catalina_log." suffix=".txt"
>               timestamp="true"/>
>
>       <!-- Because this Realm is here, an instance will be shared
>globally -->
>
>       <!-- This Realm uses the UserDatabase configured in the global JNDI
>            resources under the key "UserDatabase".  Any edits
>            that are performed against this UserDatabase are immediately
>            available for use by the Realm.  -->
>       <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
>                  debug="0" resourceName="UserDatabase"/>
>
>
>       <!-- Define the default virtual host -->
>       <Host name="www.roamware.com" debug="0" appBase="webapps"
>        unpackWARs="true" autoDeploy="true">
>
>         <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig"
>append="true"
>             forwardAll="false" modJk="usr/local/apache2/modules/mod_jk.so"
>             workersConfig="/usr/local/apache2/conf/workers.properties" />
>
>         <!-- Logger shared by all Contexts related to this virtual host.  By
>              default (when using FileLogger), log files are created in the
>"logs"
>              directory relative to $CATALINA_HOME.  If you wish, you can
>specify
>              a different directory with the "directory" attribute.  Specify
>either a
>              relative (to $CATALINA_HOME) or absolute path to the desired
>              directory.-->
>         <Logger className="org.apache.catalina.logger.FileLogger"
>                  directory="logs"  prefix="roamware_log." suffix=".txt"
>                 timestamp="true"/>
>
>         <!-- Define properties for each web application.  This is only
>needed
>              if you want to set non-default properties, or have web
>application
>              document roots in places other than the virtual host's appBase
>              directory.  -->
>
>         <!-- Tomcat Root Context -->
>         <Context path="" docBase="ROOT" debug="0"/>
>
>         <!-- Tomcat Roamware Context -->
>         <!-- To support the path="" we have a symbolic link called rwsite in
>ROOT to rwsite -->
>
>         <Context path="/rwsite" docBase="rwsite" debug="0"/>
>
>       </Host>
>
>     </Engine>
>
>   </Service>
>
>   <!-- The MOD_WEBAPP connector is used to connect Apache 1.3 with Tomcat
>4.0
>        as its servlet container. Please read the README.txt file coming with
>        the WebApp Module distribution on how to build it.
>        (Or check out the "jakarta-tomcat-connectors/webapp" CVS repository)
>
>        To configure the Apache side, you must ensure that you have the
>        "ServerName" and "Port" directives defined in "httpd.conf".  Then,
>        lines like these to the bottom of your "httpd.conf" file:
>
>          LoadModule webapp_module libexec/mod_webapp.so
>          WebAppConnection warpConnection warp localhost:8008
>          WebAppDeploy examples warpConnection /examples/
>
>        The next time you restart Apache (after restarting Tomcat, if needed)
>        the connection will be established, and all applications you make
>        visible via "WebAppDeploy" directives can be accessed through Apache.
>   -->
>
>   <!-- Define an Apache-Connector Service -->
><!--
>   <Service name="Tomcat-Apache">
>
>     <Connector className="org.apache.catalina.connector.warp.WarpConnector"
>      port="8008" minProcessors="5" maxProcessors="75"
>      enableLookups="true" appBase="webapps"
>      acceptCount="10" debug="0"/>
>
>     <Engine className="org.apache.catalina.connector.warp.WarpEngine"
>      name="Apache" debug="0">
>
>       <Logger className="org.apache.catalina.logger.FileLogger"
>               prefix="apache_log." suffix=".txt"
>               timestamp="true"/>
>
>       <Realm className="org.apache.catalina.realm.MemoryRealm" />
>
>     </Engine>
>
>   </Service>
>-->
>
></Server>
>
>David Wynter
>
>roamware Ltd.
>(+44) (0) 208 922 7539 B.
>(+44) (0) 7879 605 706 M.
>david@roamware.com
>
>
>--
>To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>