例: 通知コンシューマー Web サービス・スケルトンの作成

この例は、Web Services Base Notification 仕様で定義された NotificationConsumer portType を実装する Web サービスを作成する際に使用します。

このタスクについて

このタスクでは、以下の 2 つのコード例を示します。
  • WSDL 文書例。Web Services Base Notification 仕様で定義された NotificationConsumer portType を実装する Web サービスを記述します。
  • Service Endpoint Interface (SEI) の基本的な実装。WSDL2Java ツールを使用して、上記の WSDL 文書から生成されます。
注: Writing JAX-WS applications for WS-Notification という記事にも、コンシューマー Web サービスの例が記載されています。

手順

通知コンシューマー Web サービス・スケルトンを作成する場合は、以下のコード例を参照してください。

以下の WSDL 文書例では、Web Services Base Notification 仕様で定義された NotificationConsumer portType を実装する Web サービスを記述しています。

<?xml version="1.0" encoding="utf-8"?>

<wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:wsn-bw="http://docs.oasis-open.org/wsn/bw-2"
    xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="uri:example.wsn/consumer"
    targetNamespace="uri:example.wsn/consumer">

    <wsdl:import namespace="http://docs.oasis-open.org/wsn/bw-2"
                           location="http://docs.oasis-open.org/wsn/bw-2.wsdl" />

    <wsdl:binding name="NotificationConsumerBinding" type="wsn-bw:NotificationConsumer">
        <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="Notify">
            <wsdlsoap:operation soapAction="" />
            <wsdl:input>
                <wsdlsoap:body use="literal" />
            </wsdl:input>
        </wsdl:operation>
    </wsdl:binding>

    <wsdl:service name="NotificationConsumerService">
        <wsdl:port name="NotificationConsumerPort" binding="tns:NotificationConsumerBinding">
            <wsdlsoap:address location="http://myserver.mycom.com:9080/Consumer" />
        </wsdl:port>
    </wsdl:service>

</wsdl:definitions>

以下の例で、WSDL2Java ツールを使用して上記の WSDL 文書から生成される Service Endpoint Interface (SEI) の基本的な実装を示します。

public class ConsumerExample implements NotificationConsumer {
        
    public void notify(NotificationMessage[] notificationMessage, SOAPElement[] any) 
                                                                    throws RemoteException {
                // Process each NotificationMessage
        for (int i=0; i<notificationMessage.length; i++) {                
            NotificationMessage message = notificationMessage[i];
                
            // Get the contents of the message
            SOAPElement messageContent = message.getMessageContents();
                
            // Get the expression indicating which topic the message is associated with
            TopicExpression topic = message.getTopic();                
                
            // Get a reference to the producer (this value is optional and so might be null)
            EndpointReference producerRef = message.getProducerReference();
                
            // Get a reference to the subscription (this value is optional and so might be null)
            EndpointReference subscriptionRef = message.getSubscriptionReference();
                
            // User defined processing ...                

        }
    }
}

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjwsn_ex_cons
ファイル名:tjwsn_ex_cons.html