java - 在 heroku 上部署 maven 应用程序,BeanDefinitionStoreException

标签 java maven tomcat heroku deployment

我需要在 heroku 上上传现有的 tomcat 应用程序 - 我在部署时遇到错误 已经尝试过官方 heroku 教程 异常:

    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

我认为问题是由于其中一个文件的配置不正确造成的。 这是相关文件(我认为)

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>

网络.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>

我希望这里有人可以帮助我 谢谢。

最佳答案

错误行开始于:

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

它指出类路径资源未定义。尝试

  • 将依赖项添加到您的项目。

  • 将依赖项添加到您的项目部署程序集中。

如果这些不能解决您的问题,请尝试删除 org.springframework.web.util.Log4jConfigListener,因为它可能在 Maven 进程中与 WAR 文件发生冲突。

关于java - 在 heroku 上部署 maven 应用程序,BeanDefinitionStoreException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50678164/

相关文章:

java - 在JAVA中使用REGEX从方法调用中提取参数

testing - 从 maven zip 程序集运行测试

java - Tomcat 5.5 无法在 eclipse 中启动 - 5 分钟后超时

tomcat - niceditor中的uri更改

java - Tomcat 不启动我的网络应用程序

java - 如何在单个 Java 服务器上处理超过一百万个并发客户端?

java - 将 ImageItem 放置在屏幕的右上角

maven - 将deeplearning4j与JHipster Maven pom.xml集成,出现SLF4J绑定(bind)错误

Java 泛型 : Cannot cast List<Class<R>> to List<Class>

maven-2 - maven3 运行时可以执行 maven2 兼容的 pom.xml 文件吗