包含在openshift tomcat上手动部署的spring boot应用程序的WAR不起作用

时间:2014-08-30 07:47:37

标签: spring spring-mvc tomcat7 openshift spring-boot

我创建了一个Spring Boot应用程序,然后我创建了一个战争。

在我的本地服务器上,该应用程序正常运行。

我将此应用程序添加到JBOSSEWS盒式磁带,方法是将其重命名为ROOT.war,使用git将其放入webapps目录并重新启动服务器。

但我总是找不到404。

tomcat日志是:

new-host-3:jbossews JARVIS$ rhc tail jbossews
Aug 30, 2014 3:27:25 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.54
Aug 30, 2014 3:27:25 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /var/lib/openshift/540178a84382ec94b8000b75/app-        root/runtime/dependencies/jbossews/webapps/ROOT.war
Aug 30, 2014 3:27:37 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deployment of web application archive /var/lib/openshift/540178a84382ec94b8000b75/app-root/runtime/dependencies/jbossews/webapps/ROOT.war has finished in 11,864 ms
Aug 30, 2014 3:27:37 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-127.10.90.1-8080"]
Aug 30, 2014 3:27:37 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 12059 ms

4 个答案:

答案 0 :(得分:2)

确保您的主要类应用扩展SpringBootServletInitializer

  

初始化servlet

     

通过将此转换为没有XML文件的WAR文件,您需要向servlet容器发出有关如何启动应用程序的不同信号。

import org.springframework.boot.context.web.SpringBootServletInitializer;

public class HelloWebXml extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

}
  

HelloWebXml是一个纯Java类,它提供了创建web.xml的替代方法。它扩展了SpringServletInitializer类。此扩展通过覆盖方法提供了许多可配置选项。

来源:Spring.io Guide

答案 1 :(得分:0)

确保删除了pom.xml文件和src /目录,以便在执行git push时部署ROOT.war文件。您可以查看此kb文章以获取更多信息:https://help.openshift.com/hc/en-us/articles/202399740-How-to-deploy-pre-compiled-java-applications-WAR-and-EAR-files-onto-your-OpenShift-gear-using-the-java-cartridges

答案 2 :(得分:0)

我有同样的问题,并且能够通过将.openshift目录从原始git-repo复制到tar.gz的repo文件夹来解决它。所以之后我的目录结构看起来像这样:

myApp.tar.gz - dependencies - - jbossews - - - - webapps - - - - - ROOT.war - repo - - .openshift - - - - markers - - - - - java7 ...

我认为我的问题是,tomcat尝试使用JDK 1.6部署应用程序,因为这似乎是回退,当marker目录中没有java7文件时...

答案 3 :(得分:0)

有理由:

  1. 如果是,请检查您是否使用Java 8将其转换为Java 7或DIY。当你使用Java 8容器时不会部署war(自己测试)。
  2. 使用SpringBootServletInitializer为@Jakub说。