Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]() ![]() |
第6章 アプリケーションの開発(Java言語) | > 6.17 データ型に対するマッピング |
IDL言語で文字列型wstringを指定した場合、Java言語で記述するとjava.lang.Stringクラスとorg.omg.CORBA.StringHolderクラスになります。
java.lang.Stringクラスは、inパラメタおよび復帰値を扱う場合に使用します。
org.omg.CORBA.StringHolderクラスは、以下のようになります。本クラスは、outやinoutパラメタを受け渡す場合に使用します。
<org.omg.CORBA.StringHolderクラス>
final public class StringHolder { public java.lang.String value; public StringHolder() { } public StringHolder(java.lang.String initial) {...} }
以下にorg.omg.CORBA.StringHolderクラス中で定義されているメンバの意味を示します。
org.omg.CORBA.StringHolderクラスのメンバ |
意味 |
value |
要素の値。 |
デフォルトコンストラクタ |
valueメンバへの設定なしで、インスタンスを生成するために使用します。 |
コンストラクタ |
valueメンバにパラメタで指定された要素の値を設定します。 |
IDL言語での定義が以下のように定義されていた場合について、アプリケーションプログラムの例を示します。
【IDL言語】
module ODsample{ interface wstringtest{ wstring op1(in wstring str1, out wstring str2, inout wstring str3); }; };
これをJava言語で記述すると以下のようになります。
【Java言語】
<インタフェース>
package ODsample; public interface wstringtestOperations { public java.lang.String op1(java.lang.String str1, org.omg.CORBA.StringHolder str2, org.omg.CORBA.StringHolder str3 ); }
import org.omg.CORBA.*; import ODsample.*; public class stringClient { public static void main(String args[]) { // ORBの前処理 // オブジェクトリファレンスの獲得 : try{ // inパラメタ用変数 String in = "in_str:data"; // outパラメタ用変数 StringHolder outHolder = new StringHolder(); // inoutパラメタ用変数 StringHolder inoutHolder = new StringHolder( "inout_str:data" ); //復帰値用変数 String result; // サーバアプリケーションのメソッド呼出し result = target.op1(in, outHolder, inoutHolder); // メソッドの結果表示 System.out.println( result ); System.out.println( outHolder.value ); System.out.println( inoutHolder.value ); } catch (Exception e) { //エラー処理 : } } }
Java言語でinパラメタをサーバアプリケーションに受け渡す場合には、直接java.lang.Stringクラスのインスタンスにデータをセットします。また、out、inoutパラメタとしてサーバアプリケーションにパラメタを受け渡す場合には、new演算子を使用して各データ型のorg.omg.CORBA.StringHolderクラスのインスタンスを生成します。inoutパラメタには、java.lang.Stringクラスのデータを設定します。設定には、以下の2つの方法があります。
【デフォルトコンストラクタを使用した方法】
StringHolder a = new StringHolder(); //デフォルトコンストラクタ a.value = "in_str:data"; //データの代入
【コンストラクタを使用した方法】
StringHolder b = new StringHolder("in_str:data"); //コンストラクタ
なお、サーバの処理結果は、out、inoutパラメタの各インスタンスのvalueに値が設定されます。復帰値は、 java.lang.Stringクラスのインスタンスに直接設定されます。
import org.omg.CORBA.*; import org.omg.PortableServer.*; import ODsample.*; // Servantクラス // サーバアプリケーションのメソッド class stringServant extends stringtestPOA { public stringServant(String[] args, java.util.Properties props) { super( args, props ); } public String op1( String in, StringHolder outHolder, StringHolder inoutHolder ) { // 入力パラメタの表示 System.out.println( in ); System.out.println( inoutHolder.value ); // 出力パラメタの設定 outHolder.value = "out_str:data"; inoutHolder.value = "inout-res_str:data"; // 復帰 return( "result_str:data" ); } } public class stringServer { public static void main(String args[]) { try { // ORBの前処理 : // Servantの生成とそのORBへの登録 : // オブジェクトリファレンスの登録 : // クライアントからの要求待合せ : } catch (Exception e) { //エラー処理 : } } }
Java言語でinパラメタを参照する場合、inパラメタのインスタンスを参照します。inoutパラメタを参照するには、org.omg.CORBA.StringHolderクラスからjava.lang.Stringクラスのインスタンスを取り出し、このインスタンスを参照します。また、out、inoutパラメタとしてクライアントアプリケーションにパラメタを返す場合、org.omg.CORBA.StringHolderクラスからjava.lang.Stringクラスのインスタンスを取り出し、このインスタンスに直接設定します。
目次
索引
![]() ![]() |