Mengganti nama file .war saya menjadi ROOT.war tetapi masih harus mengetikkan nama lengkap + /nama aplikasi

Saya membaca di sini Menyebarkan aplikasi Tomcat untuk melakukan root di openshift dengan mengganti nama Anda .war ke ROOT.war, Anda dapat mengakses situs web Anda dengan mengetikkan ini: http://app-domain.rhcloud.com/ . Jadi saya mengganti namanya menjadi root.war tapi tetap tidak ada perubahan. Saya masih harus mengetik http://app-domain.rhcloud.com/name-of-war-file

Ini adalah file web.xml saya:

<?xml version="1.0" encoding="UTF-8"?>
`<web-app version="3.0"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 metadata-complete="false">

<display-name>Advanced Mappings Demo Application</display-name>

<jsp-config>
<jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>*.jspf</url-pattern>
    <page-encoding>UTF-8</page-encoding>
    <scripting-invalid>true</scripting-invalid>
    <include-prelude>/WEB-INF/jsp/base.jspf</include-prelude>
    <trim-directive-whitespaces>true</trim-directive-whitespaces>
    <default-content-type>text/html</default-content-type>
</jsp-property-group>
</jsp-config>
<session-config>
<session-timeout>30</session-timeout>
<cookie-config>
    <http-only>true</http-only>
</cookie-config>
<tracking-mode>COOKIE</tracking-mode>
</session-config>         

Dan ini adalah metode onStartUp saya (saya mengonfigurasinya secara terprogram):

@Override
public void onStartup(ServletContext container) throws ServletException
{
AnnotationConfigWebApplicationContext rootContext =
        new AnnotationConfigWebApplicationContext();
rootContext.register(RootContextConfiguration.class);
container.addListener(new ContextLoaderListener(rootContext));

AnnotationConfigWebApplicationContext servletContext =
        new AnnotationConfigWebApplicationContext();
servletContext.register(WebServletContextConfiguration.class); 
ServletRegistration.Dynamic dispatcher = container.addServlet(
        "springDispatcher", new DispatcherServlet(servletContext)
);
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
container.getServletRegistration("default").addMapping("/resources/*",   "*.css", "*.js", "*.png", "*.gif", "*.jpg");

}

Ini adalah log aplikasi saya ketika diterapkan:

Log openshift setelah memulai ulang aplikasi saya melalui Eclipse


person Faraz    schedule 15.01.2016    source sumber
comment
Apakah Anda menamainya ROOT.war atau root.war (peka huruf besar-kecil; Anda menyebutkan kedua varian dalam pertanyaan Anda)? Apakah ada kesalahan penerapan?   -  person Jiri Fiala    schedule 20.01.2016
comment
@JiriFiala Terima kasih telah melihat pertanyaan saya. Saya menamakannya ROOT.war. Tidak ada kesalahan penerapan. Tidak ada. Saya telah menempelkan pesan log di postingan asli saya. Saya memulai ulang aplikasi saya untuk melihat apakah ada kesalahan penerapan.   -  person Faraz    schedule 20.01.2016
comment
@JiriFiala Masalah saya terpecahkan! Cek jawabannya xD   -  person Faraz    schedule 16.02.2016


Jawaban (1)


Oke sekarang saya tahu bagaimana melakukannya. Meskipun mengganti nama file .war saya menjadi ROOT.war itu penting, saya kehilangan satu file .jsp penting di lokasi penting. Saya menambahkan "index.jsp" di root aplikasi web saya. Dan di dalamnya aku punya

<%@ page session="false" %>
<c:redirect url="/main" />

Hal utama yang diperlukan di sini adalah baris ke-2. Ini akan mengalihkan semua panggilan ke http://app-domain.rhcloud.com/ ke http://app-domain.rhcloud.com/main, yang sebenarnya saya perlukan. Saya cukup mengetik http://demo-farazdurrani.rhcloud.com/ dan mengalihkannya ke http://demo-farazdurrani.rhcloud.com/main

Baris pertama adalah opsional (tidak diperlukan untuk solusi saya) dan melakukan ini: Diperlukan halaman yang tidak perlu terlibat dalam sesi. Atau jika kode ini ditentukan di halaman JSP, berarti objek sesi tidak akan tersedia untuk halaman tersebut. Oleh karena itu sesi tidak dapat dipertahankan untuk halaman itu. (hanya menaruhnya di luar sana tidak diperlukan untuk pertanyaan saya).

Saya akan menunjukkan kepada Anda bagaimana struktur proyek saya sekarang:

Struktur Direktur Proyek Eclipse

Sebelumnya di pertanyaan saya bertanya apakah saya perlu mengubah sesuatu di web.xml. Tidak, aku tidak melakukannya. Semuanya baik-baik saja di sana.

Beri suara positif pada jawaban dan pertanyaan jika itu membantu Anda, terima kasih

person Faraz    schedule 16.02.2016