URL-Muster in der Datei "web.xml" für JAX-WS-Anwendungen anpassen

Die Datei "web.xml" enthält Informationen zur Struktur und zu den externen Abhängigkeiten von Webkomponenten im Modul und beschreibt, wie die Komponenten zur Laufzeit verwendet werden. Für JAX-WS-Anwendungen (Java™ API for XML-Based Web Services) können Sie das URL-Muster in der Datei "web.xml" anpassen.

Informationen zu diesem Vorgang

Wenn Sie eine JavaBeans-basierte JAX-WS-Anwendung als Web-Service packen, ist der Web-Service in einer WAR-Datei (Webarchiv) oder in einem WAR-Modul in einer EAR-Datei (Unternehmensarchiv) enthalten. Eine WAR-Datei, die für JAX-WS aktiviert ist, enthält die folgenden Komponenten:
  • eine Datei "WEB-INF/web.xml", die die Konfigurations- und Implementierungsinformationen für die Webkomponenten enthält, aus denen sich eine Webanwendung zusammensetzt,
  • annotierte Klassen, die die Web-Services implementieren, die im Anwendungsmodul enthalten sind, einschließlich der Implementierungsklasse des Serviceendpunkts,
  • JAXB-Klassen,
  • (optional) WSDL-Dokumente (Web Services Description Language), die die Web-Services beschreiben, die im Anwendungsmodul enthalten sind,
  • (optional) XML-Schemadatei,
  • (optional) Dienstprogrammklassen,
  • (optional) Web-Service-Clients.

Das URL-Standardmuster wird mit dem Attribut "@WebService.serviceName" definiert, das in der Web-Service-Implementierungsklasse enthalten ist. Wenn die WSDL-Datei, die der Serviceimplementierungsklasse zugeordnet ist, eine einzelne Portdefinition enthält, können Sie das URL-Standardmuster verwenden oder das URL-Muster in der Datei "web.xml" anpassen. Wenn die WSDL-Datei, die der Serviceimplementierungsklasse zugeordnet ist, mehrere Portdefinitionen in derselben Servicedefinition enthält, sind angepasste URL-Muster erforderlich. Wenn die Serviceimplementierungsklasse mehrere Portdefinitionen enthält und Sie das URL-Standardmuster verwenden, werden demselben URL-Muster mehrere Serviceimplementierungsklassen zugeordnet, was zu einer Fehlerbedingung führt. Sie müssen die Datei "web.xml" bearbeiten und die URL-Muster für jede Servicedefinition anpassen. Jeder Port ist einer Web-Service-Implementierungsklasse und einem eigenen angepassten URL-Muster zugeordnet. Durch Anpassung des URL-Musters in der Datei "web.xml" korrigieren Sie URL-Musterdefinitionen, die miteinander in Konflikt stehen.

Wenn Ihre JAX-WS-Anwendung in einer EJB-JAR-Datei innerhalb einer EAR-Datei gepackt ist, können Sie die URL-Muster mit dem Befehl endptEnabler anpassen.

Vorgehensweise

  1. Legen Sie fest, ob angepasste URL-Muster erforderlich oder gewünscht sind. Angepasste URL-Muster sind nur erforderlich, wenn die WSDL-Datei für Ihren JAX-WS-Web-Service mehrere Portdefinitionen in einem einzigen Service enthält. Andernfalls können Sie optional angepasste URL-Muster definieren.
  2. Zum Anpassen des URL-Musters für eine Serviceimplementierungsklasse editieren Sie die Datei "web.xml", und geben Sie einen Eintrag <servlet> und einen entsprechenden Eintrag <servlet-mapping> für jede JAX-WS-Web-Service-Implementierungsklasse an, für die Sie ein angepasstes URL-Muster verwenden möchten. Sie müssen den Wert <url-pattern> im Eintrag <servlet-mapping> definieren.

Ergebnisse

Sie haben eine Web-Service-fähige WAR-Datei mit angepassten URL-Mustern erstellt.

Einzelne WSDL-Portdefinition in einer Serviceimplementierungsklasse

Das folgende Beispiel zeigt das URL-Standardmuster und veranschaulicht, wie das URL-Muster angepasst wird, wenn die WSDL-Datei, die der Serviceimplementierungsklasse zugeordnet ist, eine einzelne Portdefinition enthält.

Dies ist ein Auszug aus einer Web-Service-Beispielimplementierungsklasse.

package com.ibm.test;
@WebService(serviceName="EchoService", portName="SOAP11EchoServicePort")
public class EchoServiceSOAP11{

Dies ist ein Auszug aus der WSDL-Datei, die der Web-Service-Implementierungsklasse "EchoServiceSOAP11" zugeordnet ist:

<wsdl:service name="EchoService">
		<wsdl:port name="SOAP11EchoServicePort" tns:binding="..." >
		...
	</wsdl:port>
</wsdl:service>
Gemäß Spezifikation JSR-109 wird das URL-Standardmuster in diesem Beispiel über das Attribut @WebService.serviceName erstellt, und das URL-Standardmuster ist /EchoService.

Wenn Sie das URL-Muster für dieses Beispiel anpassen möchten, editieren Sie die Datei "web.xml", und fügen Sie den Eintrag url-pattern hinzu. In diesem Beispiel heißt das angepasste URL-Muster jetzt /EchoServiceSOAP11.

Der folgende Auszug stammt aus einer Beispieldatei "web.xml", die die Konfiguration eines Servlets veranschaulicht:

<servlet id="...">
		<servlet-name>com.ibm.test.EchoServiceSOAP11</servlet-name>
		<servlet-class>com.ibm.test.EchoServiceSOAP11</servlet-class>
			<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
		<servlet-name>com.ibm.test.EchoServiceSOAP11</servlet-name>
		<url-pattern>/EchoServiceSOAP11</url-pattern> ---->  URL-Muster definieren und auf die Serviceimplementierungsklasse verweisen
	</servlet-mapping>

Im folgenden Beispiel werden die erforderlichen Anpassungen beschrieben, die am URL-Muster vorgenommen werden müssen, wenn die WSDL-Datei, die der Serviceimplementierung zugeordnet ist, mehrere Portdefinitionen enthält.

Der folgende Auszug stammt aus einer Beispielimplementierungsklasse für Web-Services:

package com.ibm.test;
@WebService(serviceName="EchoService", portName="SOAP11EchoServicePort")
public class EchoServiceSOAP11{
	...
}
package com.ibm.test;
@WebService(serviceName="EchoService", portName="SOAP12EchoServicePort")
public class EchoServiceSOAP12{
	...
}

Der folgende Auszug stammt aus der WSDL-Datei, die der Web-Service-Implementierungsklasse "EchoServiceSOAP11" stammt. Jeder Port in der WSDL-Datei wird einem Element "portName" in der Web-Service-Implementierungsklasse zugeordnet.

<wsdl:service name="EchoService">
		<wsdl:port name="SOAP11EchoServicePort" tns:binding="..." >
		...
	</wsdl:port>
		<wsdl:port name="SOAP12EchoServicePort" tns:binding="..." >
		...
	</wsdl:port>
</wsdl:service>

Weil die WSDL-Datei in diesem Szenario mehrere Portdefinitionen enthält, müssen Sie das URL-Muster durch Editieren der Datei "web.xml" anpassen. Geben Sie angepasste URL-Muster für jeden Service an.

Der folgende Auszug stammt aus einer Beispieldatei "web.xml", die die Konfiguration eines Servlets veranschaulicht:

<servlet id="...">
		<servlet-name>com.ibm.test.EchoServiceSOAP11</servlet-name>
		<servlet-class>com.ibm.test.EchoServiceSOAP11</servlet-class>
			<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
		<servlet-name>com.ibm.test.EchoServiceSOAP11</servlet-name>
		<url-pattern>/EchoServiceSOAP11</url-pattern>
	</servlet-mapping>

<servlet id="...">
		<servlet-name>com.ibm.test.EchoServiceSOAP12</servlet-name>
		<servlet-class>com.ibm.test.EchoServiceSOAP12</servlet-class>
			<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
		<servlet-name>com.ibm.test.EchoServiceSOAP12</servlet-name>
		<url-pattern>/EchoServiceSOAP12</url-pattern>
</servlet-mapping>

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_customwebxml
Dateiname:twbs_customwebxml.html