Reputation: 322
I am required to upload an existing tomcat application on heroku - i got an error the deployment tried already the official heroku tutorial Exception:
2018-06-04T09:54:41.843218+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.springframework.web.context.ContextLoader initWebApplicationContext
2018-06-04T09:54:41.843221+00:00 app[web.1]: INFO: Root WebApplicationContext: initialization started
2018-06-04T09:54:41.882165+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
2018-06-04T09:54:41.882168+00:00 app[web.1]: INFO: Refreshing Root WebApplicationContext: startup date [Mon Jun 04 09:54:41 UTC 2018]; root of context hierarchy
2018-06-04T09:54:41.930603+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
2018-06-04T09:54:41.930607+00:00 app[web.1]: INFO: Loading XML bean definitions from class path resource []
2018-06-04T09:54:41.933643+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.springframework.web.context.ContextLoader initWebApplicationContext
2018-06-04T09:54:41.933645+00:00 app[web.1]: SEVERE: Context initialization failed
2018-06-04T09:54:41.933647+00:00 app[web.1]: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource []; nested exce
ption is java.io.FileNotFoundException: class path resource [] cannot be opened because it does not exist
2018-06-04T09:54:41.933649+00:00 app[web.1]: at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)
.......
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
2018-06-04T09:54:41.933675+00:00 app[web.1]: at java.lang.Thread.run(Thread.java:748)
2018-06-04T09:54:41.933677+00:00 app[web.1]: Caused by: java.io.FileNotFoundException: class path resource [] cannot be opened because it does not exist
2018-06-04T09:54:41.933678+00:00 app[web.1]: at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:158)
2018-06-04T09:54:41.933679+00:00 app[web.1]: at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328)
2018-06-04T09:54:41.933680+00:00 app[web.1]: ... 21 more
2018-06-04T09:54:41.933681+00:00 app[web.1]:
2018-06-04T09:54:41.934540+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.apache.catalina.core.StandardContext listenerStart
2018-06-04T09:54:41.934542+00:00 app[web.1]: SEVERE: Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
2018-06-04T09:54:41.934543+00:00 app[web.1]: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource []; nested exce
ption is java.io.FileNotFoundException: class path resource [] cannot be opened because it does not exist
2018-06-04T09:54:41.934545+00:00 app[web.1]: at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)
2018-06-04T09:54:41.934573+00:00 app[web.1]: ... 21 more
2018-06-04T09:54:41.934574+00:00 app[web.1]:
2018-06-04T09:54:41.935025+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.apache.catalina.core.StandardContext startInternal
2018-06-04T09:54:41.935028+00:00 app[web.1]: SEVERE: One or more listeners failed to start. Full details will be found in the appropriate container log file
2018-06-04T09:54:41.954513+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.apache.catalina.core.StandardContext startInternal
2018-06-04T09:54:41.954517+00:00 app[web.1]: SEVERE: Context [] startup failed due to previous errors
2018-06-04T09:54:41.955058+00:00 app[web.1]: SEVERE: Context [] failed in [org.apache.catalina.core.StandardContext] lifecycle. Allowing Tomcat to shutdown.
2018-06-04T09:54:41.956883+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.apache.catalina.core.ApplicationContext log
2018-06-04T09:54:41.956886+00:00 app[web.1]: INFO: Closing Spring root WebApplicationContext
2018-06-04T09:54:41.959020+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.apache.catalina.core.ApplicationContext log
2018-06-04T09:54:41.959023+00:00 app[web.1]: INFO: Shutting down log4j
2018-06-04T09:54:41.962408+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.apache.catalina.core.StandardContext listenerStop
2018-06-04T09:54:41.962411+00:00 app[web.1]: SEVERE: Exception sending context destroyed event to listener instance of class [org.springframework.web.util.Log4jConfigListener]
2018-06-04T09:54:41.962413+00:00 app[web.1]: java.lang.NoClassDefFoundError: org/apache/log4j/LogManager
2018-06-04T09:54:41.962434+00:00 app[web.1]: at java.lang.Thread.run(Thread.java:748)
2018-06-04T09:54:41.962436+00:00 app[web.1]: Caused by: java.lang.ClassNotFoundException: org.apache.log4j.LogManager
2018-06-04T09:54:41.962437+00:00 app[web.1]: at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1308)
2018-06-04T09:54:41.962439+00:00 app[web.1]: at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1136)
2018-06-04T09:54:41.962441+00:00 app[web.1]: ... 13 more
2018-06-04T09:54:41.962442+00:00 app[web.1]:
2018-06-04T09:54:41.977491+00:00 app[web.1]: Jun 04, 2018 9:54:41 AM org.apache.coyote.AbstractProtocol start
2018-06-04T09:54:41.977495+00:00 app[web.1]: INFO: Starting ProtocolHandler ["http-nio-4299"]
2018-06-04T09:54:42.323677+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=GET path="/" host=build-e-rest-test.herokuapp.com request_id=9da46
ada-92ba-4e78-8715-21171277860b fwd="79.177.4.143" dyno=web.1 connect=0ms service=140ms status=503 bytes=0 protocol=https
2018-06-04T09:54:42.368865+00:00 heroku[web.1]: Process exited with status 0
I think the problem is due to the incorrect configuration of one of the files. Here is the relevant files (I think)
pom.xml
<?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>builde</groupId>
<artifactId>build-e-rest</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.test.skip>true</maven.test.skip>
<maven.install.skip>true</maven.install.skip>
<maven.deploy.skip>true</maven.deploy.skip>
<beanstalk.environmentRef>build-e-rest-env.elasticbeanstalk.com</beanstalk.environmentRef>
<beanstalk.environmentName>build-e-rest-env</beanstalk.environmentName>
<beanstalk.cnamePrefix>build-e-rest-env</beanstalk.cnamePrefix>
<beanstalk.applicationName>build-e-rest</beanstalk.applicationName>
<beanstalk.useStagingDirectory>true</beanstalk.useStagingDirectory>
<beanstalker.region>us-east-1</beanstalker.region>
<!-- review src/main/webapp/.ebextensions/java7.config if you change this setting
-->
<beanstalk.solutionStack>64bit Amazon Linux running Tomcat 7</beanstalk.solutionStack>
<!-- switch to .../health/check when you set iamInstanceProfile below -->
<beanstalk.applicationHealthCheckURL>/services/api/v1/debug</beanstalk.applicationHealthCheckURL>
<beanstalk.environmentType>SingleInstance</beanstalk.environmentType>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>8.0.0-RC1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.0.4.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>./WebContent/WEB-INF/web.xml</webXml>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<phase>package</phase>
<goals><goal>copy</goal></goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.github.jsimone</groupId>
<artifactId>webapp-runner</artifactId>
<version>8.5.31.0</version>
<destFileName>webapp-runner.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>testlog4j.testlog4j.App</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
</plugin>
<plugin>
<groupId>br.com.ingenieux</groupId>
<artifactId>beanstalk-maven-plugin</artifactId>
<inherited>true</inherited>
<version>1.4.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<profiles>
<profile>
<id>deploy</id>
<build>
<defaultGoal>deploy</defaultGoal>
<plugins>
<plugin>
<groupId>br.com.ingenieux</groupId>
<artifactId>beanstalk-maven-plugin</artifactId>
<executions>
<execution>
<id>deploy</id>
<phase>deploy</phase>
<goals>
<goal>fast-deploy</goal>
<goal>replace-environment</goal>
</goals>
</execution>
</executions>
<configuration>
<skipEnvironmentUpdate>true</skipEnvironmentUpdate>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>fast-deploy</id>
<build>
<defaultGoal>deploy</defaultGoal>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<id>default-war</id>
<phase>package</phase>
<goals>
<goal>exploded</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>br.com.ingenieux</groupId>
<artifactId>beanstalk-maven-plugin</artifactId>
<executions>
<execution>
<id>deploy</id>
<phase>deploy</phase>
<goals>
<goal>fast-deploy</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>worker</id>
<properties>
<beanstalk.environmentRef>build-e-rest-worker</beanstalk.environmentRef>
<beanstalk.environmentName>build-e-rest-worker</beanstalk.environmentName>
<beanstalk.environmentTierName>Worker</beanstalk.environmentTierName>
<beanstalk.sqsdHttpPath>/services/api/v1/sqsd</beanstalk.sqsdHttpPath>
</properties>
</profile>
<profile>
<id>s3-deploy</id>
<properties>
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
<beanstalk.versionLabel>${maven.build.timestamp}</beanstalk.versionLabel>
</properties>
<build>
<plugins>
<plugin>
<groupId>br.com.ingenieux</groupId>
<artifactId>beanstalk-maven-plugin</artifactId>
<executions>
<execution>
<id>deploy</id>
<phase>deploy</phase>
<goals>
<goal>upload-source-bundle</goal>
<goal>create-application-version</goal>
<!-- replace to replace-environment or blue-green
if you want zero downtime or blue-green -->
<goal>put-environment</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>bluegreen-s3-deploy</id>
<properties>
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
<beanstalk.versionLabel>${maven.build.timestamp}</beanstalk.versionLabel>
</properties>
<build>
<plugins>
<plugin>
<groupId>br.com.ingenieux</groupId>
<artifactId>beanstalk-maven-plugin</artifactId>
<executions>
<execution>
<id>deploy</id>
<phase>deploy</phase>
<goals>
<goal>upload-source-bundle</goal>
<goal>create-application-version</goal>
<!-- replace to replace-environment or blue-green
if you want zero downtime or blue-green -->
<goal>blue-green</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath: ../META-INF/spring/rootContext.xml
</param-value>
</context-param>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>/builde_rest_2_0</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<!--
<listener>
<listener-class>ch.qos.logback.classic.selector.servlet.ContextDetachingSCL</listener-class>
</listener>
-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.data.rest.webmvc.RepositoryRestDispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- <servlet>
<servlet-name>exporter</servlet-name>
<servlet-class>org.springframework.data.rest.webmvc.RepositoryRestDispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> -->
<!-- <servlet-mapping>
<servlet-name>exporter</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> -->
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- Spring Security -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>1</session-timeout>
</session-config>
</web-app>
I hope there will be someone here who can help me Thanks.
Upvotes: 0
Views: 100
Reputation: 46
The error line starts with:
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource []; nested exception is java.io.FileNotFoundException: class path resource [] cannot be opened because it does not exist
It's pointing out the class path resource is undefined. Try
Adding the dependencies to your project.
Adding the dependencies to your project deployment assembly.
If these do not solve your problem, try removing the org.springframework.web.util.Log4jConfigListener as it might have a conflict with WAR files during the Maven process.
Upvotes: 1