You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by Forrest Xia <fo...@gmail.com> on 2010/01/04 10:04:24 UTC

About server.xml support and app-per-port sample breaks on G 2.2

I did a simple version change(change to 2.2:) to the app-per-port sample and
make it packaged as a plugin, then try to install and start it in G 2.2.

It fails, I understand the failure on tomcat assembly is caused by the new
server.xml support, but don't understand why it fails on Jetty assembly as
well.

What I am trying is to update app-per-port sample to demo the new server.xml
support feature(originated from
http://old.nabble.com/Finishing-up-tomcat-server.xml-configuration-work...-ts24471974s134.html#a24471974).


My thought is to modify the server.xml directly to add an additional
<Service> with different connectors and engine, so that the app-per-port
samples can achieve the same result as before: war1 on a port, war2 on
another port, both in the same server instance.

Unfortunately, it does not work on G 2.2 either. Cause TomcatServerGBean
would throw IllegalStateException when more than one service defined in
server.xml.

So far, my understanding to the server.xml support feature, which cannot do
these things:
1. define multiple <Service>
2. define <context>
3. define jndi resources
4. define realms

Which can do:
1. add additional connectors
2. add additional hosts

Re: About server.xml support and app-per-port sample breaks on G 2.2

Posted by Forrest Xia <fo...@gmail.com>.
<?xml version='1.0' encoding='utf-8'?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<!-- this is the basic tomcat server.xml -->

<!-- Note:  A "Server" is not itself a "Container", so you may not
    define subcomponents such as "Valves" at this level.
    Documentation at /docs/config/server.html
-->
<Server port="8005" shutdown="SHUTDOWN">

    <!--APR library loader. Documentation at /docs/apr.html -->
    <Listener className="org.apache.catalina.core.AprLifecycleListener"
SSLEngine="on"/>
    <!--Initialize Jasper prior to webapps are loaded. Documentation at
/docs/jasper-howto.html -->
    <Listener className="org.apache.catalina.core.JasperListener"/>
    <!-- JMX Support for the Tomcat server. Documentation at
/docs/non-existent.html -->
    <Listener
className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
    <Listener
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>

    <!--
        Geronimo uses its own JNDI implementation, globalNamingResources
configurations in
        the server.xml are not supported, please define them in the Geronimo
deployment plans
    -->

    <!-- A "Service" is a collection of one or more "Connectors" that share
        a single "Container" Note:  A "Service" is not itself a "Container",
        so you may not define subcomponents such as "Valves" at this level.
        Documentation at /docs/config/service.html
    -->
    <Service name="Catalina">
        <Executor
className="org.apache.geronimo.tomcat.TomcatExecutorWrapper"
                  name="DefaultThreadPool"

executor-ref="?name=DefaultThreadPool#java.util.concurrent.Executor"/>


        <!--The connectors can use a shared executor, you can define one or
more named thread pools-->
        <!--
        <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
            maxThreads="150" minSpareThreads="4"/>
        -->


        <!-- A "Connector" represents an endpoint by which requests are
received
             and responses are returned. Documentation at :
             Java HTTP Connector: /docs/config/http.html (blocking &
non-blocking)
             Java AJP  Connector: /docs/config/ajp.html
             APR (HTTP/AJP) Connector: /docs/apr.html
             Define a non-SSL HTTP/1.1 Connector on port 8080
        -->
        <Connector name="TomcatWebConnector"
                   port="${HTTPPort + PortOffset}"
                   host="${ServerHostname}"
                   protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="${HTTPSPort + PortOffset}"
                   executor="DefaultThreadPool"/>
        <!-- A "Connector" using the shared thread pool-->
        <!--
        <Connector executor="tomcatThreadPool"
                   port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
        -->
        <!-- Define a SSL HTTP/1.1 Connector on port 8443
   This connector uses the JSSE configuration, when using APR, the
   connector should be using the OpenSSL style configuration
   described in the APR documentation -->
        <Connector name="TomcatWebSSLConnector"
                   port="${HTTPSPort + PortOffset}"
                   host="${ServerHostname}"
                   protocol="HTTP/1.1"
                   SSLEnabled="true"
                   maxThreads="150"
                   scheme="https"
                   secure="true"
                   clientAuth="false"
                   keystoreFile="../security/keystores/geronimo-default"
                   keystorePass="secret"
                   sslProtocol="TLS"
                   executor="DefaultThreadPool"/>

        <!-- Define an AJP 1.3 Connector on port 8009 -->
        <Connector name="TomcatAJPConnector"
                   port="${AJPPort + PortOffset}"
                   host="${ServerHostname}"
                   protocol="AJP/1.3"
                   redirectPort="${HTTPSPort + PortOffset}"
                   executor="DefaultThreadPool"/>

<Connector name="TomcatWebConnector2"
                   port="${HTTPPort + PortOffset + 10}"
                   host="${ServerHostname}"
                   protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="${HTTPSPort + PortOffset + 10}"
                   executor="DefaultThreadPool"/>

        <Connector name="TomcatWebSSLConnector2"
                   port="${HTTPSPort + PortOffset + 10}"
                   host="${ServerHostname}"
                   protocol="HTTP/1.1"
                   SSLEnabled="true"
                   maxThreads="150"
                   scheme="https"
                   secure="true"
                   clientAuth="false"
                   keystoreFile="../security/keystores/geronimo-default"
                   keystorePass="secret"
                   sslProtocol="TLS"
                   executor="DefaultThreadPool"/>

        <Connector name="TomcatAJPConnector2"
                   port="${AJPPort + PortOffset + 10}"
                   host="${ServerHostname}"
                   protocol="AJP/1.3"
                   redirectPort="${HTTPSPort + PortOffset}"
                   executor="DefaultThreadPool"/>


        <!-- 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).
     Documentation at /docs/config/engine.html -->

        <!-- You should set jvmRoute to support load-balancing via AJP ie :
        <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
        -->
        <Engine name="Catalina" defaultHost="${ServerHostname}">

            <!--For clustering, please take a look at documentation at:
         /docs/cluster-howto.html  (simple how to)
         /docs/config/cluster.html (reference documentation) -->
            <!--
            <Cluster
className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
            -->

            <!-- The request dumper valve dumps useful debugging information
about
         the request and response data received and sent by Tomcat.
         Documentation at: /docs/config/valve.html -->
            <!--
            <Valve
className="org.apache.catalina.valves.RequestDumperValve"/>
            -->

            <!-- Define the default virtual host
                Note: XML Schema validation will not work with Xerces 2.2.
            -->
            <Host name="${ServerHostname}" appBase=""
                  unpackWARs="true" autoDeploy="true"
                  xmlValidation="false" xmlNamespaceAware="false">

                <!--
                <Cluster
className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
                    <Manager
className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false" notifyListenersOnReplication="true"
name="${clusterName}" channelSendOptions="6" mapSendOptions="6"/>
                    <Channel
className="org.apache.catalina.tribes.group.GroupChannel">
                        <Membership
className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4" port="45564" frequency="500" dropTime="3000" />
                        <Receiver
className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto" port="4000" autoBind="100" selectorTimeout="5000"
maxThreads="6" />
                        <Sender
className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
                            <Transport
className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" />
                        </Sender>
                        <Interceptor
className="org.apache.geronimo.tomcat.interceptor.DisableMcastInterceptor"
/>
                        <Interceptor
className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"
interval="60"/>
                        <Interceptor
className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">
                            <Member port="5002" securePort="-1"
host="9.186.10.60" domain="test-domain"
UniqueId="{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}" />
                        </Interceptor>
                        <Interceptor
className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"
/>
                        <Interceptor
className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"
/>
                    </Channel>
                    <Valve
className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;" />
                    <Valve
className="org.apache.catalina.ha.session.JvmRouteBinderValve" />
                    <ClusterListener
className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"
/>
                    <ClusterListener
className="org.apache.catalina.ha.session.ClusterSessionListener" />
                </Cluster>
                -->

                <Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
                       prefix="${ServerHostname}_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
                <!-- SingleSignOn valve, share authentication between web
applications
             Documentation at: /docs/config/valve.html -->
                <!--
                <Valve
className="org.apache.catalina.authenticator.SingleSignOn" />
                -->

                <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html -->
                <!--
                <Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
                       prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
                -->
<Context path="/app-per-port-war1"
docBase="/home/forrestxm/localbuild/rsaws/gsamplestrunk/samples/app-per-port/app-per-port-war1/target/app-per-port-war1-2.2"
reloadable="true" />
            </Host>
        </Engine>
    </Service>


<!-- Not work for G 2.2 tomcat assembly
<Service name="inst2">
        <Executor
className="org.apache.geronimo.tomcat.TomcatExecutorWrapper"
                  name="DefaultThreadPool"

executor-ref="?name=DefaultThreadPool#java.util.concurrent.Executor"/>



        <Connector name="TomcatWebConnector2"
                   port="${HTTPPort + PortOffset + 10}"
                   host="${ServerHostname}"
                   protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="${HTTPSPort + PortOffset + 10}"
                   executor="DefaultThreadPool"/>

        <Connector name="TomcatWebSSLConnector2"
                   port="${HTTPSPort + PortOffset + 10}"
                   host="${ServerHostname}"
                   protocol="HTTP/1.1"
                   SSLEnabled="true"
                   maxThreads="150"
                   scheme="https"
                   secure="true"
                   clientAuth="false"
                   keystoreFile="../security/keystores/geronimo-default"
                   keystorePass="secret"
                   sslProtocol="TLS"
                   executor="DefaultThreadPool"/>

        <Connector name="TomcatAJPConnector2"
                   port="${AJPPort + PortOffset + 10}"
                   host="${ServerHostname}"
                   protocol="AJP/1.3"
                   redirectPort="${HTTPSPort + PortOffset}"
                   executor="DefaultThreadPool"/>

        <Engine name="inst2engine" defaultHost="${ServerHostname}">


            <Host name="${ServerHostname}" appBase=""
                  unpackWARs="true" autoDeploy="true"
                  xmlValidation="false" xmlNamespaceAware="false">



                <Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
                       prefix="${ServerHostname}_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>

<Context path="/app-per-port-war2"
docBase="/home/forrestxm/localbuild/rsaws/gsamplestrunk/samples/app-per-port/app-per-port-war2/target/app-per-port-war2-2.2"
reloadable="true" />
            </Host>
        </Engine>
    </Service>-->
</Server>

Re: About server.xml support and app-per-port sample breaks on G 2.2

Posted by Ivan <xh...@gmail.com>.
Hi, Forrest:
    Could you show us your server.xml file and the error messages you got ?

2010/1/4 Forrest Xia <fo...@gmail.com>

> Correct one thing, the app-per-port plugin for jetty works fine. My
> previous failure is caused by my OS limit -- too many open files error :-)
>
> Forrest
>



-- 
Ivan

Re: About server.xml support and app-per-port sample breaks on G 2.2

Posted by Forrest Xia <fo...@gmail.com>.
Correct one thing, the app-per-port plugin for jetty works fine. My previous
failure is caused by my OS limit -- too many open files error :-)

Forrest

Re: About server.xml support and app-per-port sample breaks on G 2.2

Posted by Ivan <xh...@gmail.com>.
Hi, Forrest:
   There might be a bug there, for workaround it, please add segment below
to the config.xml file :
   ->
   <gbean name="TomcatWebContainer">
            <attribute name="serviceName">Catalina</attribute>
        </gbean>
        <gbean name="TomcatEngine">
            <attribute name="serviceName">Catalina</attribute>
        </gbean>
        <gbean name="connectorWrapperGBeanStarter" load="false"/>
   <-
   After that, you could start up the server, but you could not edit those
connectors created before the server starting, however, you are still able
to add new connectors.
   Thanks for reporting this !

2010/1/5 Forrest Xia <fo...@gmail.com>

>
>
> On Mon, Jan 4, 2010 at 5:36 PM, Ivan <xh...@gmail.com> wrote:
>
>>
>>
>> 2010/1/4 Forrest Xia <fo...@gmail.com>
>>
>>> I did a simple version change(change to 2.2:) to the app-per-port sample
>>> and make it packaged as a plugin, then try to install and start it in G 2.2.
>>>
>>>
>>> It fails, I understand the failure on tomcat assembly is caused by the
>>> new server.xml support, but don't understand why it fails on Jetty assembly
>>> as well.
>>>
>>> What I am trying is to update app-per-port sample to demo the new
>>> server.xml support feature(originated from
>>> http://old.nabble.com/Finishing-up-tomcat-server.xml-configuration-work...-ts24471974s134.html#a24471974).
>>>
>>>
>>> My thought is to modify the server.xml directly to add an additional
>>> <Service> with different connectors and engine, so that the app-per-port
>>> samples can achieve the same result as before: war1 on a port, war2 on
>>> another port, both in the same server instance.
>>>
>>> Unfortunately, it does not work on G 2.2 either. Cause TomcatServerGBean
>>> would throw IllegalStateException when more than one service defined in
>>> server.xml.
>>>
>>> So far, my understanding to the server.xml support feature, which cannot
>>> do these things:
>>> 1. define multiple <Service>
>>> 2. define <context>
>>> 3. define jndi resources
>>> 4. define realms
>>>
>>
>>  The item 2,3,4 are NOT supported, item 1 should be supported.
>>
>
> You can try to define two <Service> , and see what happens when starting
> the server. There will be an IllegalStateException thrown out. The code lays
> in TomcatServerGBean.java.
>
> If multiple services are supposed to support, I will open a JIRA to track
> it. thanks!
>
> Forrest
>
>
>
>


-- 
Ivan

Re: About server.xml support and app-per-port sample breaks on G 2.2

Posted by Forrest Xia <fo...@gmail.com>.
On Mon, Jan 4, 2010 at 5:36 PM, Ivan <xh...@gmail.com> wrote:

>
>
> 2010/1/4 Forrest Xia <fo...@gmail.com>
>
>> I did a simple version change(change to 2.2:) to the app-per-port sample
>> and make it packaged as a plugin, then try to install and start it in G 2.2.
>>
>>
>> It fails, I understand the failure on tomcat assembly is caused by the new
>> server.xml support, but don't understand why it fails on Jetty assembly as
>> well.
>>
>> What I am trying is to update app-per-port sample to demo the new
>> server.xml support feature(originated from
>> http://old.nabble.com/Finishing-up-tomcat-server.xml-configuration-work...-ts24471974s134.html#a24471974).
>>
>>
>> My thought is to modify the server.xml directly to add an additional
>> <Service> with different connectors and engine, so that the app-per-port
>> samples can achieve the same result as before: war1 on a port, war2 on
>> another port, both in the same server instance.
>>
>> Unfortunately, it does not work on G 2.2 either. Cause TomcatServerGBean
>> would throw IllegalStateException when more than one service defined in
>> server.xml.
>>
>> So far, my understanding to the server.xml support feature, which cannot
>> do these things:
>> 1. define multiple <Service>
>> 2. define <context>
>> 3. define jndi resources
>> 4. define realms
>>
>
>  The item 2,3,4 are NOT supported, item 1 should be supported.
>

You can try to define two <Service> , and see what happens when starting the
server. There will be an IllegalStateException thrown out. The code lays in
TomcatServerGBean.java.

If multiple services are supposed to support, I will open a JIRA to track
it. thanks!

Forrest

Re: About server.xml support and app-per-port sample breaks on G 2.2

Posted by Ivan <xh...@gmail.com>.
2010/1/4 Forrest Xia <fo...@gmail.com>

> I did a simple version change(change to 2.2:) to the app-per-port sample
> and make it packaged as a plugin, then try to install and start it in G 2.2.
>
>
> It fails, I understand the failure on tomcat assembly is caused by the new
> server.xml support, but don't understand why it fails on Jetty assembly as
> well.
>
> What I am trying is to update app-per-port sample to demo the new
> server.xml support feature(originated from
> http://old.nabble.com/Finishing-up-tomcat-server.xml-configuration-work...-ts24471974s134.html#a24471974).
>
>
> My thought is to modify the server.xml directly to add an additional
> <Service> with different connectors and engine, so that the app-per-port
> samples can achieve the same result as before: war1 on a port, war2 on
> another port, both in the same server instance.
>
> Unfortunately, it does not work on G 2.2 either. Cause TomcatServerGBean
> would throw IllegalStateException when more than one service defined in
> server.xml.
>
> So far, my understanding to the server.xml support feature, which cannot do
> these things:
> 1. define multiple <Service>
> 2. define <context>
> 3. define jndi resources
> 4. define realms
>

 The item 2,3,4 are NOT supported, item 1 should be supported.


>
> Which can do:
> 1. add additional connectors
> 2. add additional hosts
>

  Yes, it also supports Valve and Cluster configurations.



-- 
Ivan