Interstage Application Server SOAPサービス ユーザーズガイド
目次 索引 前ページ次ページ

第6章 CORBA/SOAPゲートウェイの実装> 6.4 EJBアプリケーションと連携する場合の留意事項

6.4.1 EJBサーバアプリケーションのメソッドに送信するパラメタの用意

■EJBサーバアプリケーションにおけるパラメタ名の変更

 EJBサーバアプリケーションのリモートインタフェース定義に定義されているメソッドのパラメタは、定義されている順に"arg1,arg2,・・・"と変名されます。
 したがって、送信パラメタの作成おいて指定するパラメタ名には、"arg1,arg2,・・・"と指定する必要があります。

 
 以下のようなメソッドを持つリモートインタフェースが定義されている場合
package pack1;
import java.rmi.*;
import javax.ejb.*;

public class calcBean implements javax.ejb.SessionBean {

public int add(int a, int b) {

}

}

 Webサービス情報ファイルでは、以下のようなパラメタ名に変名されます。

リモートインタフェース上の定義

Webサービス情報上の定義

 public int add
    (int a, int b)

 int add
    (int arg1, int arg2)

送信パラメタの作成処理は、次のようになります。

 // import文宣言
 import javax.xml.rpc.ParameterMode;
 import javax.xml.rpc.Call;
 import javax.xml.rpc.Service;
 import javax.xml.rpc.ServiceFactory;
 import javax.xml.namespace.QName;
 import javax.xml.rpc.encoding.XMLType;
     :
 // Callオブジェクトの作成
  Call call = service.createCall();
  Integer arg1 = new Integer( 10 );
  Integer arg2 = new Integer( 20 );
  call.addParameter( "arg1", XMLType.XSD_INT, ParameterMode.IN );
  call.addParameter( "arg2", XMLType.XSD_INT, ParameterMode.IN );
  java.lang.Object[] _iparamsInt = new Object[] { arg1, arg2 };
     :

■同一名のメソッドが定義されている場合のパラメタ名の変更

 EJBサーバアプリケーションのリモートインタフェースにおいて、パラメタの異なる同一名のメソッドがある場合、パラメタ名の末尾が連番に変更され、同一名のメソッドのパラメタ名は以下のように変名されます。

 
 以下のように同一名のメソッドを持つリモートインタフェースが定義されている場合

 package pack1;
 import java.rmi.*;
 import javax.ejb.*;
 public class calcBean implements javax.ejb.SessionBean {
   private transient javax.ejb.SessionContext context;
     :
   public int add(int arg0, int arg1) {
     :
   }
     :
   public float add(float arg0, float arg1) {
     :
   }
     :
 }

 Webサービス情報ファイルでは、以下のようなパラメタ名に変名されます。

リモートインタフェース上の定義

Webサービス情報上の定義

 public int add
     (int arg0, int arg1)

 int add
   (int arg1, int arg2)

 public float add
     (float arg0, float arg1)

 float add
    (float arg3, float arg4)

 この場合の送信パラメタの作成処理は、次のようになります。

 // import文宣言
 import javax.xml.rpc.ParameterMode;
 import javax.xml.rpc.Call;
 import javax.xml.rpc.Service;
 import javax.xml.rpc.ServiceFactory;
 import javax.xml.namespace.QName;
 import javax.xml.rpc.encoding.XMLType;
     :
 // Callオブジェクトの作成
 Call callint = service.createCall();
 Integer intArg1 = new Integer( 10 );
 Integer intArg2 = new Integer( 20 );
 callint.addParameter( "arg1", XMLType.XSD_INT, ParameterMode.IN );
 callint.addParameter( "arg2", XMLType.XSD_INT, ParameterMode.IN );
 callint.setReturnType(XMLType.XSD_INT);
 java.lang.Object[] _iparamsInt = new Object[] { intArg1 , intArg2 };

 // Callオブジェクトの作成
 Call callfloat = service.createCall();
 Float floatArg1 = new Float( 2.1 );
 Float floatArg2 = new Float( 2.0 );
 callfloat.addParameter( "arg3", XMLType.XSD_FLOAT, ParameterMode.IN );
 callfloat.addParameter( "arg4", XMLType.XSD_FLOAT, ParameterMode.IN );
 callfloat.setReturnType(XMLType.XSD_FLOAT);
  java.lang.Object[] _iparamsFloat = new Object[] { floatArg1 , floatArg2 };
     :

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005