So legen Sie den Spring-Stammkontextpfad fest

Ich bin ein Spring-Neuling und erstelle eine Spring-Web-App (nicht Spring-Boot - wie viel Unterschied macht das?). Die Bereitstellung erfolgt auf einem Tomcat 7-Server.

Die App ist betriebsbereit. Mein Problem ist, dass nur über die Standard-URL zugegriffen werden kann:

http: //mycompany.com: 8081 / cwing-0.0.3-SNAPSHOT / index.html

Folgendes funktioniert nicht:http: //mycompany.com: 8081 / cwing-0.0.3-SNAPSHOT http: //mycompany.com: 8081 / cwing-0.0.3-SNAPSHOT /

obwohl meine web.xml index.html als Begrüßungsseite auflistet.

Ein zusätzliches Symptom für das Problem ist, dass alle Arten von Links innerhalb der Anwendung als relativ angegeben werden müssen und nicht mit einem vorangestellten '/'

Aber auch diese URLs sind nicht das, was ich wirklich will.

Ich würde lieber @ angeb

http: //mycompany.com: 8081 / cwing

und lassen Sie es die index.html aufrufen.

Folgen der Führung von Kontextpfad zur Spring Boot-Anwendung hinzufügen

Ich habe eine application.xml-Datei in src / main / resources mit folgendem Inhalt erstellt:

server.contextPath=/cwing
server.port=8081

Dies funktioniert nicht.http: //mycompany.com: 8081 / cwing zeigt eine leere Seite mit einem 404-Fehler auf dem Server an, ebenso wiehttp: //mycompany.com: 8081 / cwing / index.html.

Ich muss etwas vermissen. Was ist sonst noch nötig, damit dies funktioniert, so wie ich es möchte?

UPDATE: hier ist, wie gefragt, die web.xml (irrelevante Details entfernt).

    <?xml version="1.0"?>
    <web-app 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"
              version="3.0">
      <display-name>cwing</display-name>

        <!-- Creates the Spring Container shared by all Servlets and Filters -->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <!-- The definition of the Root Spring Container shared by all Servlets 
            and Filters -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
            /WEB-INF/spring/context.xml
            /WEB-INF/spring/datasource.xml
            /WEB-INF/spring/security.xml
            </param-value>
        </context-param>

        <servlet>
            <servlet-name>d</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>
                    /WEB-INF/spring/context.xml
                    /WEB-INF/spring/datasource.xml
                    /WEB-INF/spring/security.xml
                </param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
            <async-supported>true</async-supported>
        </servlet>

        <servlet-mapping>
            <servlet-name>d</servlet-name>
            <url-pattern>/*</url-pattern>
        </servlet-mapping>

        <!-- Disables Servlet Container welcome file handling. Needed for compatibility 
            with Servlet 3.0 and Tomcat 7.0 -->
        <welcome-file-list>
            <welcome-file>index.html</welcome-file>
        </welcome-file-list>

        <filter>
            <filter-name>springSecurityFilterChain</filter-name>
            <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        </filter>

        <filter-mapping>
            <filter-name>springSecurityFilterChain</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping> 
...
</web-app>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage