Hinzufügen mehrerer servlets im einzelnen web.xml
Ich versuche zu laufen zwei Servlet-Klasse in einem einzigen web.xml aber es funktioniert nicht, jeder servlet-Klasse funktioniert unabhängig.
web.xml
:
<servlet>
<servlet-name>spring-ws</servlet-name>
<servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
<init-param>
<param-name>transformWsdlLocations</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-ws</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>240</session-timeout>
</session-config>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-ws-servlet.xml
/WEB-INF/health-page-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>health-page</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>health-page</servlet-name>
<url-pattern>/health.htm</url-pattern>
</servlet-mapping>
Lassen Sie mich wissen, wenn Sie kann herausfinden, was falsch, dass ich das Tue.
Habe ich versucht den folgenden link, aber es funktioniert nicht für mich
Kann ich mit Spring MVC und Spring WS in nur einer einzigen Anwendung?
- Die servlet-Deklaration fehlt für Ihre "spring-ws" servlet
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist nicht zur Arbeit gehen. Einer ist abgebildet auf
/*
überholt alle Anfragen. Sie müssen eine Karte auf/
statt, so dass es nur abfangen, über Anträge, die nicht aufeinander abgestimmt sind, indem Sie alle anderen vorhandenen servlets (einschließlich der JSP-servlet, das ist implizit abgebildet*.jsp
und alle "normalen" statischen Ressourcen wie CSS/JS/Bild-Dateien!). Siehe auch Unterschied zwischen /und /* im servlet-mapping url-pattern.Wenn Sie in der Lage zu dienen, die statische Ressourcen ist es auch erforderlich ist, dann besser eine Karte auf eine bestimmte URL-Muster wie
/ws/*
und erstellen Sie eineFilter
die Prüfungen der Anfrage-URI und leitet dann entsprechend. Dieser filter wiederum können sicher zugeordnet werden, auf/*
. Siehe auch diese Antwort für einen mehr konkreten code-Beispiel: Wie der Zugriff auf statische Ressourcen bei der Zuordnung einer globalen front controller servlet auf /*./*
. Eine solche Zuordnung sollte nur verwendet werden, zu filtern./*
(und eine leere Zeichenkette), entspricht alle Anfragen. Versuchen Sie es selbst und lassen servlet spec./ws/*
. Sie können wählen, was Sie wollen; es ist nur so, dass extra Pfad in der URL, die ruft dann die Spring-WS-servlet. Anstatt also zum Beispiel localhost:8080/contextname/paar-spring-ws-resource.wsdl, Sie machen zu müssen localhost:8080/contextname/ws/paar-spring-ws-resource.wsdl, um es zu laufen..wsdl
, dann können Sie auch URL-Muster der*.wsdl
statt. Der entscheidende Punkt ist, dass es nicht zu Konflikten mit der vorhandenen webapp.Ich bin mit Java-Konfiguration in meinem Projekt und der folgende code funktioniert für den gleichen Zweck:
haben Sie ein mapping für /* in die spring-ws-Abschnitt ist immer die Anforderung. Sie müssen
kommen mit einer anderen Strategie... Versuchen Sie das /health.htm vor /* - mapping.