java1.4 tomcat jk2加载异常

报错如下:

Apr 23, 2011 3:11:12 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=25/45  config=/home/shenj/jakarta-tomcat-5.0.30/conf/jk2.properties
Apr 23, 2011 3:11:12 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)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
Apr 23, 2011 3:11:12 PM org.apache.catalina.startup.Catalina start

经查,这是jmx.jar代码的一个bug,在1.4以上的版本中已经修复。引用一下java的官方说明:

The JMX technology provides the tools for building distributed, Web-based, modular and dynamic solutions for managing and monitoring devices, applications, and service-driven networks. By design, this standard is suitable for adapting legacy systems, implementing new management and monitoring solutions, and plugging into those of the future. 

Starting with the J2SE platform 5.0, JMX technology is included in the Java SE platform. Please see the JMX documentation for the J2SE 5.0 and Java SE 6 platforms. Previous versions of JMX technology are available here

由于各种原因还在使用1.4版本的各位苦逼程序猿们,可以使用如下方法解决:

到这里http://www.oracle.com/technetwork/java/javase/tech/download-jsp-141676.html,下载jmx1.2.1版本的实现,然后在lib里面找到jmxri.jar,替换tomcat/bin/下边的jmx.jar(记得改名哦)。然后重启即可。

猜你喜欢

转载自strangeromo.iteye.com/blog/1015936
今日推荐