You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Oded Arbel <od...@m-wise.com> on 2005/11/24 17:59:55 UTC

Tomcat 5 error during startup - 2nd connector doesn't work

Hi people.

I'm using tomcat5 to host a commercial web site, and due to some 
integration issues we are using a single service with two 
CoyoteConnectors - one on port 8080 and one on port 8081.
Here is the relevant configuration:

<Service name="Catalina">
<Connector port="8080"
  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
  enableLookups="false" redirectPort="8443" acceptCount="100"
  debug="0" connectionTimeout="20000" disableUploadTimeout="true" />
<Connector port="8081"
  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
  enableLookups="false" redirectPort="8443" acceptCount="100"
  debug="0" connectionTimeout="20000" disableUploadTimeout="true" />

I've noticed that some times, when catalina is starting, I get this 
error in the logs:

Nov 24, 2005 4:28:30 PM org.apache.coyote.tomcat5.MapperListener init
WARNING: Error registering contexts
java.util.ConcurrentModificationException
  at java.util.HashMap$HashIterator.nextEntry(HashMap.java:782)
  at java.util.HashMap$EntryIterator.next(HashMap.java:824)
  at java.util.HashMap.putAllForCreate(HashMap.java:424)
  at java.util.HashMap.clone(HashMap.java:656)
  at 
mx4j.server.DefaultMBeanRepository.clone(DefaultMBeanRepository.java:56)
  at 
mx4j.server.MBeanServerImpl.findMBeansByPattern(MBeanServerImpl.java:1603)
  at 
mx4j.server.MBeanServerImpl.queryObjectNames(MBeanServerImpl.java:1568)
  at 
mx4j.server.MBeanServerImpl.queryMBeans(MBeanServerImpl.java:1512)
  at 
org.apache.coyote.tomcat5.MapperListener.init(MapperListener.java:115)
  at 
org.apache.coyote.tomcat5.CoyoteConnector.start(CoyoteConnector.java:1537)
  at 
org.apache.catalina.core.StandardService.start(StandardService.java:489)

When that happens, HTTP requests to the second connector (port 8081) 
return with error 400 - no host matches, while requests to the first 
connector are handled just fine.

It looks to me like a race condition where something (possibly 
MBeanServerImpl) isn't locking a shared resource (or isn't locking it 
properly) and an contained HashMap gets modifier concurrently. 
I though initially about writing to the dev list, but I don't have any 
idea what is that mx4j so I'm not sure if its the correct place to ask.

BTW - I'm using tomcat 5.0.28.

TIA

-- 
Oded Arbel
m-Wise mobile solutions
oded@m-wise.com

+972-9-9611212 (204)
+972-54-7340014

::..
Who the fuck is General Failure? And why is he reading my harddisk? 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Tomcat 5 error during startup - 2nd connector doesn't work

Posted by Peter Rossbach <pr...@objektpark.de>.
Download MX4j 3.0.1 and cp mx4j.jar to bin/jmx.jar at your tomcat release.
Regards
Peter

Oded Arbel schrieb:

>Hi people.
>
>I'm using tomcat5 to host a commercial web site, and due to some 
>integration issues we are using a single service with two 
>CoyoteConnectors - one on port 8080 and one on port 8081.
>Here is the relevant configuration:
>
><Service name="Catalina">
><Connector port="8080"
>  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
>  enableLookups="false" redirectPort="8443" acceptCount="100"
>  debug="0" connectionTimeout="20000" disableUploadTimeout="true" />
><Connector port="8081"
>  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
>  enableLookups="false" redirectPort="8443" acceptCount="100"
>  debug="0" connectionTimeout="20000" disableUploadTimeout="true" />
>
>I've noticed that some times, when catalina is starting, I get this 
>error in the logs:
>
>Nov 24, 2005 4:28:30 PM org.apache.coyote.tomcat5.MapperListener init
>WARNING: Error registering contexts
>java.util.ConcurrentModificationException
>  at java.util.HashMap$HashIterator.nextEntry(HashMap.java:782)
>  at java.util.HashMap$EntryIterator.next(HashMap.java:824)
>  at java.util.HashMap.putAllForCreate(HashMap.java:424)
>  at java.util.HashMap.clone(HashMap.java:656)
>  at 
>mx4j.server.DefaultMBeanRepository.clone(DefaultMBeanRepository.java:56)
>  at 
>mx4j.server.MBeanServerImpl.findMBeansByPattern(MBeanServerImpl.java:1603)
>  at 
>mx4j.server.MBeanServerImpl.queryObjectNames(MBeanServerImpl.java:1568)
>  at 
>mx4j.server.MBeanServerImpl.queryMBeans(MBeanServerImpl.java:1512)
>  at 
>org.apache.coyote.tomcat5.MapperListener.init(MapperListener.java:115)
>  at 
>org.apache.coyote.tomcat5.CoyoteConnector.start(CoyoteConnector.java:1537)
>  at 
>org.apache.catalina.core.StandardService.start(StandardService.java:489)
>
>When that happens, HTTP requests to the second connector (port 8081) 
>return with error 400 - no host matches, while requests to the first 
>connector are handled just fine.
>
>It looks to me like a race condition where something (possibly 
>MBeanServerImpl) isn't locking a shared resource (or isn't locking it 
>properly) and an contained HashMap gets modifier concurrently. 
>I though initially about writing to the dev list, but I don't have any 
>idea what is that mx4j so I'm not sure if its the correct place to ask.
>
>BTW - I'm using tomcat 5.0.28.
>
>TIA
>  
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org