Hi all,

On Tue, Nov 4, 2014 at 10:31 AM, Bridger Dyson-Smith <bdysonsm...@gmail.com>
wrote:

> My apologies -- I accidentally clicked 'send'. :/
>
> On Tue, Nov 4, 2014 at 10:12 AM, Bridger Dyson-Smith <
> bdysonsm...@gmail.com> wrote:
>
>> Hi all,
>>
>> I know that there aren't many Tomcat users on this list, and that I'm
>> echoing previous emails to the list but I wanted to see if anyone here had
>> encountered this issue. Some pieces of this may be steps forward to solving
>> problems that others on the list have mentioned; I've cc'd you in the hopes
>> that the information is helpful.
>>
>> Tomcat can be configured to multiple services, on varying ports, in the
>> $TOMCAT_HOME/conf/server.xml file; e.g. [1]. I have two nearly-identical
>> WARs in the following directory structure:
>>
>>
> `--> tree -L 1 apache-tomcat-7.0.53
> apache-tomcat-7.0.53
> ├── LICENSE
> ├── NOTICE
> ├── RELEASE-NOTES
> ├── RUNNING.txt
> ├── bin
> ├── conf
> ├── lib
> ├── logs
> ├── logs2
> ├── temp
> ├── webapps
> ├── webapps2
> └── work
>
> `--> tree -L 1 webapps
> webapps
> ├── BaseX79
> ├── BaseX79.war
> ├── ROOT
> ├── docs
> ├── examples
> ├── fop
> ├── fop.war
> ├── host-manager
> ├── imagemanip
> ├── imagemanip.war
> ├── lukeall-1.0.1.jar
> ├── manager
> ├── retailer
> ├── retailer.war
> ├── saxon
> ├── saxon.war
> ├── spc
> ├── spc.war
> ├── static
> ├── utk-xtf
> ├── utk-xtf-frameless
> ├── utk-xtf-frameless.war
> └── utk-xtf.war
>
> `--> tree -L 1 webapps2
> webapps2
> ├── ROOT
> ├── bX79
> ├── bX79.war
> ├── docs
> ├── examples
> ├── host-manager
> └── manager
>
> Now, the problem is that I get a port conflict message from Tomcat [2] and
> only the first WAR ($TOMCAT_HOME/webapps/BaseX79) loads. E.g. there are
> some minor textual changes between the two restxq.xqm files.
>
> I've tried to add a .basex file (webapps2/bX79/.basex) that specifies a
> different port, and I've also tried adding that information in
> webapps2/bX79/WEB-INF/web.xml as <context-params> [3].
>
> I'm planning to email the Tomcat-users list to see if someone there can
> shed more light on this; i.e. is this a problem with the way that
> server.xml is configured, etc. However I was also curious if anyone here
> had any thoughts or suggestions on this setup. Am I missing a step; e.g.
> should I be incorporating a compilation step - generating a WAR file - or
> something else?
>
> I apologize for the breadth of the questions - I've jumped into the middle
> of a problem and now I'm trying to work my back out to the start. Thank you
> for your time & trouble.
>
> Best,
> Bridger
>
>
>
>> [1] example server.xml:
>>    <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.GlobalResourcesLifecycleListener"/>
>>    <Listener
>> className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
>>    <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"
>>                  maxThreads="125" minSpareThreads="25"
>> maxSpareThreads="75"
>>                  enableLookups="false" acceptCount="100"/>
>>       <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
>>       <Engine name="Catalina" defaultHost="localhost">
>>          <Realm className="org.apache.catalina.realm.LockOutRealm">
>>             <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
>>                    resourceName="UserDatabase"/>
>>          </Realm>
>>          <Host name="localhost"
>>                appBase="webapps"
>>                unpackWARs="true"
>>                autoDeploy="true">
>>             <Valve className="org.apache.catalina.valves.AccessLogValve"
>>                    directory="logs"
>>                    prefix="localhost_access_log."
>>                    suffix=".txt"
>>                    pattern="%h %l %u %t &#34;%r&#34; %s %b"/>
>>          </Host>
>>       </Engine>
>>    </Service>
>>    <Service name="Catalina2">
>>       <Connector port="18080"
>>                  protocol="HTTP/1.1"
>>                  connectionTimeout="20000"
>>                  redirectPort="18443"/>
>>       <Connector port="18009" protocol="AJP/1.3" redirectPort="18443"/>
>>       <Engine name="Catalina2" defaultHost="localhost">
>>          <Realm className="org.apache.catalina.realm.LockOutRealm">
>>             <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
>>                resourceName="UserDatabase"/>
>>          </Realm>
>>          <Host name="localhost"
>>                appBase="webapps2"
>>                unpackWARS="true"
>>                autoDeploy="true">
>>             <Valve className="org.apache.catalina.valves.AccessLogValve"
>>                    directory="logs2"
>>                    prefix="localhost_Cat2_access_log."
>>                    suffix=".txt"
>>                    pattern="%h %l %u %t &amp;quot;%r&amp;quot; %s %b"/>
>>          </Host>
>>       </Engine>
>>    </Service>
>> </Server>
>>
>
> [2] $TOMCAT_HOME/logs/catalina.out:
> INFO: Starting service Catalina2
> Nov 03, 2014 9:08:30 PM org.apache.catalina.core.StandardEngine
> startInternal
> INFO: Starting Servlet Engine: Apache Tomcat/7.0.53
> Nov 03, 2014 9:08:30 PM org.apache.catalina.startup.HostConfig deployWAR
> INFO: Deploying web application archive
> /usr/home/bridger/src/apache-tomcat-7.0.53/webapps2/bX79.war
> Nov 03, 2014 9:08:31 PM org.apache.catalina.core.StandardContext
> loadOnStartup
> *SEVERE: Servlet /bX79 threw load() exception*
> java.net.BindException: Address already in use
>     at java.net.PlainSocketImpl.socketBind(Native Method)
>     at
> java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
>     at java.net.ServerSocket.bind(ServerSocket.java:376)
>     at java.net.ServerSocket.bind(ServerSocket.java:330)
>     at org.basex.BaseXServer.<init>(BaseXServer.java:110)
>     at org.basex.http.HTTPContext.init(HTTPContext.java:379)
>     at org.basex.http.BaseXServlet.init(BaseXServlet.java:34)
>     at
> org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
>     at
> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
>     at
> org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
>     at
> org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5210)
>     at
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5493)
>     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>     at
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
>     at
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
>     at
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
>     at
> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1073)
>     at
> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
>     at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>     at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>     at java.lang.Thread.run(Thread.java:745)
>
> Nov 03, 2014 9:08:31 PM org.apache.catalina.startup.HostConfig
> deployDirectory
> INFO: Deploying web application directory
> /usr/home/bridger/src/apache-tomcat-7.0.53/webapps2/examples
> Nov 03, 2014 9:08:31 PM org.apache.catalina.core.ApplicationContext log
> INFO: ContextListener: contextInitialized()
> Nov 03, 2014 9:08:31 PM org.apache.catalina.core.ApplicationContext log
> INFO: SessionListener: contextInitialized()
> Nov 03, 2014 9:08:31 PM org.apache.catalina.core.ApplicationContext log
> INFO: ContextListener:
> attributeAdded('org.apache.jasper.compiler.TldLocationsCache',
> 'org.apache.jasper.compiler.TldLocationsCache@5f0f8770')
> Nov 03, 2014 9:08:31 PM org.apache.catalina.startup.HostConfig
> deployDirectory
> INFO: Deploying web application directory
> /usr/home/bridger/src/apache-tomcat-7.0.53/webapps2/docs
> Nov 03, 2014 9:08:31 PM org.apache.catalina.startup.HostConfig
> deployDirectory
> INFO: Deploying web application directory
> /usr/home/bridger/src/apache-tomcat-7.0.53/webapps2/ROOT
> Nov 03, 2014 9:08:31 PM org.apache.catalina.startup.HostConfig
> deployDirectory
> INFO: Deploying web application directory
> /usr/home/bridger/src/apache-tomcat-7.0.53/webapps2/manager
> Nov 03, 2014 9:08:31 PM org.apache.catalina.startup.HostConfig
> deployDirectory
> INFO: Deploying web application directory
> /usr/home/bridger/src/apache-tomcat-7.0.53/webapps2/host-manager
> Nov 03, 2014 9:08:31 PM org.apache.coyote.AbstractProtocol start
> INFO: Starting ProtocolHandler ["http-bio-18080"]
> Nov 03, 2014 9:08:31 PM org.apache.coyote.AbstractProtocol start
> INFO: Starting ProtocolHandler ["ajp-bio-18009"]
> Nov 03, 2014 9:08:31 PM org.apache.catalina.startup.Catalina start
> INFO: Server startup in 7893 ms
>
> [3] $TOMCAT_HOME/webapps2/bX79/WEB-INF/web.xml
>   <context-param>
>     <param-name>org.basex.port</param-name>
>     <param-value>8984</param-value>
>   </context-param>
>   <context-param>
>     <param-name>org.basex.serverport</param-name>
>     <param-value>8984</param-value>
>   </context-param>
>
> After poking at this some more, I'm pretty much stumped. I have
$webapp/WEB-INF/web.xml files that specify different ports for everything
that isn't configured in $CATALINA_HOME/conf/server.xml, including
org.basex.stopport. But no matter what, I get the same error when Tomcat
starts to load the second .war:

INFO: Starting service Catalina2

Nov 06, 2014 9:50:03 PM org.apache.catalina.core.StandardEngine
startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.53
Nov 06, 2014 9:50:03 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive
/usr/home/bridger/src/apache-tomcat-7.0.53/webapps2/second.war
Nov 06, 2014 9:50:04 PM org.apache.catalina.core.StandardContext
loadOnStartup
SEVERE: Servlet /second threw load() exception
java.net.BindException: Address already in use
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at
java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
        at java.net.ServerSocket.bind(ServerSocket.java:376)
        at java.net.ServerSocket.bind(ServerSocket.java:330)
        at org.basex.BaseXServer.<init>(BaseXServer.java:107)
        at org.basex.http.HTTPContext.init(HTTPContext.java:379)
        at org.basex.http.BaseXServlet.init(BaseXServlet.java:34)
        at
org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
        at
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
        at
org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
        at
org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5210)
        at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5493)
        at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
        at
org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1073)
        at
org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)


I've looked at the source, but I know even less about Java than I do about
XQuery (e.g. next to nothing) so I'm not sure what else to try. If the list
has any suggestions about following this further, I'd be delighted to try
them -- there's something about this behavior that doesn't seem quite
right. I can think of potential use cases where mutliple .wars serving
different needs could be very handy.

This behavior doesn't appear to be limited to Tomcat, either. I just tested
both $webapps in the 20141103 jetty distribution and got a very similar
error. I've linked to a PasteBin [1] for the full error log.

Cheers,
Bridger

[1] http://pastebin.com/fiHJujnx

Reply via email to