WS-Addressing-Annotationen
Die Spezifikation "WS-Addressing" (Web Services Addressing) stellt transportneutrale Mechanismen für die Adressierung von Web-Services und die Vereinfachung der End-to-End-Adressierung bereit. Wenn Sie eine JAX-WS-Anwendung haben, können Sie Java-Annotationen in Ihrem Code verwenden, um das WS-Addressing-Verhalten zur Laufzeit festzulegen.
Verwenden Sie WS-Addressing-Informationen zum Aktivieren der WS-Addressing-Unterstützung, um anzugeben, ob WS-Addressing-Informationen in eingehenden Nachrichten erforderlich sind, und um Aktionen anzugeben, die einer Web-Service-Operation oder einer Fehlerantwort zugeordnet werden sollen.
- javax.xml.ws.Action
- Gibt die Aktion an, die einer Web-Service-Operation zugeordnet werden soll.
- Wenn Sie bei der Entwicklung von JAX-WS-Web-Services einen Bottom-up-Ansatz verfolgen, können Sie mit dem Befehlszeilentool wsgen ein WSDL-Dokument aus Java-Anwendungscode generieren. Damit dieses Attribut der WSDL-Operation hinzugefügt wird, müssen Sie auch die Annotation "@Addressing" in der Implementierungsklasse angeben. Das Ergebnis im generierten WSDL-Dokument ist, dass die Action-Annotationen das Attribut wsam:Action in den Elementen input message und output message des Konstrukts wsdl:operation haben. Wenn Sie die Annotation "@Addressing" nicht verwenden möchten, können Sie Ihr eigenes WSDL-Dokument mit dem bereits definierten Attribut "Action" bereitstellen.
- Wenn Sie bei der Entwicklung von JAX-WS-Web-Services einen Top-down-Ansatz verfolgen, können Sie mit dem Befehlszeilentool wsimport Java-Anwendungscode aus einem vorhandenen WSDL-Dokument generieren. In solchen Fällen enthält der generierte Java-Code die richtigen Action- und FaultAction-Annotationen.
- Wenn diese Aktion nicht in Codeannotationen oder im WSDL-Dokument angegeben ist,
wird das Standardaktionsmuster laut Definition in der Spezifikation
Web Services Addressing 1.0 Metadata verwendet. Ausführliche
Informationen hierzu finden Sie in dieser Spezifikation.
Anmerkung: Die Laufzeitumgebung von WebSphere Application Server unterstützt zwar das veraltete Attribut wsaw:Action, doch wenn Sie versuchen, Java-Code aus einem alten WSDL-Dokument zu generieren, das dieses veraltete Attribut enthält, wird das Attribut ignoriert.
- javax.xml.ws.FaultAction
- Gibt die Aktion an, die der Fehlerantwort hinzugefügt wird. Wenn Sie diese Annotation mit einer bestimmten Methode verwenden, wird dem Element "fault" der WSDL-Operation, die dieser Methode entspricht, das WS-Addressing-Erweiterungsattribut "FaultAction" hinzugefügt. Damit dieses Attribut der WSDL-Operation hinzugefügt wird, müssen Sie auch die Annotation "Addressing" in der Implementierungsklasse angeben. Wenn Sie die Annotation "Addressing" nicht verwenden möchten, können Sie ein eigenes WSDL-Dokument bereitstellen, in dem das Attribut "Action" bereits definiert ist. Diese Annotation muss in einer Annotation "Action" enthalten sein.
- WSDL-Dokumente, die aus Java-Anwendungscode generiert werden, der die
Annotation "WS-Addressing FaultAction" enthält, haben das Attribut wsam:Action
im Element fault message des Konstrukts wsdl:operation.
Anmerkung: Um sicherzustellen, dass alle angepassten Exception-Klassen, die Sie schreiben, dem generierten WSDL-Dokument erfolgreich zugeordnet werden, müssen Sie die Klasse java.lang.Exception erweitern und nicht die Klasse java.lang.RuntimeException.
- javax.xml.ws.soap.Addressing
- Gibt an, dass dieser Service die WS-Addressing-Unterstützung aktivieren soll. Sie können diese Annotation nur in der Serviceimplementierungs-Bean verwenden. In der Serviceendpunktschnittstelle ist diese Annotation nicht verwendbar.
- com.ibm.websphere.wsaddressing.jaxws21.SubmissionAddressing
- Diese Annotation ist Teil der IBM Implementierung der Spezifikation JAX-WS 2.1. Diese Annotation gibt an, dass der Service die WS-Addressing-Unterstützung für die WS-Addressing-Spezifikation von 2004/08 verwenden soll. Sie können diese Annotation nur in der Serviceimplementierungs-Bean verwenden. In der Serviceendpunktschnittstelle ist diese Annotation nicht verwendbar.
Weitere Informationen zu den Annotationen "Addressing" und "SubmissionAddressing" einschließlich Codebeispielen finden Sie im Artikel Web-Services-Addressing-Unterstützung für JAX-WS-Anwendungen mit Addressing-Annotationen aktivieren.
@WebService(name = "Calculator")
public interface Calculator {
...
@Action(
input="http://calculator.com/inputAction",
output="http://calculator.com/outputAction",
fault = { @FaultAction(className=AddNumbersException.class,
value="http://calculator.com/faultAction")
}
)
public int add(int value1, int value2) throws AddNumbersException {
return value1 + value2;
}
}
Wenn Sie ein Tool für die Generierung von Serviceartefakten aus Code verwenden, sind die
WSDL-Tags, die aus dem vorherigen Beispiel generiert werden, folgende:
<definitions targetNamespace="http://example.com/numbers" ...>
...
<portType name="AddPortType">
<operation name="Add">
<input message="tns:AddInput" name="Parameters"
wsam:Action="http://calculator.com/inputAction"/>
<output message="tns:AddOutput" name="Result"
wsam:Action="http://calculator.com/outputAction"/>
<fault message="tns:AddNumbersException" name="AddNumbersException"
wsam:Action="http://calculator.com/faultAction"/>
</operation>
<portType>
...
<definitions>