WAR yang berisi aplikasi booting pegas yang diterapkan secara manual pada kucing jantan openshift tidak berfungsi

Saya membuat aplikasi Spring Boot, lalu saya membuat perang.

Di server lokal saya, aplikasi berfungsi dengan benar.

Saya menambahkan aplikasi ini ke kartrid JBOSSEWS dengan menamainya ROOT.war, meletakkannya di direktori webapps menggunakan git dan memulai ulang server.

Tapi saya selalu punya 404 tidak ditemukan.

Log kucing jantan adalah:

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 sumber
comment
Url mana yang Anda panggil secara lokal, dan yang mana di JBOSSEWS?   -  person Ralph    schedule 30.08.2014
comment
Secara lokal : localhost:8080/salam. Daring: jbossews-flco.rhcloud.com/greeting.   -  person Florian Courtial    schedule 30.08.2014
comment
ROOT.war tersedia di / Saya kira Anda mengganti namanya dari greeting.war menjadi ROOT.war?   -  person M. Deinum    schedule 01.09.2014
comment
Tidak, saya mengganti nama app.war menjadi ROOT.war, salam adalah parameter yang diteruskan ke pengontrol Spring MVC ke RequestMapping.   -  person Florian Courtial    schedule 01.09.2014


Jawaban (4)


Pastikan Aplikasi kelas utama Anda diperluas SpringBootServletInitializer

Inisialisasi servlet

Dengan mengonversinya menjadi file WAR tanpa file XML, Anda memerlukan sinyal berbeda ke wadah servlet tentang cara meluncurkan aplikasi.

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

public class HelloWebXml extends SpringBootServletInitializer {

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

}

HelloWebXml adalah kelas Java murni yang menyediakan alternatif untuk membuat web.xml. Ini memperluas kelas SpringServletInitializer. Ekstensi ini menawarkan banyak opsi yang dapat dikonfigurasi dengan mengganti metode.

Sumber: Panduan Spring.io

person Jakub Złoczewski    schedule 15.10.2014

Pastikan Anda menghapus file pom.xml dan direktori src/, sehingga file ROOT.war akan diterapkan saat Anda melakukan git push. Anda dapat melihat artikel kb ini untuk informasi lebih lanjut: https://help.openshift.com/hc/en-us/articles/202399740-How-to-deploy-pre-compiled-java-applications-File-PERANG-dan-EAR-ke-OpenShift-gear-Anda-menggunakan-kartrid-java

person Community    schedule 02.09.2014
comment
Saya menggunakan posting ini untuk berperang di OpenShift, saya juga menghapus direktori pom.xml dan src. Saya coba dengan Tomcat dan jboss, masalahnya sama. - person Florian Courtial; 03.09.2014
comment
Apakah kode Anda diposting di suatu tempat secara publik? Apakah aplikasi spring boot berfungsi di server pengembangan lokal Anda? - person ; 03.09.2014
comment
Tidak, kodenya tidak bersifat publik (tidak ada minat), ini adalah proyek booting pegas yang sangat sederhana untuk menguji booting pegas di Openshift. Pertama saya membuat proyek ini dan saya mengubah toples menjadi perang menggunakan ini guide dan akhirnya saya berperang melawan OpenShift menggunakan tuto dari OpenShift. Secara lokal, .war bekerja dengan sangat baik. - person Florian Courtial; 03.09.2014

Saya memiliki masalah yang sama dan dapat menyelesaikannya dengan menyalin direktori .openshift dari git-repo asli ke folder repo tar.gz. Jadi setelahnya struktur direktori saya terlihat seperti ini:

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

Saya pikir masalah dalam kasus saya adalah, kucing jantan itu mencoba menyebarkan aplikasi dengan JDK 1.6, karena ini sepertinya merupakan fallback, ketika tidak ada file Java7 di direktori markers...

person Christoph Höller    schedule 10.10.2014

Ada alasannya:

  1. Periksa Anda tidak menggunakan Java 8 jika demikian, ubah ke Java 7 atau buatan sendiri. Saat Anda menggunakan Java 8, container tidak akan menyebarkan perang (diuji sendiri).
  2. Gunakan SpringBootServletInitializer seperti yang dikatakan @Jakub.
person njjnex    schedule 22.03.2015