WAR ที่มีแอปพลิเคชัน Spring Boot ที่ปรับใช้ด้วยตนเองบน openshift tomcat ไม่ทำงาน

ฉันสร้างแอปพลิเคชัน Spring Boot จากนั้นฉันก็สร้างสงคราม

บนเซิร์ฟเวอร์ภายในของฉัน แอปทำงานได้อย่างถูกต้อง

ฉันเพิ่มแอปนี้ลงในคาร์ทริดจ์ 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/greeting ออนไลน์ : 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 คุณสามารถตรวจสอบบทความ 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

person Community    schedule 02.09.2014
comment
ฉันใช้โพสต์นี้เพื่อต่อสู้กับ OpenShift ฉันลบ pom.xml และ src dir ออกไปแล้ว ฉันลองกับ Tomcat และ jboss ปัญหาก็เหมือนกัน - person Florian Courtial; 03.09.2014
comment
คุณมีรหัสของคุณโพสต์ไว้ที่ใดที่หนึ่งต่อสาธารณะหรือไม่? แอปพลิเคชัน Spring Boot ทำงานบนเซิร์ฟเวอร์การพัฒนาในเครื่องของคุณหรือไม่? - person ; 03.09.2014
comment
ไม่ รหัสไม่เปิดเผยต่อสาธารณะ (ไม่มีความสนใจ) มันเป็นโปรเจ็กต์การบู๊ตสปริงที่ง่ายมากในการทดสอบการบู๊ตสปริงบน Openshift ก่อนอื่น ฉันสร้างโปรเจ็กต์นี้ และฉันเปลี่ยน jar ให้เป็นสงครามโดยใช้สิ่งนี้ คำแนะนำ และในที่สุดฉันก็ทำสงครามกับ OpenShift โดยใช้ tuto จาก OpenShift ในพื้นที่ .war ทำงานได้ดีมาก - person Florian Courtial; 03.09.2014

ฉันมีปัญหาเดียวกันและสามารถแก้ไขได้ด้วยการคัดลอกไดเร็กทอรี .openshift จาก git-repo ดั้งเดิมลงในโฟลเดอร์ repo ของ tar.gz หลังจากนั้นโครงสร้างไดเร็กทอรีของฉันก็มีลักษณะดังนี้:

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

ฉันคิดว่าปัญหาในกรณีของฉันคือ Tomcat นั้นพยายามปรับใช้แอปพลิเคชันด้วย JDK 1.6 เนื่องจากนี่น่าจะเป็นทางเลือกสำรอง เมื่อไม่มีไฟล์ java7 ในไดเร็กทอรี markers...

person Christoph Höller    schedule 10.10.2014

มีเหตุผลดังนี้:

  1. ตรวจสอบว่าคุณไม่ได้ใช้ Java 8 หากเป็นเช่นนั้น ให้เปลี่ยนเป็น Java 7 หรือ ทำเอง. เมื่อคุณใช้คอนเทนเนอร์ Java 8 จะไม่ปรับใช้ war (ทดสอบด้วยตัวเอง)
  2. ใช้ SpringBootServletInitializer ตามที่ @Jakub กล่าว
person njjnex    schedule 22.03.2015