HTTP-Conduit-Clienteigenschaften und angepasste Benutzereigenschaften aktivieren

Sie können die HTTP -Client-Eigenschaften und benutzerdefinierten Eigenschaften mithilfe der ibm-ws-bnd.xml -Datei für JAX-WS-Anwendungen auf Liberty definieren.

Vorbereitungen

Die Datei ibm-ws-bnd.xml muss sich im Verzeichnis /WEB-INF einer webbasierten Web-Service-Anwendung (WAR-Datei) oder im Verzeichnis /META-INF einer EJB-basierten Web-Service-Anwendung (JAR-Datei) befinden. Wenn der Client in clientContainer ausgeführt wird, muss die Datei ibm-ws-bnd.xml im Verzeichnis /META-INF der JAR-Datei in der Client-EAR-Datei enthalten sein.

Informationen zu dieser Task

HTTP-Clienteigenschaften und angepasste Benutzereigenschaften können mit den Elementen service-ref und port in der Datei ibm-ws-bnd.xml für den betreffenden Service-Client oder Port, der durch die Annotation @WebServiceRef injiziert wird, definiert werden. Die Eigenschaften im Element port setzen die entsprechenden Eigenschaften im Element service-ref außer Kraft.
HTTP-Clienteigenschaften
Die folgenden HTTP -Client-Eigenschaften werden in Liberty unterstützt; diese Eigenschaften müssen das Präfix http.conduit.client. haben. Beispiel: http.conduit.client.ConnectionTimeout. Diese HTTP-Clienteigenschaften sind nur gültig, wenn SOAP-Nachrichten gesendet oder empfangen werden. Sie finden keine Anwendung, wenn eine Verbindung zu einem WSDL-URL hergestellt wird.
  • ConnectionTimeout
  • ReceiveTimeout
  • AsyncExecuteTimeout
  • AsyncExecuteTimeoutRejection
  • AutoRedirect
  • MaxRetransmits
  • AllowChunking
  • ChunkingThreshold
  • Connection
  • DecoupledEndpoint
  • ProxyServer
  • ProxyServerPort
  • ProxyServerType
  • NonProxyHosts
Weitere Informationen zu diesen Eigenschaften finden Sie im HTTP -Konfigurationsschema in Apache CXF und Client HTTP Transport (einschließlich SSL-Unterstützung ).
Angepasste Benutzereigenschaften
Neben den unterstützten HTTP -Client-Eigenschaften in Liberty können Sie benutzerdefinierte Eigenschaften definieren, die in Ihrer Anwendung verwendet werden könnten, und diese Eigenschaften aus dem Kontext der Client-Anforderung abrufen. Alle im Element properties definierten Attribute werden in den Kontext der Service-Client-Anforderung gestellt.

Für alle verfügbaren Elemente, die Sie in der Datei ibm-ws-bnd.xmlkonfigurieren können.

Vorgehensweise

  1. Konfigurieren Sie HTTP-Verbindungseigenschaften.
    Die folgenden Beispiele zeigen, wie die HTTP-Clienteigenschaften ConnectionTimeout und ReceiveTimeout in der Datei ibm-ws-bnd.xml konfiguriert werden. Das folgende Beispiel zeigt, wie die HTTP-Clienteigenschaften ConnectionTimeout und ReceiveTimeout für alle Ports des injizierten Service-Clients mit @WebServiceRef(name="service/SimpleEchoService") angewendet werden. Für den Port SimpleEchoPort wird auch der Wert der angepassten Benutzereigenschaft vendor angewendet.
    <?xml version="1.0" encoding="UTF-8"?>
    <webservices-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee" 
    		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    		xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ws-bnd_1_0.xsd"
    		version="1.0">
    	<service-ref name="service/SimpleEchoService">
    		<port name="SimpleEchoPort">
    			<properties vendor="IBM" />
    		</port>
    		<properties http.conduit.client.ConnectionTimeout="10000" 
    			http.conduit.client.ReceiveTimeout="15000" />
    	</service-ref>
    	...
    </webservices-bnd>
  2. Rufen Sie anschließend die in der Datei ibm-ws-bnd.xml definierten Eigenschaften wie folgt aus dem Anforderungskontext des Clients ab, der von der Annotation @WebServiceRef(name="service/SimpleEchoService") eingefügt wird.
    @WebServiceRef(name="service/SimpleEchoService")
    private EchoService echoService;
       ...
    Echo echo = echoService.getEchoPort();
    BindingProvider bp = (BindingProvider)echo;
    String connTimeout = bp.getRequestContext().get("http.conduit.client.ConnectionTimeout").toString(); 
    String recTimeout = bp.getRequestContext().get("http.conduit.client.ReceiveTimeout").toString(); 
    String vendor = bp.getRequestContext().get("vendor").toString(); 
    		...