Hitachi

Cosminexus V11 アプリケーションサーバ Webサービス開発ガイド


38.5.2 Webサービスクライアントの実装クラスを作成する

Webサービスを利用するWebサービスクライアントの実装クラスを作成します。

Webサービスに対して3回の呼び出しをするWebサービスクライアントの作成例を次に示します。

package com.sample.client;
 
import javax.xml.namespace.QName;
import javax.xml.ws.soap.AddressingFeature;
import javax.xml.ws.wsaddressing.W3CEndpointReference;
import javax.xml.ws.wsaddressing.W3CEndpointReferenceBuilder;
 
import com.sample.AddNumbers;
import com.sample.AddNumbersImplService;
import com.sample.AddNumbersFault_Exception;
 
public class TestClient {
 
    int number1 = 10;
    int number2 = 10;
    int negativeNumber = -10;
 
    public static void main(String[] args) {
        TestClient client = new TestClient();
 
        client.existActionAnnotation1();
        client.existActionAnnotation2();
        client.notExistActionAnnotation();
        client.existFaultActionAnnotation();
        client.notExistFaultActionAnnotation();
    }
 
    public void existActionAnnotation1() {
        System.out.println("existActionAnnotation1");
        try {
            AddressingFeature feature = new AddressingFeature();
 
            AddNumbersImplService service = new AddNumbersImplService();
            AddNumbers stub = service.getAddNumbersImplPort(feature);
            int result = stub.add(number1, number2);
            assert result == 20;
        } catch (Exception ex) {
            ex.printStackTrace();
            assert false;
        }
    }
 
    public void existActionAnnotation2() {
        System.out.println("existActionAnnotation2");
        try {
            AddressingFeature feature = new AddressingFeature();
            W3CEndpointReferenceBuilder eprBuilder = new W3CEndpointReferenceBuilder();
            eprBuilder.address("http://webhost:8085/addressing_dynamic_generate/AddNumbersImplService");
            eprBuilder.serviceName(new QName("http://sample.com/", "AddNumbersImplService"));
            eprBuilder.endpointName(new QName("http://sample.com/", "AddNumbersImplPort"));
            W3CEndpointReference epr = eprBuilder.build();
 
            AddNumbersImplService service = new AddNumbersImplService();
            AddNumbers stub = service.getPort(epr, AddNumbers.class, feature); 
            int result = stub.add(number1, number2);
            assert result == 20;
        } catch (Exception ex) {
            ex.printStackTrace();
            assert false;
        }
    }
 
    public void notExistActionAnnotation() {
        System.out.println("notExistActionAnnotation");
        try {
            AddressingFeature feature = new AddressingFeature();
 
            AddNumbersImplService service = new AddNumbersImplService();
            AddNumbers stub = service.getAddNumbersImplPort(feature); 
            int result = stub.add2(number1, number2);
            assert result == 20;
        } catch (Exception ex) {
            ex.printStackTrace();
            assert false;
        }
    }
 
    public void existFaultActionAnnotation() {
        System.out.println("existFaultActionAnnotation");
        try {
            AddressingFeature feature = new AddressingFeature();
 
            AddNumbersImplService service = new AddNumbersImplService();
            AddNumbers stub = service.getAddNumbersImplPort(feature);
            stub.add3(negativeNumber, number2);
            assert false;
        } catch (AddNumbersFault_Exception e) {
            System.out.println("This is expected exception");
        } catch (Exception e) {
            e.printStackTrace();
            assert false;
        }
    }
 
    public void notExistFaultActionAnnotation() {
        System.out.println("notExistFaultActionAnnotation");
        try {
            AddressingFeature feature = new AddressingFeature();
 
            AddNumbersImplService service = new AddNumbersImplService();
            AddNumbers stub = service.getAddNumbersImplPort(feature);
            stub.add(negativeNumber, number2);
            assert false;
        } catch (AddNumbersFault_Exception ex) {
            System.out.println("This is expected exception");
        } catch (Exception e) {
            e.printStackTrace();
            assert false;
        }
    }
}

作成したTestClient.javaは,UTF-8形式でc:\temp\jaxws\works\addressing\client\src\com\sample\client\ディレクトリに保存します。

なお,com.sample,AddNumbers,AddNumbersImplService,AddNumbersImplPort,add,add2,およびadd3は,生成されたJavaソースのパッケージ名,クラス名,およびクラス内のメソッド名によって変わります。異なる構成のWebサービスを開発する場合には,パッケージ名,クラス名,およびクラス内のメソッド名の記述を見直す必要があります。