Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Tomcat 7 "SEVERE: A child container failed during start"

Basically, I've written a springMVC application (with a relatively shotgun my way first-timer approach with regards to Spring). The project works fine on Tomcat 6. My Tomcat server doesn't start and throws the following exception:

Apr 29, 2012 3:41:00 PM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/bin/jdk1.7.0_03/jre/lib/amd64/server:/usr/bin/jdk1.7.0_03/jre/lib/amd64:/usr/bin/jdk1.7.0_03/jre/../lib/amd64:/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-6-openjdk/jre/lib/amd64:/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib Apr 29, 2012 3:41:00 PM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:spring-security-integration' did not find a matching property. Apr 29, 2012 3:41:00 PM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Spring3Hibernate' did not find a matching property. Apr 29, 2012 3:41:00 PM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:assessment' did not find a matching property. Apr 29, 2012 3:41:00 PM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["http-bio-8080"] Apr 29, 2012 3:41:00 PM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["ajp-bio-8009"] Apr 29, 2012 3:41:00 PM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 654 ms Apr 29, 2012 3:41:00 PM org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina Apr 29, 2012 3:41:00 PM org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/7.0.26 Apr 29, 2012 3:41:01 PM org.apache.catalina.core.ApplicationContext log INFO: Initializing Spring root WebApplicationContext INFO : org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization started INFO : org.springframework.web.context.support.XmlWebApplicationContext - Refreshing Root WebApplicationContext: startup date [Sun Apr 29 15:41:01 BST 2012]; root of context hierarchy INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/spring/root-context.xml] INFO : org.springframework.beans.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@3dd5df15: defining beans []; root of factory hierarchy INFO : org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 226 ms Apr 29, 2012 3:41:01 PM org.apache.catalina.core.ApplicationContext log INFO: Initializing Spring FrameworkServlet 'appServlet' INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'appServlet': initialization started INFO : org.springframework.web.context.support.XmlWebApplicationContext - Refreshing WebApplicationContext for namespace 'appServlet-servlet': startup date [Sun Apr 29 15:41:01 BST 2012]; parent: Root WebApplicationContext INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/spring/appServlet/servlet-context.xml] INFO : org.springframework.context.annotation.ClassPathBeanDefinitionScanner - JSR-330 'javax.inject.Named' annotation found and supported for component scanning INFO : org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring INFO : org.springframework.beans.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@cf10596: defining beans [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0,org.springframework.format.support.FormattingConversionServiceFactoryBean#0,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0,org.springframework.web.servlet.handler.MappedInterceptor#0,org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#0,org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver#0,org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver#0,org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0,org.springframework.web.servlet.handler.SimpleUrlHandlerMapping#0,org.springframework.web.servlet.view.InternalResourceViewResolver#0,dataSource,sessionFactory,homeController,userManagementController,userService,userDao,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,org.springframework.web.servlet.view.ContentNegotiatingViewResolver#0,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory@3dd5df15 INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String org.assessme.com.controller.HomeController.home(java.util.Locale,org.springframework.ui.Model) INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/userManagement/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.assessme.com.controller.UserManagementController.home(java.util.Locale,org.springframework.ui.Model) INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/userManagement/getUser],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.assessme.com.entity.User org.assessme.com.controller.UserManagementController.data(java.util.Locale,org.springframework.ui.Model) INFO : org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped URL path [/resources/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0' INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'appServlet': initialization completed in 1846 ms Apr 29, 2012 3:41:03 PM org.apache.catalina.core.ContainerBase startInternal SEVERE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Spring3Hibernate]]     at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)     at java.util.concurrent.FutureTask.get(FutureTask.java:111)     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1128)     at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:782)     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)     at java.util.concurrent.FutureTask.run(FutureTask.java:166)     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)     at java.lang.Thread.run(Thread.java:722) Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Spring3Hibernate]]     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)     ... 7 more Caused by: org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 60     at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:131)     at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:60)     at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209)     at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119)     at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2032)     at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1923)     at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1891)     at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1877)     at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1270)     at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:855)     at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:345)     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161)     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)     ... 7 more 

I'm really not sure what this is referring to, I'm more than happy to show any code etc but I don't really know what it's referring to. Below is my pom.xml just in case that might be of relevance.

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">     <modelVersion>4.0.0</modelVersion>     <groupId>org.assessme</groupId>     <artifactId>com</artifactId>     <name>assessme</name>     <packaging>war</packaging>     <version>1.0.0-BUILD-SNAPSHOT</version>     <properties>         <java-version>1.6</java-version>         <org.springframework-version>3.1.0.RELEASE</org.springframework-version>         <org.aspectj-version>1.6.9</org.aspectj-version>         <org.slf4j-version>1.5.10</org.slf4j-version>     </properties>     <dependencies>         <!-- Spring -->         <dependency>             <groupId>org.springframework</groupId>             <artifactId>spring-context</artifactId>             <version>${org.springframework-version}</version>             <exclusions>                  <!-- Exclude Commons Logging in favor of SLF4j -->                 <exclusion>                     <groupId>commons-logging</groupId>                     <artifactId>commons-logging</artifactId>                 </exclusion>             </exclusions>         </dependency>         <dependency>             <groupId>org.springframework</groupId>             <artifactId>spring-webmvc</artifactId>             <version>${org.springframework-version}</version>         </dependency>         <dependency>             <groupId>org.springframework</groupId>             <artifactId>spring-tx</artifactId>             <version>${org.springframework-version}</version>         </dependency>          <!-- AspectJ -->         <dependency>             <groupId>org.aspectj</groupId>             <artifactId>aspectjrt</artifactId>             <version>${org.aspectj-version}</version>         </dependency>          <!-- Logging -->         <dependency>             <groupId>org.slf4j</groupId>             <artifactId>slf4j-api</artifactId>             <version>${org.slf4j-version}</version>         </dependency>         <dependency>             <groupId>org.slf4j</groupId>             <artifactId>jcl-over-slf4j</artifactId>             <version>${org.slf4j-version}</version>             <scope>runtime</scope>         </dependency>         <dependency>             <groupId>org.slf4j</groupId>             <artifactId>slf4j-log4j12</artifactId>             <version>${org.slf4j-version}</version>             <scope>runtime</scope>         </dependency>         <dependency>             <groupId>log4j</groupId>             <artifactId>log4j</artifactId>             <version>1.2.15</version>             <exclusions>                 <exclusion>                     <groupId>javax.mail</groupId>                     <artifactId>mail</artifactId>                 </exclusion>                 <exclusion>                     <groupId>javax.jms</groupId>                     <artifactId>jms</artifactId>                 </exclusion>                 <exclusion>                     <groupId>com.sun.jdmk</groupId>                     <artifactId>jmxtools</artifactId>                 </exclusion>                 <exclusion>                     <groupId>com.sun.jmx</groupId>                     <artifactId>jmxri</artifactId>                 </exclusion>             </exclusions>             <scope>runtime</scope>         </dependency>          <!-- @Inject -->         <dependency>             <groupId>javax.inject</groupId>             <artifactId>javax.inject</artifactId>             <version>1</version>         </dependency>          <!-- Servlet -->         <dependency>             <groupId>javax.servlet</groupId>             <artifactId>servlet-api</artifactId>             <version>2.5</version>             <scope>provided</scope>         </dependency>         <dependency>             <groupId>javax.servlet.jsp</groupId>             <artifactId>jsp-api</artifactId>             <version>2.1</version>             <scope>provided</scope>         </dependency>         <dependency>             <groupId>javax.servlet</groupId>             <artifactId>jstl</artifactId>             <version>1.2</version>         </dependency>          <!-- Persistence -->          <dependency>             <groupId>commons-dbcp</groupId>             <artifactId>commons-dbcp</artifactId>             <version>1.4</version>         </dependency>           <dependency>             <groupId>org.springframework</groupId>             <artifactId>spring-jdbc</artifactId>             <version>${org.springframework-version}</version>         </dependency>           <dependency>             <groupId>org.hibernate</groupId>             <artifactId>hibernate-core</artifactId>             <version>3.5.6-Final</version>         </dependency>         <dependency>             <groupId>org.hibernate</groupId>             <artifactId>hibernate-annotations</artifactId>             <version>3.5.6-Final</version>         </dependency>         <dependency>             <groupId>javassist</groupId>             <artifactId>javassist</artifactId>             <version>3.11.0.GA</version>         </dependency>         <dependency>             <groupId>org.springframework</groupId>             <artifactId>spring-orm</artifactId>             <version>${org.springframework-version}</version>         </dependency>         <dependency>             <groupId>mysql</groupId>             <artifactId>mysql-connector-java</artifactId>             <version>5.1.18</version>         </dependency>           <!-- Jackson JSON Mapper -->         <dependency>             <groupId>org.codehaus.jackson</groupId>             <artifactId>jackson-mapper-asl</artifactId>             <version>1.9.5</version>         </dependency>          <!-- Test -->         <dependency>             <groupId>junit</groupId>             <artifactId>junit</artifactId>             <version>4.7</version>             <scope>test</scope>         </dependency>     </dependencies>     <build>         <plugins>             <plugin>                 <artifactId>maven-eclipse-plugin</artifactId>                 <version>2.9</version>                 <configuration>                     <additionalProjectnatures>                         <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>                     </additionalProjectnatures>                     <additionalBuildcommands>                         <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>                     </additionalBuildcommands>                     <downloadSources>true</downloadSources>                     <downloadJavadocs>true</downloadJavadocs>                 </configuration>             </plugin>             <plugin>                 <groupId>org.apache.maven.plugins</groupId>                 <artifactId>maven-compiler-plugin</artifactId>                 <version>2.3.2</version>                 <configuration>                     <source>1.6</source>                     <target>1.6</target>                     <compilerArgument>-Xlint:all</compilerArgument>                     <showWarnings>true</showWarnings>                     <showDeprecation>true</showDeprecation>                 </configuration>             </plugin>             <plugin>                 <groupId>org.codehaus.mojo</groupId>                 <artifactId>exec-maven-plugin</artifactId>                 <version>1.2.1</version>                 <configuration>                     <mainClass>org.test.int1.Main</mainClass>                 </configuration>             </plugin>         </plugins>     </build> </project> 

Does anyone have any ideas?

like image 248
david99world Avatar asked Apr 29 '12 14:04

david99world


1 Answers

When a servlet 3.0 application starts the container has to scan all the classes for annotations (unless metadata-complete=true). Tomcat uses a fork (no additions, just unused code removed) of Apache Commons BCEL to do this scanning. The web app is failing to start because BCEL has come across something it doesn't understand.

If the applications runs fine on Tomcat 6, adding metadata-complete="true" in your web.xml or declaring your application as a 2.5 application in web.xml will stop the annotation scanning.

At the moment, this looks like a problem in the class being scanned. However, until we know which class is causing the problem and take a closer look we won't know. I'll need to modify Tomcat to log a more useful error message that names the class in question. You can follow progress on this point at: https://issues.apache.org/bugzilla/show_bug.cgi?id=53161

like image 173
Mark Thomas Avatar answered Sep 21 '22 07:09

Mark Thomas