เปลี่ยนชื่อไฟล์ .war ของฉันเป็น ROOT.war แต่ยังต้องพิมพ์ชื่อเต็ม + /appname

ฉันอ่านที่นี่ ปรับใช้แอปพลิเคชัน Tomcat เพื่อรูทใน openshift โดยเปลี่ยนชื่อของคุณ .war ไปยัง ROOT.war คุณจะสามารถเข้าถึงเว็บไซต์ของคุณได้โดยพิมพ์สิ่งนี้: http://app-domain.rhcloud.com/ ดังนั้นฉันจึงเปลี่ยนชื่อเป็น root.war แต่ก็ยังไม่มีการเปลี่ยนแปลง ฉันยังต้องพิมพ์ http://app-domain.rhcloud.com/name-of-war-file

นี่คือไฟล์ web.xml ของฉัน:

<?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>         

และนี่คือวิธี onStartUp ของฉัน (ฉันกำหนดค่าโดยทางโปรแกรม):

@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");

}

นี่คือบันทึกของแอปพลิเคชันของฉันเมื่อถูกปรับใช้:

บันทึก Openshift หลังจากรีสตาร์ทแอปพลิเคชันของฉันผ่าน Eclipse


person Faraz    schedule 15.01.2016    source แหล่งที่มา
comment
คุณตั้งชื่อมันว่า ROOT.war หรือ root.war (คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ คุณกำลังพูดถึงทั้งสองรูปแบบในคำถามของคุณ) มีข้อผิดพลาดในการปรับใช้หรือไม่?   -  person Jiri Fiala    schedule 20.01.2016
comment
@JiriFiala ขอบคุณที่ดูคำถามของฉัน ฉันตั้งชื่อมันว่า ROOT.war ไม่มีข้อผิดพลาดในการปรับใช้ใดๆ ไม่มี. ฉันได้วางข้อความบันทึกในโพสต์ต้นฉบับของฉันแล้ว ฉันรีสตาร์ทแอปพลิเคชันเพื่อดูว่ามีข้อผิดพลาดในการปรับใช้หรือไม่   -  person Faraz    schedule 20.01.2016
comment
@JiriFiala ปัญหาของฉันได้รับการแก้ไขแล้ว! ตรวจคำตอบ xD   -  person Faraz    schedule 16.02.2016


คำตอบ (1)


โอเค ตอนนี้ฉันรู้แล้วว่าต้องทำอย่างไร แม้ว่าการเปลี่ยนชื่อไฟล์ .war ของฉันเป็น ROOT.war จะมีความสำคัญ แต่ฉันไม่มีไฟล์ .jsp ที่สำคัญในตำแหน่งที่สำคัญหายไป ฉันเพิ่ม "index.jsp" ที่รูทของเว็บแอปพลิเคชันของฉัน และข้างในนั้นฉันมี

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

สิ่งสำคัญที่จำเป็นที่นี่คือบรรทัดที่ 2 โดยจะเปลี่ยนเส้นทางการโทรทั้งหมดไปยัง http://app-domain.rhcloud.com/ ไปยัง http://app-domain.rhcloud.com/main ซึ่งฉันต้องการจริงๆ ฉันแค่พิมพ์ http://demo-farazdurrani.rhcloud.com/ และมันเปลี่ยนเส้นทางไปที่ http://demo-farazdurrani.rhcloud.com/main

บรรทัดแรกเป็นทางเลือก (ไม่จำเป็นสำหรับโซลูชันของฉัน) และกำลังทำสิ่งนี้: เป็นเพจที่จำเป็นที่ไม่จำเป็นต้องมีส่วนร่วมในเซสชัน หรือหากมีการระบุรหัสนี้ในเพจ JSP หมายความว่าออบเจ็กต์เซสชันจะไม่พร้อมใช้งานสำหรับเพจนั้น ดังนั้นจึงไม่สามารถรักษาเซสชันสำหรับเพจนั้นได้ (แค่วางไว้ตรงนั้นไม่จำเป็นสำหรับคำถามของฉัน)

ฉันจะแสดงให้คุณเห็นว่าโครงสร้างโครงการของฉันเป็นอย่างไรตอนนี้:

โครงสร้างผู้อำนวยการโครงการ Eclipse

ก่อนหน้านี้ในคำถาม ฉันถามว่าฉันต้องเปลี่ยนแปลงอะไรใน web.xml หรือไม่ ไม่ฉันไม่ทำ ทุกอย่างเรียบร้อยดีที่นั่น

โหวตคำตอบและคำถามว่ามันช่วยคุณได้หรือไม่ขอบคุณ

person Faraz    schedule 16.02.2016