Einhaltung von WSDL-Bindungen in JAX-WS-Web-Services durchsetzen

In Java™ API for XML-Based Web Services (JAX-WS) Version 2.1 wurde das Konzept von Features als eine Methode für die Steuerung bestimmter Funktionen und Verhalten über das Programm eingeführt. RespectBindingFeature ist eines der unterstützten Standardfeatures. Mit RespectBindingFeature können Sie steuern, ob eine JAX-WS-Implementierung erforderlich ist, damit der Inhalt der WSDL-Bindung (Web Services Description Language), die einem Endpunkt zugeordnet ist, berücksichtigt wird.

Informationen zu diesem Vorgang

Obwohl im Entwicklungsprozess häufig WSDL-Dokumente verwendet werden, ist die tatsächliche Verwendung bereitgestellter WSDL-Dokumentspezifikationen zur Laufzeit in den Versionen der Spezifikation JAX-WS vor Version 2.1 nicht klar definiert. In der Spezifikation JAX-WS Version 2.1 wurde das Feature "RespectBindingFeature" hinzugefügt, um die Auswirkung des Elements "wsdl:binding" in einer JAX-WS-Laufzeitumgebung klar zu definieren.

Die Aktivierung des Features "RespectBindingFeature" bewirkt, dass die JAX-WS-Laufzeitumgebung das Element "wsdl:binding" für einen Endpunkt zur Laufzeit überprüft, um sicherzustellen, dass die Bindung der SEI-Parameter (Service Endpoint Interface, Serviceendpunktschnittstelle) und die Rückgabewerte berücksichtigt werden. Außerdem stellt dieses Feature sicher, dass alle erforderlichen Erweiterungen von wsdl:binding von der Laufzeitumgebung verstanden und verwendet werden bzw. dass die Erweiterungen von der Anwendung explizit inaktiviert wurden. Ihre JAX-WS-Anwendung kann eine bestimmte wsdl:binding-Erweiterung, die eine definierte WebServiceFeature-Schnittstelle hat, inaktivieren, indem sie die entsprechende Annotation, die diesem Feature zugeordnet ist, mithilfe einer API verwendet, die die Schnittstelle "javax.xml.ws.WebServiceFeature" akzeptiert, oder indem sie die Implementierungsdeskriptoren konfiguriert.

Wenn das Feature "RespectBindingFeature" nicht aktiviert ist, was die Standardeinstellung ist, kann die Laufzeitumgebung wählen, ob Teile des Elements "wsdl:binding" umgesetzt werden.

Vorgehensweise

  1. Entwickeln Sie Java-Artefakte für Ihre JAX-WS-Anwendung, die eine WSDL-Datei (Web Services Description Language) enthält, die Ihre Web-Service-Anwendung darstellt.
    1. Wenn Sie eine WSDL-Datei als Ausgangspunkt verwenden, entwickeln Sie die Java-Artefakte aus einer WSDL-Datei, indem Sie mit dem Befehl "wsimport" die erforderlichen portierbaren JAX-WS-Artefakte generieren.
    2. Wenn Sie JavaBeans-Komponenten als Ausgangspunkt verwenden, entwickeln Sie die Java-Artefakte für JAX-WS-Anwendungen, und generieren Sie eine WSDL-Datei mit dem Befehl "wsgen".
  2. Wenn Sie RespectBindingFeature in Ihrer Endpunktimplementierungsklasse aktivieren möchten, verwenden Sie dazu eine der folgenden Methoden:
    • Annotation "@RespectBinding" im Endpunkt verwenden.

      Zum Aktivieren von RespectBinding in einem Endpunkt verwenden Sie die Annotation "@RespectBinding" (javax.xml.ws.RespectBinding) im Endpunkt. Die Annotation "@RespectBinding" hat nur einen einzigen Parameter, den Parameter enabled. Dieser Parameter ist optional. Der Parameter "enabled" hat einen booleschen Wert und gibt an, ob RespectBindingFeature für den JAX-WS-Endpunkt aktiviert ist.

      Das folgende Beispielsnippet veranschaulicht das Hinzufügen der Annotation "@RespectBinding" für den JAX-WS-Endpunkt MyServiceImpl:
      @RespectBinding(enabled=true))
      @WebService
      public class MyServiceImpl {
      ...
      }
    • Implementierungsdeskriptorelement <respect-binding> verwenden.
      Sie können das Element <respect-binding> im Element <port-component> des Implementierungsdeskriptors "webservices.xml" als Alternative zur Annotation "@RespectBinding" in der Implementierungsklasse des Serviceendpunkts verwenden. Beispiel:
      <port-component>
           <port-component-name>MyPort1</port-component-name>
           <respect-binding>
               <enabled>true</enabled>
           </respect-binding>
           <service-impl-bean>
               <servlet-link>MyPort1ImplBean</servlet-link>
           </service-impl-bean>
      </port-component>
  3. Wenn Sie RespectBindingFeature in Ihrem Client aktivieren möchten, verwenden Sie eine der folgenden Methoden:
    • RespectBindingFeature in einem Dispatchclient verwenden. Beispiel:
      RespectBindingFeature respectBinding = new RespectBindingFeature();
      Service svc = Service.create(serviceName);
      svc.addPort(portName, SOAPBinding.SOAP11_HTTP_BINDING, endpointUrl);
      Dispatch<Source> dsp = svc.createDispatch(portName, Source.class, Service.Mode.PAYLOAD, respectBinding);
    • RespectBindingFeature in einem dynamischen Proxyclient verwenden. Beispiel:
      // Dynamischen Proxy mit aktiviertem Element RespectBinding erstellen
        Service svc = Service.create(serviceName);
        RespectBindingFeature respectBinding = new RespectBindingFeature();
        RespectBindingSample proxy = svc.getPort(portName, RespectBindingSample.class, respectBinding);
    • RespectBindingFeature im Client mithilfe der Annotation "@RespectBinding" aktivieren. Beispiel:
      public class MyClientApplication {
      
                     // RespectBinding für eine port-component-ref-Ressourceninjektion aktivieren
                         @RespectBinding(enabled=true)
                         @WebServiceRef(MyService.class)
                         private MyPortType myPort;
                     ...
      }
    • RespectBindingFeature im Client mithilfe von Implementierungsdeskriptorelementen in einem Element "port-component-ref" aktivieren. Beispiel:
      <service-ref>
          <service-ref-name>service/MyPortComponentRef</service-ref-name>
          <service-interface>com.example.MyService</service-ref-interface>
          <port-component-ref>
              <service-endpoint-interface>com.example.MyPortType</service-endpoint-interface>
              <respect-binding>
                  <enabled>true</enabled>
              </respect-binding>
          </port-component-ref>
      </service-ref>

Ergebnisse

Durch die Implementierung des Features "RespectBindingFeature" haben Sie festgelegt, dass der Inhalt einer WSDL-Bindung, die einem Endpunkt für Ihre JAX-WS-Anwendung zugeordnet ist, eingehalten werden muss.


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_enablerespectbindingfeature
Dateiname:twbs_enablerespectbindingfeature.html