ナビゲーションをスキップ

WebLogic Web サービス プログラマーズ ガイド

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

WebLogic Web サービスの実装

この章では、WebLogic Web サービスを実装する方法について説明します。

 


WebLogic Web サービスの実装の概要

WebLogic Web サービスの実装とは、Web サービスを構成するバックエンド コンポーネントの Java コードを記述およびコンパイルし、必要に応じて SOAP メッセージ ハンドラと非組み込みデータ型の Java コードを作成することです。バックエンド コンポーネントには、ステートレス セッション EJB と Java クラスがあります。Web サービスは、これらのコンポーネントをさまざまに組み合わせて実装することができます。

単一の WebLogic Web サービスは、1 つまたは複数のオペレーションで構成されています。各オペレーションは、異なるバックエンド コンポーネントと SOAP メッセージ ハンドラのメソッドを使用して実装することができます。たとえば、オペレーションは、ステートレス セッション EJB の単一メソッドを使用して実装されている場合、または SOAP メッセージ ハンドラとステートレス セッション EJB を組み合わせて実装されている場合があります。

既存の WSDL ファイルから WebLogic Web サービスを実装する場合は、WebLogic Server に付属の wsdl2Service Ant タスクを利用して、目的の Web サービスを表現する Java インタフェース、また必要に応じて空の実装 Java クラス ファイルを自動的に生成します。次に、Java 実装クラスのビジネス ロジックのコードを記述して、Web サービスに必要な動作を実装します。

ここでは、「WebLogic Web サービスの設計」で説明した設計の問題を読み理解して Web サービスを設計していること、コード化する必要があるコンポーネントのタイプを基本的に理解していることを前提としています。

注意 :Web サービス オペレーションは、ステートレス セッション EJB または Java クラスで実装し、JMS コンシューマまたはプロデューサでは実装しないようにしてください。このマニュアルでは、Web サービスを EJB または Java クラスで実装することを前提としています。JMS 固有の情報については、「JMS で実装された WebLogic Web サービスの作成」を参照してください。

 


WebLogic Web サービスの実装例

WebLogic Server の WL_HOME/samples/server/examples/src/examples/webservices ディレクトリには、WebLogic Web サービスの実装例があります。WL_HOME は、WebLogic Platform のメイン ディレクトリです。上記の例の構築と実行についての詳細な説明は、次の Web ページを参照してください。

WL_HOME/samples/server/examples/src/examples/webservices/package-summary.html

 


WebLogic Web サービスの実装 : 主な手順

以下は、WebLogic Web サービスを実装する高度な手順です。このマニュアルの後半で、この手順について詳細に説明します。実装する Web サービスのタイプにより、必須の手順もあれば省略可能なものもあります。

  1. Web サービスを構成するバックエンド コンポーネントの Java コードを記述します。
  2. コンポーネントの Java コードの記述」を参照してください。

  3. SOAP のリクエスト メッセージまたは応答メッセージにある情報を処理したり、SOAP の添付ファイルに直接アクセスしたりする必要がある場合は、SOAP メッセージ ハンドラおよびハンドラ チェーンを作成します。
  4. SOAP メッセージをインターセプトする SOAP メッセージ ハンドラの作成」を参照してください。

  5. バックエンド コンポーネントが、パラメータまたは戻り値として非組み込みデータ型を使用する場合は、そのデータ型の Java コードと、そのデータを XML と Java 間で変換するシリアライゼーション クラスを生成または作成します。
  6. 非組み込みデータ型を実装する」を参照してください。

  7. この Java コードをクラス ファイルにコンパイルします。詳細については、「Java コードのコンパイル」を参照してください。

 


コンポーネントの Java コードの記述

WebLogic Web サービスを実装するときには、以下のいずれかのバックエンド コンポーネントの Java コードを記述します。

Web サービス オペレーションで非組み込みデータ型をパラメータまたは戻り値として使用する場合は、「非組み込みデータ型を実装する」を参照してください。

デフォルトの RPC 指向ではなくドキュメント指向のオペレーションを使用する Web サービスを実装する場合は、「ドキュメント指向の Web サービスを実装する」を参照してください。

既存の WSDL ファイルに基づいて WebLogic Web サービスを実装し、かつその Web サービスを Java クラスを使用して実装する場合には、WebLogic Server に付属の wsdl2Service Ant タスクを使用することで、土台として使用する Web サービス インタフェースおよびオプションの実装クラスを生成できます。この Ant タスクを使用する方法の詳細については、「WSDL ファイルに基づき部分的な実装を生成する」を参照してください。

SOAP 添付ファイルを使用する方法については、「SOAP 添付ファイルを使用する」を参照してください。

Web サービス実装からの例外の送出については、「SOAP 障害例外を送出する」を参照してください。

Web サービスのオペレーションで複数の値が返されるようにするには、「複数の戻り値を実装する」を参照してください。

ステートレス セッション EJB を使用して Web サービスを実装する

Web サービスのステートレス セッション EJB の Java コードを記述することはスタンドアロン EJB を記述することと同じですが、次の例外があります。

ステートレス セッション EJB の記述例については、「EJB の Java インタフェースと実装クラス」を参照してください。詳細については、『WebLogic エンタープライズ JavaBeans プログラマーズ ガイド』を参照してください。

Java クラスを記述して Web サービスを実装する

以下の規則に従い、Java クラスを使用して Web サービス オペレーションを実装することができます。

必要ではありませんが、Java クラスは JAX-RPC javax.xml.rpc.server.ServiceLifecycle インタフェースを拡張できます。このインタフェースは、Web サービス エンドポイントのライフ サイクルを定義します。しかし、WebLogic Server のこのバージョンは WebLogic Web サービスのバックエンド コンポーネントとしてサーブレットをサポートしないので、javax.xml.rpc.server.ServletEndpointContext インタフェースの実装は提供しません。このため、使用する Java クラスが ServiceLifecycle インタフェースの拡張である場合、その init() メソッドは ServletEndpointContext のインスタンスではなく null として渡されます。

Java クラスを使用して WebLogic Web サービス オペレーションを実装する例は、WL_HOME/samples/server/examples/src/examples/webservices/basic/javaclass ディレクトリにあります。WL_HOME は、WebLogic Server のメインのインストール ディレクトリです。

非組み込みデータ型を実装する

ステートレス セッション EJB と Java クラスは、パラメータや戻り値として必ずしも組み込みデータ型を受け取るとは限りません。自作の Java データ型を使用する場合もあります。非組み込みデータ型の例としては、TradeResult があり、これには 2 つのフィールドがあります。String 株式シンボルと売買される株数を表す整数です。組み込みデータ型のリストについては、「サポートされる組み込みデータ型」を参照してください。

バックエンド コンポーネントが、パラメータまたは戻り値として非組み込みデータ型を使用する場合は、そのデータ型の Java コードを作成して、次にそのデータを XML と Java 間で変換するシリアライゼーション クラスを生成または作成する必要があります。それには、以下の 2 通りの方法があります。

Java データ型の XML 表現およびシリアライゼーション クラスを手動で作成する場合は、変換コードもすべて自分で記述するので、Java クラスを自在にコード化することができます。

servicegen または autotype Ant タスクを使用してデータ型のコンポーネントを自動的に生成させる場合は、そのデータ型の Java クラスを記述するときに、以下の要件に従います。

servicegen および autotype Ant タスクでは、ほとんどの一般的な XML および Java データ型のデータ型コンポーネントを生成できます。サポートされている非組み込みデータ型のリストは、「servicegen および autotype Ant タスクでサポートされる非組み込みデータ型」を参照してください。

ドキュメント指向の Web サービスを実装する

WebLogic Web サービスは、ドキュメント指向 (SOAP メッセージがドキュメントを格納) か、または RPC 指向 (SOAP メッセージがパラメータと戻り値を格納) のいずれかです。デフォルトでは、WebLogic Web サービスは RPC 指向です。servicegen Ant タスクを使用して Web サービスをアセンブルする場合、ドキュメント指向として指定します。

この章の手順では、RPC 指向の Web サービスを作成することを前提としています。ドキュメント指向の Web サービスを作成する場合は、バックエンド コンポーネントを実装するときに次のガイドラインに従ってください。

WSDL ファイルに基づき部分的な実装を生成する

この章では、バックエンド コンポーネントを記述して Web サービスを実装することを前提としています。ただし、既存の WSDL から実装を作成しなければならない場合もあります。たとえば、社内アーキテクチャ グループが共通サービス記述 (WSDL ファイル) を定義し、それらを異なる部門で実装する必要があるとします。この場合、wsdl2Service Ant タスクを使用して部分的な実装を生成できます。

wsdl2Service Ant タスクは既存の WSDL ファイルを入力として、次のものを生成します。

生成される Java インタフェース ファイルには、Java クラスのみで実装される WebLogic Web サービスのテンプレートが格納されます。このテンプレートには、WSDL ファイルのオペレーションに対応する完全なメソッド シグネチャが含まれています。「Java クラスを記述して Web サービスを実装する」のガイドラインに従って、希望どおりにメソッドが機能するように、このインタフェースを実装する Java クラスを記述します。実装クラスのスケルトンを生成するには、generateImpl="True" 属性を指定し、このクラスにビジネス ロジック Java コードを追加して、実装を完了します。

wsdl2Service Ant タスクは、(<service> 要素で指定された) WSDL ファイルの 1 つの Web サービスのみに対応する Java インタフェースを生成します。 serviceName 属性を使用すると、特定のサービスを指定できます。この属性を指定しない場合、wsdl2Service Ant タスクでは WSDL ファイルの最初の <service> 要素の Java インタフェースが生成されます。

警告 :wsdl2Service Ant タスクを使用して Web サービスの web-services.xml ファイルを生成するときは、作成された Java インタフェースを実装する Java クラスに対して、次の命名規約が使用されます。

packageName.serviceNameImpl

packageName および serviceName は、wsdl2Service Ant タスクの同名の属性の値です。 Ant タスクは、web-services.xml ファイルの <java-class> 要素の class-name 属性に、この情報を書き込みます。

Java 実装クラスに別の名前を付ける場合は、その名前に合わせて、生成された web-services.xml ファイルを手動で更新する必要があります。

wsdl2Service Ant タスクの実行

wsdl2Service Ant タスクを実行するには、次の手順に従います。

  1. 環境を設定します。
  2. Windows NT では、ドメイン ディレクトリにある setEnv.cmd コマンドを実行します。WebLogic Server ドメインのデフォルトの位置は、BEA_HOME\user_projects\domains\domainName です。BEA_HOME は BEA Products の最上位のインストール ディレクトリで、domainName はドメインの名前です。

    UNIX では、ドメイン ディレクトリにある setEnv.sh コマンドを実行します。WebLogic Server ドメインのデフォルトの位置は、BEA_HOME/user_projects/domains/domainName です。BEA_HOME は BEA Products の最上位のインストール ディレクトリで、domainName はドメインの名前です。

  3. wsdl2Service Ant タスクの呼び出しの入った build.xml というファイルを作成します。詳細については、「wsdl2Service Ant タスクのサンプル build.xml ファイル」を参照してください。
  4. build.xml ファイルと同じディレクトリで ant と入力し、Ant タスクまたは build.xml ファイルで指定されたタスクを実行します。
  5. prompt> ant
  6. myService/implementation ディレクトリで生成されたインタフェースの Java クラス実装を作成します。詳細については、「Java クラスを記述して Web サービスを作成する」を参照してください。

wsdl2Service Ant タスクのリファレンス情報については、「wsdl2Service」を参照してください。

wsdl2Service Ant タスクのサンプル build.xml ファイル

以下に、簡単な build.xml ファイルの例を示します。

<project name="buildWebservice" default="generate-from-WSDL">
<target name="generate-from-WSDL">
<wsdl2service
wsdl="wsdls/myService.wsdl"
destDir="myService/implementation"
typeMappingFile="autotype/types.xml"
packageName="example.ws2j.service" />
</target>
</project>

例の中の wsdl2Service Ant タスクでは、WSDL ファイル wsdls/myService.wsdl の最初の <service> 要素の Java インタフェース ファイルが生成されます。非組み込みデータ型のデータ型マッピング情報は、autotype/types.xml ファイルから利用します。このファイルは、通常は事前に autotype Ant タスクを実行して生成されています。 Java インタフェース ファイルおよび web-services.xml ファイルは、myService/implementation ディレクトリに生成されます。

WSDL ファイルの最初の <service> 要素の name 属性の値が、SuperDooperService であると仮定します。この場合、wsdl2Service によって example.ws2j.service.SuperDooperService という名前の Java インタフェースが生成され、その Java 実装クラスの名前は example.ws2j.service.SuperDooperServiceImpl となります。

SOAP 添付ファイルを使用する

Web サービス オペレーションを実装するメソッドのパラメータまたは戻り値として使用されている Java データ型の中には、ネットワークでの転送時に、SOAP 添付ファイルとして (SOAP 本文の要素としてではなく) 自動的に転送されるものがあります。次の表は、それらに該当する Java データ型と SOAP 添付ファイルでのその MIME タイプです。

表 5-1 Java データ型と MIME タイプのマッピング

Java データ型

MIME タイプ

java.awt.Image

image/gif または image/jpeg

java.lang.String

text/plain

javax.mail.internet.MimeMultipart

multipart/*

javax.xml.transform.Source

text/xml または application/xml

javax.activation.DataHandler

DataHandler の特定のインスタンスで表されたデータに依存する

これらの Java データ型をパラメータまたは戻り値に使用する Java クラスまたは EJB のメソッドをコード化し、servicegen でその Web サービスをアセンブルする場合は、これらのパラメータまたは戻り値に該当するデータについては SOAP 添付ファイルを使用することが、生成された web-services.xml デプロイメント記述子ファイルによって自動的に指定されます。具体的には、<param> または <return-param>location 属性が、attachment に設定されます。クライアント アプリケーションが Web サービスを呼び出したときは、パラメータまたは戻り値のどちらか、あるいはその両方がこの表にある Java データ型に該当するかどうかに基づき、WebLogic Web サービス実行時システムによって自動的に、SOAP リクエストの添付ファイルでパラメータ データが検索されるか、または SOAP 応答の添付ファイルに戻り値データが追加されます。

SOAP 添付ファイルに直接アクセスして操作する場合は、SOAP メッセージ ハンドラを作成して、SOAP with Attachments API for Java 1.1 (SAAJ) を使用する必要があります。詳細については、「SOAP メッセージをインターセプトする SOAP メッセージ ハンドラの作成」を参照してください。

java.lang.String

Java データ型 java.lang.String は、前節の説明とは少し異なる機能を果たします。デフォルトでは、Web サービス オペレーションを実装するメソッドに java.lang.String を使用すると、servicegen Ant タスクおよび WebLogic Web サービス実行時システムにより、組み込みデータ型として扱われます。つまり、このデータは、SOAP 添付ファイルの text/plain MIME タイプではなく、XML スキーマの string 型として SOAP 本文の要素となります。

一方、java.lang.String パラメータまたは戻り値を text/plain MIME エンコードの SOAP 添付ファイルとして転送する場合は、web-services.xml デプロイメント記述子ファイルを手動で更新し、該当する <param> 要素または <return-value> 要素の location 属性の値をデフォルトの Body から attachment に変更する必要があります。

web-services.xml ファイルの属性と要素の詳細については、「WebLogic Web サービス デプロイメント記述子の要素」を参照してください。

javax.activation.DataHandler

javax.activation.DataHandler データ型は、「SOAP 添付ファイルを使用する」の表にないデータを SOAP 添付ファイルで表すために使用します。

DataHandler クラスは、多くの異なるソースおよび形式のデータに対する一貫性のあるインタフェースを提供します。このクラスでは、ストリームから文字列への変換と関連するオペレーションが javax.activation.DataContentHandlers を使用して管理されます。DataHandler クラスは、データに作用できるコマンドへのアクセスも提供します。それらのコマンドは、javax.activation.CommandMap クラスを使用して確認できます。

DataHandlers は、J2EE JavaBeans Activation Framework 規格拡張機能の一部です。 WebLogic Web サービス オペレーションのパラメータまたは戻り値の型として DataHandler を使用する場合は、DataContentHandler などの必要なすべての構成要素が実装されていることが前提となります。

DataHandlers の一般情報とその実装方法については、「JavaBeans Activation Framework」を参照してください。JavaBeans Activation Framework API については、「Javadoc」を参照してください。

複数の戻り値を実装する

WebLogic Web サービス オペレーションが返す値は一般的には 1 つで、その Web サービス オペレーションを実装する EJB メソッドまたは Java クラス メソッドの戻り値を返します。Web サービスのオペレーションで複数の値が返されるようにする場合は、以下のいずれかを行います。

out パラメータと inout パラメータの使用

out および inout パラメータは、オペレーションのパラメータがパラメータと戻り値の両方の標準として機能できるメカニズムです。 out パラメータは、オペレーションの呼び出し時には未定義ですが、オペレーションの完了時にはそのオペレーションを実装するメソッドによって定義されます。inout パラメータは、呼び出し時および完了時に定義されます。たとえば、Web サービス オペレーションに out パラメータがあり、そのオペレーションは EJB メソッドを使用して実装されるとします。この EJB メソッドは、out パラメータの値を設定し、オペレーションを呼び出したクライアント アプリケーションにこの値を返します。すると、クライアント アプリケーションは、戻り値の場合と同様に、この out パラメータの値にアクセスすることができます。inout パラメータは、メソッドに情報を送信する標準の in パラメータと out パラメータの両方の機能を備えたパラメータです。この節では、out または inout パラメータを使用する EJB メソッドまたは Java クラス メソッドを使用して Web サービス オペレーションを実装する方法について説明します。

次の例は、第 2 のパラメータとして inout パラメータを持つメソッドを示しています。

public String myMethod( String param1, 
javax.xml.rpc.holders.IntHolder intHolder ) {
System.out.println ("The input value is: " + intHolder.value );
intHolder.value = 20; // out パラメータの新しい値

return param1;
}

このメソッドは、文字列と整数の 2 つのパラメータを使用して呼び出します。このメソッドは、文字列 (標準の戻り値) と整数 (IntHolder ホルダ パラメータを介して) という 2 つの値を返します。

out パラメータおよび inout パラメータは、javax.xml.rpc.holders.Holder インタフェースを実装する必要があります。Holder.value フィールドを使用して、まず、inout パラメータの入力値にアクセスし、次に、out および inout パラメータの値を設定します。先の例で、第 2 のパラメータに値 40 を指定してメソッドを呼び出したものとします。このメソッドの完了時には、intHolder 値は 20 となります。

ホルダ クラスを使用した複数の戻り値の実装

out または inout パラメータが標準のデータ型である場合は、次の表に記載する JAX-RPC のホルダ クラスのいずれかを使用することができます。

表 5-2 WebLogic Server で使用できる組み込みホルダ クラス

組み込みホルダ クラス

保持される Java データ型

javax.xml.rpc.holders.BooleanHolder

boolean

javax.xml.rpc.holders.ByteHolder

byte

javax.xml.rpc.holders.ShortHolder

short

javax.xml.rpc.holders.IntHolder

int

javax.xml.rpc.holders.LongHolder

long

javax.xml.rpc.holders.FloatHolder

float

javax.xml.rpc.holders.DoubleHolder

double

javax.xml.rpc.holders.BigDecimalHolder

java.math.BigDecimal

javax.xml.rpc.holders.BigIntegerHolder

java.math.BigInteger

javax.xml.rpc.holders.ByteArrayHolder

byte[]

javax.xml.rpc.holders.CalendarHolder

java.util.Calendar

javax.xml.rpc.holders.QnameHolder

javax.xml.namespace.QName

javax.xml.rpc.holders.StringHolder

java.lang.String

パラメータのデータ型が用意されていない場合は、自分で実装を作成する必要があります。

自分で javax.xml.rpc.holders.Holder インタフェースの実装を作成するには、次のガイドラインに従います。

次の例は、PersonHolder 実装クラスの概略を示しています。

package examples.webservices.holders;
public final class PersonHolder implements 
javax.xml.rpc.holders.Holder {
   public Person value;
   public PersonHolder() {
       // value 変数をデフォルト値に設定
}
   public PersonHolder (Person value) {
       // value 変数を渡された値に設定
}
}

out または inout パラメータの Holder 実装クラスを作成したら、Web サービス オペレーションを実装するメソッドの Java コードを更新し、作成した Holder クラスを使用します。後で servicegen Ant タスクを使用して Web サービスをアセンブルするときは、生成された web-services.xml ファイルの次の箇所によって、inout パラメータの使用が自動的に指定されます。

<param name="inoutparam" style="inout" 
type="xsd:Person" />

inout パラメータではなく、out パラメータを使用する場合は、生成された web-services.xml ファイルを手動で更新する必要があります。

out または inout パラメータを使用する Web サービスを呼び出すクライアント アプリケーションを記述する方法の詳細については、「out または inout パラメータを使用するクライアントを記述する」を参照してください。

SOAP 障害例外を送出する

WebLogic Web サービスを実装する EJB または Java クラスにエラー処理用の Java コードを記述するときは、独自の例外または javax.xml.rpc.soap.SOAPFaultException 例外のいずれかを送出できます。SOAPFaultException を送出すると、WebLogic Server はその例外を SOAP 障害にマップして、オペレーションを呼び出すクライアント アプリケーションに送信します。

EJB または Java クラスが他のタイプの Java 例外を送出する場合、WebLogic Server は、それをできるだけ SOAP 障害にマップしようとします。とはいえ、クライアント アプリケーションが最も有効な例外情報を送受信するように制御するには、SOAPFaultException 例外またはこの例外を拡張する例外を明示的に送出する必要があります。

次の抜粋では、SOAPFaultException クラスを記述しています。

public class SOAPFaultException extends java.lang.RuntimeException {
public SOAPFaultException (QName faultcode,
String faultstring,
String faultactor,
javax.xml.soap.Detail detail ) {...}
public Qname getFaultCode() {...}
public String getFaultString() {...}
public String getFaultActor() {...}
public javax.xml.soap.Detail getDetail() {...}
}

SOAP with Attachments API for Java 1.1 (SAAJ) の javax.xml.soap.SOAPFactory.createDetail() メソッドを使用して、Detail オブジェクトを作成します。このオブジェクトは、エラーに関するアプリケーション固有の詳細情報を提供する DetailEntry オブジェクトのコンテナになります。

次のクラスは、Web サービスの実装内から、SOAPFaultException を作成して送出する例です。

import javax.xml.soap.SOAPFactory;
import javax.xml.soap.Detail;
import javax.xml.soap.SOAPException;
import javax.xml.namespace.QName;
import javax.xml.rpc.soap.SOAPFaultException;
public class HelloWorldService{
  public void helloSOAPFault(){
    Detail detail = null; 
    try{
detail = SOAPFactory.newInstance().createDetail();
detail.addChildElement( "MyDetails" ).addTextNode( "failed" );
}catch( SOAPException e ){
e.printStackTrace();
}
    throw new SOAPFaultException( 
new QName( "http://tutorial/sample9/fault", "ServerFailed" ),
"helloSOAPFault method failed",
"http://foo/bar/baz/",
detail );
}
  public void helloCustomFault() throws HelloWorldException{
throw new HelloWorldException( "This is my error message, " +
"client should get this" );
}
}

警告 :SOAPFaultException を使用せずに独自の例外を作成および送出し、例外クラスの複数のプロパティのデータ型が同じである場合、JAX-RPC 仕様では必要とされていませんが、これらのプロパティのセッター メソッドも作成する必要があります。これは、WebLogic Web サービスが SOAP メッセージで例外を受け取り、XML を Java 例外クラスに変換するときに、対応するセッター メソッドがなければ、どの XML 要素をどのクラス プロパティにマップするのかを知る方法が存在しないからです。

 


サポートされる組み込みデータ型

次の節では、WebLogic Web サービスがサポートする組み込みデータ型およびその XML 表現と Java 表現間のマッピングについて説明します。Web サービスを実装するバックエンド コンポーネントのパラメータと戻り値のデータ型が、組み込みデータ型のセットの中にある限り、データは WebLogic Server によって、XML と Java 間で自動的に変換されます。

一方、非組み込みデータ型を使用する場合は、データの XML、Java 間のデータ変換を行うシリアライゼーション クラスを作成する必要があります。WebLogic Server には、ほとんどの非組み込みデータ型のシリアライゼーション クラスを生成できる servicegen および autotype Ant タスクが用意されています。サポートされている XML および Java データ型のリストは、「servicegen および autotype Ant タスクでサポートされる非組み込みデータ型」を参照してください。 servicegen および autotype の使い方の詳細については、「Ant タスクを使用した WebLogic Web サービスのアセンブル」を参照してください。

サポートされていないデータ型については、シリアライゼーション クラスを手動で作成する必要があります。詳細については、「非組み込みデータ型の使い方」を参照してください。

組み込みデータ型用の XML スキーマから Java へのマッピング

次の表に、XML スキーマ (ターゲット ネームスペース http://www.w3.org/2001/XMLSchema) が定義するすべての組み込みデータ型に対する定義済みマッピングと、対応する SOAP データ型 (ターゲット ネームスペース http://schemas.xmlsoap.org/soap/encoding/) を示します。

サポートされている非組み込み XML データ型のリストは、「サポートされている XML 非組み込みデータ型」を参照してください。

表 5-3 XML スキーマ データ型と Java データ型のマッピング

XML スキーマ データ型

同等の Java データ型

(小文字はプリミティブ データ型を示す)

boolean

boolean

byte

byte

short

short

int

int

long

long

float

float

double

double

integer

java.math.BigInteger

decimal

java.math.BigDecimal

string

java.lang.String

dateTime

java.util.Calendar

base64Binary

byte[]

hexBinary

byte[]

duration

weblogic.xml.schema.binding.util.Duration

time

java.util.Calendar

date

java.util.Calendar

gYearMonth

java.util.Calendar

java.util.Calendar Java データ型には gYearMonth データ型より多くのフィールドがある。この追加情報には意味はない。実際の XML データから生成されたものではなく、データ バインド機能によって生成された情報である。

gYear

java.util.Calendar

java.util.Calendar Java データ型には gYearMonth データ型より多くのフィールドがある。この追加情報には意味はない。実際の XML データから生成されたものではなく、データ バインド機能によって生成された情報である。

gMonthDay

java.util.Calendar

java.util.Calendar Java データ型には gYearMonth データ型より多くのフィールドがある。この追加情報には意味はない。実際の XML データから生成されたものではなく、データ バインド機能によって生成された情報である。

gDay

java.util.Calendar

java.util.Calendar Java データ型には gYearMonth データ型より多くのフィールドがある。この追加情報には意味はない。実際の XML データから生成されたものではなく、データ バインド機能によって生成された情報である。

gMonth

java.util.Calendar

java.util.Calendar Java データ型には gYearMonth データ型より多くのフィールドがある。この追加情報には意味はない。実際の XML データから生成されたものではなく、データ バインド機能によって生成された情報である。

anyURI

java.lang.String

NOTATION

java.lang.String

token

java.lang.String

normalizedString

java.lang.String

language

java.lang.String

Name

java.lang.String

NMTOKEN

java.lang.String

NCName

java.lang.String

NMTOKENS

java.lang.String[]

ID

java.lang.String

IDREF

java.lang.String

ENTITY

java.lang.String

IDREFS

java.lang.String[]

ENTITIES

java.lang.String[]

nonPositiveInteger

java.math.BigInteger

nonNegativeInteger

java.math.BigInteger

negativeInteger

java.math.BigInteger

unsignedLong

java.math.BigInteger

positiveInteger

java.math.BigInteger

unsignedInt

long

unsignedShort

int

unsignedByte

short

Qname

javax.xml.namespace.QName

組み込みデータ型用の Java から XML スキーマへのマッピング

サポートされている非組み込み Java データ型のリストは、「サポートされている Java 非組み込みデータ型」を参照してください。

表 5-4 Java データ型と XML スキーマ データ型のマッピング

Java データ型 (小文字はプリミティブ データ型を示す)

同等の XML スキーマ データ型

int

int

short

short

long

long

float

float

double

double

byte

byte

boolean

boolean

char

string (length=1 のファセット付き)

java.lang.Integer

int

java.lang.Short

short

java.lang.Long

long

java.lang.Float

float

java.lang.Double

double

java.lang.Byte

byte

java.lang.Boolean

boolean

java.lang.Character

string (length=1 のファセット付き)

java.lang.String

string

java.math.BigInteger

integer

java.math.BigDecimal

decimal

java.lang.String

string

java.util.Calendar

dateTime

java.util.Date

dateTime

byte[]

base64Binary

weblogic.xml.schema.binding.util.Duration

duration

javax.xml.namespace.QName

Qname

 

フッタのナビゲーションのスキップ  ページの先頭 前 次