安装程序: –
在TomCat重新启动后,OpenCMS系统正在工作,停止加载。 运行在不同主机上的数据库服务器(postgres)已重新启动,并且响应正确。
任何build议让它运行?
当TomCat启动时,在stdout中出现以下错误:
org.apache.openejb.OpenEJBException: org.apache.xbean.recipe.ConstructionException: Error invoking constructor: public org.apache.openejb.tomcat.catalina.TomcatSecurityService(): Error invoking constructor: public org.apache.openejb.tomcat.catalina.TomcatSecurityService()
…
6/12/09 10:11:29 AM (I) WebappClassLoader.validateJarFile : validateJarFile(/usr/local/tomcat5.5/webapps/opencms/WEB-INF/lib/servlet.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
`
6/12/09 9:21:08 AM (S) HostConfig.deployDirectory : Error deploying web application directory opencms java.lang.ArrayIndexOutOfBoundsException: 26 at org.apache.openejb.asm.ClassReader.readClass(Unknown Source) at org.apache.openejb.asm.ClassReader.accept(Unknown Source) at org.apache.openejb.asm.ClassReader.accept(Unknown Source) at org.apache.openejb.util.AnnotationFinder.readClassDef(AnnotationFinder.java:251) at org.apache.openejb.util.AnnotationFinder.find(AnnotationFinder.java:157) at org.apache.openejb.config.DeploymentLoader.discoverModuleType(DeploymentLoader.java:1090) at org.apache.openejb.tomcat.catalina.TomcatWebAppBuilder.loadApplication(TomcatWebAppBuilder.java:540) at org.apache.openejb.tomcat.catalina.TomcatWebAppBuilder.start(TomcatWebAppBuilder.java:234) at org.apache.openejb.tomcat.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:58) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4148) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:926) at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:889) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022) at org.apache.catalina.core.StandardHost.start(StandardHost.java:736) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:448) at org.apache.catalina.core.StandardServer.start(StandardServer.java:700) at org.apache.catalina.startup.Catalina.start(Catalina.java:552) 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:585) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
当我尝试在同一个Tomcat实例上部署OpenCMS和OpenEJB时,我也遇到了这个exception。 看来OpenCMS和OpenEJB并不相像。
但是,我发现了一个解决方法:在Tomcat启动时部署OpenCMS之后,我使用Manager webapp来上传OpenEJB并运行。 它为我工作得很好。
看起来你应用程序文件已损坏:
6/12/09 9:21:08 AM (S) HostConfig.deployDirectory : Error deploying web application directory opencms java.lang.ArrayIndexOutOfBoundsException: 26 at org.apache.openejb.asm.ClassReader.readClass(Unknown Source) at org.apache.openejb.asm.ClassReader.accept(Unknown Source) at org.apache.openejb.asm.ClassReader.accept(Unknown Source) at org.apache.openejb.util.AnnotationFinder.readClassDef(AnnotationFinder.java:251)
应用程序服务器可能会保留一个旧的工作/临时目录。 尝试删除,停止并重新部署。
此错误似乎是由另一个错误应用程序引起的。 在服务器已经启动之后可能加载,直到OpenCMS被重置为止。 可能的罪魁祸首是openjb。
这是通过删除所有的web应用程序,并逐一replace它们,直到所有重要的服务器上线。
遗憾的是我现在无法testing更多的确切的错误。
Offending class: javax/servlet/Servlet.class
这是一个相当常见的Java应用程序的警告。 由于Web应用程序容器的类加载器为servlet规范提供了api和实现,所以禁止Web应用程序提供自己的版本。
然而,作为一个wep应用程序的开发者,如果没有工具支持,编译你的类会有点困难,所以把这个servlet.jar包含在你的lib/目录中是很有诱惑力的。 这使得它很容易意外地运送一个.war 。
因此,Tomcat会在加载时扫描所有的类,如果find,它会阻止类的加载出现此错误。