| Interstage Application Server SOAPサービス ユーザーズガイド |
目次
索引
![]()
|
| 第8章 サポートされるデータ型 | > 8.1 XMLとJavaのデータ型マッピング |
以下の表にXMLのデータ型と、Java言語のRPCアプリケーションで使用するデータ型の対応を示します。
|
XMLのデータ型 |
RPCアプリケーションのパラメタ(Javaのデータ型クラス) |
|
|---|---|---|
|
inまたはreturn |
outまたはinout |
|
|
xsd:int |
int |
YYY.IntHolder |
|
soap:int ※ |
||
|
xsd:unsignedInt |
XXX.UnsignedInt |
ZZZ.UnsignedIntHolder |
|
xsd:short |
short |
YYY.ShortHolder |
|
soap:short ※ |
||
|
xsd:unsignedShort |
XXX.UnsignedShort |
ZZZ.UnsignedShortHolder |
|
xsd:long |
long |
YYY.LongHolder |
|
soap:long ※ |
||
|
xsd:unsignedLong |
XXX.UnsignedLong |
ZZZ.UnsignedLongHolder |
|
xsd:byte |
byte |
YYY.ByteHolder |
|
soap:byte ※ |
||
|
xsd:unsignedByte |
XXX.UnsignedByte |
ZZZ.UnsignedByteHolder |
|
xsd:float |
float |
YYY.FloatHolder |
|
soap:float ※ |
||
|
xsd:double |
double |
YYY.DoubleHolder |
|
soap:double ※ |
||
|
xsd:boolean |
boolean |
YYY.BooleanHolder |
|
soap:boolean ※ |
||
|
xsd:string |
java.lang.String |
YYY.StringHolder |
|
soap:string ※ |
||
|
xsd:decimal |
java.math.BigDecimal |
YYY.BigDecimalHolder |
|
soap:decimal ※ |
||
|
xsd:integer |
java.math.BigInteger |
YYY.BigIntegerHolder |
|
soap:integer ※ |
||
|
soap:base64 |
byte[] |
YYY.ByteArrayHolder |
|
xsd:base64Binary |
byte[] |
YYY.ByteArrayHolder |
|
xsd:hexBinary |
byte[] |
YYY.ByteArrayHolder |
|
AAA:timeInstant |
java.util.Calendar |
YYY.CalendarHolder |
|
xsd:dateTime |
java.util.Calendar |
YYY.CalendarHolder |

Java言語には符号なし(unsigned)のデータ型がありません。そのため、符号なし(unsigned)のデータ型を表すクラスとして、Interstage SOAPサービスが提供する以下のクラスを使用します。
|
クラス名 |
説明 |
|---|---|
|
XXX.UnsignedByte |
XMLのデータ型unsignedByteを表すクラスです。 |
|
XXX.UnsignedShort |
XMLのデータ型unsignedShortを表すクラスです。 |
|
XXX.UnsignedInt |
XMLのデータ型unsignedIntを表すクラスです。 |
|
XXX.UnsignedLong |
XMLのデータ型unsignedLongを表すクラスです。 |
符号なし値を表すクラスは、以下のメソッドを持ちます。
|
クラス名 |
メソッド名 |
説明 |
|---|---|---|
|
XXX.UnsignedByte |
public UnsignedByte(long value) |
コンストラクタ。 |
|
public byte byteValue() |
byte値として値を返すメソッドです。 |
|
|
public short shortValue() |
short値として値を返すメソッドです。 |
|
|
XXX.UnsignedShort |
public UnsignedShort(long value) |
コンストラクタ。 |
|
public short shortValue() |
short値として値を返すメソッドです。 |
|
|
public int intValue() |
int値として値を返すメソッドです。 |
|
|
XXX.UnsignedInt |
public UnsignedInt(long value) |
コンストラクタ。 |
|
public int intValue() |
int値として値を返すメソッドです。 |
|
|
public long longValue() |
long値として値を返すメソッドです。 |
|
|
XXX.UnsignedLong |
public UnsignedLong(double value) |
コンストラクタ。 |
|
public long longValue() |
long値として値を返すメソッドです。 |
|
|
public BigInteger bigIntegerValue() |
java.math.BigIntegerとして値を返すメソッドです。 |

out/inoutパラメタを使用する場合、RPCサーバアプリケーションでは、データを保持するHolderクラスを使用します。
Holderクラスには以下のクラスがあります。
|
YYY.IntHolder, ZZZ.UnsignedIntHolder, YYY.ShortHolder, ZZZ.UnsignedShortHolder, ZZZ.DateHolder, YYY.LongHolder, ZZZ.UnsignedLongHolder, YYY.ByteHolder, ZZZ.UnsignedByteHolder, YYY.FloatHolder, YYY.DoubleHolder, YYY.BooleanHolder, YYY.StringHolder, YYY.ByteArrayHolder, YYY.BigDecimalHolder, YYY.BigIntegerHolder |
これらのクラスは保持しているデータを表すvalueフィールドと、コンストラクタのみを持つクラスです。
以下にintを保持するYYY.IntHolderクラスの場合のフィールド、およびコンストラクタについて説明します。他のYYY.データ型名Holderクラス、ZZZ.データ型名Holderクラスも同様に、保持する型のvalueフィールド、デフォルトコンストラクタ、初期値を指定するコンストラクタを持ちます。
|
クラス名 |
メソッド名 |
説明 |
|---|---|---|
|
YYY.IntHolder |
public int value |
フィールド。 |
|
public void IntHolder() |
デフォルトコンストラクタ。 |
|
|
public void IntHolder(int initial) |
コンストラクタ。 |
RPCサーバアプリケーションのメソッドは、out/inoutパラメタとしてHolderクラスのインスタンスを受け取ります。受け取ったインスタンスのvalueフィールドを更新することで、新しい値がRPCクライアントアプリケーションへout/inoutパラメタとして送信されます。

| // RPCサーバメソッド public int server_method(int in_para, IntHolder inout_para, StringHolder out_para) { int number = inout_para.value; // inoutパラメタは入力値を参照し必要な処理を行う : // out/inout パラメタのvalueフィールドに値を代入(return時、クライアントに送信される) inout_para.value = 10; out_para.value = "abc"; : } |
| // スタブ方式のRPCクライアントアプリケーション import javax.xml.rpc.holders.IntHolder; : // パラメタの用意(arg3がoutパラメタ) int arg1 = 100; int arg2 = 200; IntHolder arg3 = new IntHolder();//パラメタが int(in),int(in),int(out)のサーバメソッド呼出し(targetがスタブオブジェクト) int result = target.opInt( arg1, arg2, arg3 ); // outパラメタの値を取得 System.out.println( "arg3 = " + arg3.value ); : } |
| // RPC-DIIクライアントアプリケーション : // out/inout パラメタの値を取得 java.util.Map outParams = call.getOutputParams(); Integer inout = (Integer)outParams.get("inout_para"); // パラメタ名 inout_para String out = (String)outParams.get("out_para"); // パラメタ名 out_para : } |

| import javax.xml.rpc.holders.Holder; public class ArrayOfInt3DHolder implements Holder { public int[][][] value; public ArrayOfInt3DHolder() {} // デフォルトコンストラクタ public ArrayOfInt3DHolder(int[][][] initial){ value = initial; } } |
目次
索引
![]()
|