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 "%r" %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 &quot;%r&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