WAR, содержащий приложение весенней загрузки, развернутое вручную на openshift tomcat, не работает

Я создал приложение Spring Boot, затем создал файл war.

На моем локальном сервере приложение работает правильно.

Я добавил это приложение в картридж JBOSSEWS, переименовав его в ROOT.war, поместив в каталог webapps с помощью git и перезапустив сервер.

Но я всегда 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

person Florian Courtial    schedule 30.08.2014    source источник
comment
Какой URL-адрес вы вызываете локально, а какой на JBOSSEWS?   -  person Ralph    schedule 30.08.2014
comment
Локально: localhost:8080/приветствие. Интернет: jbossews-flco.rhcloud.com/greeting.   -  person Florian Courtial    schedule 30.08.2014
comment
ROOT.war доступен на / Я подозреваю, что вы переименовали его с greeting.war на ROOT.war?   -  person M. Deinum    schedule 01.09.2014
comment
Нет, я переименовал app.war в ROOT.war, приветствие — это параметр, передаваемый контроллеру Spring MVC в RequestMapping.   -  person Florian Courtial    schedule 01.09.2014


Ответы (4)


Убедитесь, что ваше приложение основного класса расширяет SpringBootServletInitializer

Инициализировать сервлет

Преобразовывая это в файл WAR без файлов XML, вам нужен другой сигнал для контейнера сервлета о том, как запускать приложение.

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

person Jakub Złoczewski    schedule 15.10.2014

Убедитесь, что вы удалили файл pom.xml и каталог src/, чтобы он развернул ваш файл ROOT.war при выполнении git push. Дополнительную информацию можно найти в этой статье базы знаний: https://help.openshift.com/hc/en-us/articles/202399740-How-to-deploy-pre-compiled-java-applications-ФайлыWAR-и-EAR-на-вашем-устройстве-OpenShift-с-использованием-картриджей-java

person Community    schedule 02.09.2014
comment
Я использовал этот пост, чтобы поставить свою войну на OpenShift, я хорошо удалил каталоги pom.xml и src. Я пробовал с tomcat и jboss, проблема та же. - person Florian Courtial; 03.09.2014
comment
Ваш код где-то публично опубликован? Работает ли приложение весенней загрузки на вашем локальном сервере разработки? - person ; 03.09.2014
comment
Нет, код не является общедоступным (нет интереса), это очень простой проект весенней загрузки для тестирования весенней загрузки на Openshift. Сначала я сделал этот проект и преобразовал банку в войну, используя этот руководство и, наконец, я поставил войну на OpenShift, используя этот tuto из OpenShift. Локально .war работает очень хорошо. - person Florian Courtial; 03.09.2014

У меня была та же проблема, и я смог ее решить, скопировав каталог .openshift из исходного git-repo в папку репо tar.gz. Итак, после этого моя структура каталогов выглядела примерно так:

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

Я думаю, что проблема в моем случае заключалась в том, что tomcat пытался развернуть приложение с JDK 1.6, так как это кажется запасным вариантом, когда в каталоге маркеров нет файла java7...

person Christoph Höller    schedule 10.10.2014

Есть причины:

  1. Убедитесь, что вы не используете Java 8, если да, включите Java 7 или Сделай сам. Когда вы используете контейнер Java 8, война не будет развернута (проверено мной).
  2. Используйте SpringBootServletInitializer, как сказал @Jakub.
person njjnex    schedule 22.03.2015