JAX-WS:クライアント側とサーバー側のSOAPハンドラテスト

これは、JAX-WS SOAPハンドラの第3部です。 link://webservices/jax-ws/jax-ws-soap-handler-in-server-side/[パート1:

Webサービス/jax-ws/jax-ws-soaphandler-in-client-side/[パート2:

クライアントサイドのSOAPハンドラ]を参照してください。以下のユースケースを参照

1.有効なMACアドレス

公開されたサービスにリクエストを送信する 有効な コンピュータのMACアドレスを持つクライアントを上から下に示します。

Client : getHeaders()......
Client : getHeaders()......
Client : handleMessage()......
Current IP address : 192.168.0.2
Current MAC address : 90-4C-E5-44-B9-8F
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Header>
        <macAddress xmlns="http://ws.mkyong.com/"
            xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
            SOAP-ENV:actor="http://schemas.xmlsoap.org/soap/actor/next">
                90-4C-E5-44-B9-8F
        </macAddress>
    </S:Header>
    <S:Body>
        <ns2:getServerName xmlns:ns2="http://ws.mkyong.com/"/>
    </S:Body>
</S:Envelope>
Client : handleMessage()......
Client : close()......
mkyong server

2.無効なMACアドレス

公開されたサービスにリクエストを送信している 無効な コンピュータのMACアドレスを持つクライアントを上から下に示し、 `SOAPFaultException`を取得します。

Client : getHeaders()......
Client : getHeaders()......
Client : handleMessage()......
Current IP address : 192.168.0.2
Current MAC address : 90-4C-E5-44-B9-00
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Header>
        <macAddress xmlns="http://ws.mkyong.com/"
            xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
            SOAP-ENV:actor="http://schemas.xmlsoap.org/soap/actor/next">
                90-4C-E5-44-B9-00
        </macAddress>
    </S:Header>
    <S:Body>
        <ns2:getServerName xmlns:ns2="http://ws.mkyong.com/"/>
    </S:Body>
</S:Envelope>
Server : handleMessage()......
Server : close()......
Client : handleFault()......
Client : close()......
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Invalid mac address, access is denied.
        at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(Unknown Source)
        at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(Unknown Source)
        at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source)
        at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source)
        at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(Unknown Source)
        at $Proxy29.getServerName(Unknown Source)
        at com.mkyong.client.WsClient.main(WsClient.java:13)
Caused by: javax.xml.ws.soap.SOAPFaultException: Invalid mac address, access is denied.
      //...

完了しました。

結論

要するに、Webサービスハンドラは、クライアント側またはサーバ側の両方で送受信されるSOAPメッセージを傍受する傍受者に過ぎず、SOAPメッセージ値も操作できます。

ソースコードをダウンロードする

ダウンロード - リンク://wp-content/uploads/2011/01/JAX-WS-Handler-Example.zip[JAX-WS-Handler-Example.zip](21KB)