Apcoordinator ユーザーズガイド
目次 前ページ次ページ

第2部 Apcoordinatorコアの機能> 第8章 Webサービスの呼び出し> 8.2 一般的なWebサービスの呼び出し

8.2.2 Apacheの場合

Apacheを使用する場合、一般的なWebサービスを呼び出すには、次の手順で行います。

  1. 呼び出すサービスが必要とする、復帰値型、パラメタ型を作成します。
    必要に応じてMappingRegistryによる型変換を設定します。
  2. DispatchContextクラスからSOAPCallFactoryクラスのオブジェクトを取得します。
  3. SOAPCallFactoryクラスのgetServiceCallメソッドを呼び出し、サービスのURL、メソッド名、サービス識別名、返却値の型、利用APIの種別を引数にしてServiceCallオブジェクトを取得します。
  4. ServiceCallクラスのinvokeメソッドで、サービスを呼び出します。
  5. invokeの復帰値を取得します。

以下に記述例を示します。

・MappingRegistryを利用しない呼び出し例
import com.fujitsu.uji.soap.SOAPCallFactory;
import com.fujitsu.uji.soap.ServiceCall;
import com.fujitsu.uji.soap.Response;
import com.fujitsu.uji.soap.Parameter;
import com.fujitsu.uji.soap.Parameters; public void someMethod(DispatchContext context, MyDataBean dataBean) { ... // 復帰値型を設定 Class[] paramTypes = new Class[]{String.class}; // メソッドのパラメタ型を設定 Parameters params = new Parameters(); params.add("param1", String.class, "add"); // CallFactoryの取得 SOAPCallFactory callFactory=(SOAPCallFactory)context.getCallFactory(CallFactory.SOAP); ServiceCall call = factory.getServiceCall("myservice"); // サービスの呼び出し Response resp = call.invoke(params); // 復帰値を取得 Parameter ret = resp.getReturnValue(); String str = (String)ret.getValue(); ... }

・MappingRegistryを利用した呼び出し例
import com.fujitsu.uji.soap.SOAPCallFactory;
import com.fujitsu.uji.soap.ServiceCall;
import com.fujitsu.uji.soap.Response;
import com.fujitsu.uji.soap.Parameter;
import com.fujitsu.uji.soap.Parameters;
import com.fujitsu.uji.soap.SOAPMappingRegistry_Apache;
import com.fujitsu.uji.soap.QName_Apache;
import org.apache.soap.encoding.soapenc.BeanSerializer;
import org.apache.soap.Constants;
  
public void someMethod(DispatchContext context, MyDataBean dataBean) {
  ...
  // 復帰値型を設定
  Class[] paramTypes = new Class[]{String.class};
  
  // メソッドのパラメタ型を設定
  SomeClass someClass = new SomeClass();
  Parameters params = new Parameters();
  params.add("param1", String.class, "test");
  params.add("param2", SomeClass.class, someClass);
  
  // MappingRegistryの設定
  SOAPMappingRegistry_Apache smr = new SOAPMappingRegistry_Apache();
  BeanSerializer beanSer = new BeanSerializer();
  smr.mapTypes(Constants.NS_URI_SOAP_ENC,
               new QName_Apache("urn:some-convert-namespace", "typename"),
                           SomeClass.class,
                           beanSer,
                           beanSer);
  
  // CallFactoryの取得
  String url = new String("http://some.host/service");
  SOAPCallFactory callFactory=(SOAPCallFactory)context.getCallFactory(CallFactory.SOAP);
  ServiceCall call = factory.getServiceCall("myservice");
  
  // MappingRegistryの設定
  call.setMappingRegistry(smr);

  // サービスの呼び出し
  Response resp = call.invoke(params);
  
  // 復帰値を取得
  Parameter ret = resp.getReturnValue();
  String str = (String)ret.getValue();
  ...
}

目次 前ページ次ページ

All Rights Reserved, Copyright © 富士通株式会社 2000-2005