ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド
11g リリース1 (10.3.6)
B61647-05
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

5 データ・バインディングの理解

この章では、Java API for XML-based RPC (JAX-RPC)を使用したWebLogic Webサービスでサポートされるデータ・バインディングおよびデータ型(組込みおよびユーザー定義)について説明します。

この章では、以下のトピックについて説明します。

データ・バインディングの概要

様々なシステム間でのデータ交換にはXMLが標準的に使用されているため、Webサービス・アプリケーションには、Javaアプリケーションから直接XML形式のドキュメントへアクセスする手段が必要となります。具体的には、XMLコンテンツをJavaアプリケーションで読み取ることのできる形式に変換する必要があります。このXML表現とJava表現の間のデータ変換を記述したものがデータ・バインディングです。

以前のリリースと同様、WebLogic Webサービスでは、JAX-RPC仕様(http://java.net/projects/jax-rpc/)の規定に従って組込みのXMLスキーマ、Java、およびSOAPのデータ型がサポートされており、追加のプログラミング手順を踏まずに、そうしたデータ型をWebサービスの操作で使用できます。組込みデータ型には、integerstringtimeなどがあります。

また、Webサービスの入力パラメータや戻り値として、様々なユーザー定義のXMLおよびJavaデータ型(org.apache.xmlbeansパッケージのApache XmlBeansを含む)を使用できます。ユーザー定義のデータ型には、XMLスキーマやJavaの構成要素から作成する<xsd:complexType>やJavaBeanなどがあります。jwscclientgenなどのWebLogic WebサービスAntタスクでは、ユーザー定義のデータ型をXML表現とJava表現の間で変換するのに必要なデータ・バインディング・アーティファクトが自動的に生成されます。XML表現はSOAPリクエスト・メッセージおよびレスポンス・メッセージで使用し、Java表現はWebサービスを実装するJWSで使用します。


注意:

WebLogic Server 9.1以降では、XMLBeans 1.xデータ型(つまりcom.bea.xml.XmlObjectの拡張)をWebLogic Webサービスのパラメータまたは戻り値の型として使用することは非推奨です。新たに作成するアプリケーションでは、XMLBeans 2.xのデータ型を使用する必要があります。

-noupaオプションを指定してコンパイルしたXMLBeansをWebサービスで使用する場合は、Webサービスが正常にデプロイされるよう、WebLogic Serverの起動スクリプトに-Dweblogic.wsee.bind.setCompileNoUpaRule=trueフラグを設定する必要があります。そうしないと、cos-nonambig: Content model violates the unique particle attribution ruleというエラーが発生してデプロイメントは失敗します。


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

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

一方、ユーザー定義のデータ型を使用する場合は、XML表現とJava表現の間でデータを変換するデータ・バインディング・アーティファクトを作成する必要があります。WebLogic Serverにはjwscおよびwsdlc Antタスクが含まれており、ほとんどのユーザー定義データ型のデータ・バインディング・アーティファクトを自動的に生成できます。サポートされるXMLデータ型とJavaデータ型については、「サポートされるユーザー定義のデータ型」を参照してください。

組込みデータ型のXML-to-Javaマッピング

次の表に、サポートされるXMLスキーマ・データ型(ターゲット・ネームスペースhttp://www.w3.org/2001/XMLSchema)と、それぞれに対応するJavaデータ型をまとめます。

サポートされるユーザー定義のXMLデータ型については、「組込みデータ型のJava-to-XMLマッピング」を参照してください。

表5-1 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
java.lang.String
time
java.util.Calendar
date
java.util.Calendar
gYearMonth
java.util.Calendar
gYear
java.util.Calendar
gMonthDay
java.util.Calendar
gDay
java.util.Calendar
gMonth
java.util.Calendar
anyURI
java.net.URI
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-to-XMLマッピング

サポートされるユーザー定義のJavaデータ型については、「サポートされるユーザー定義のJavaデータ型」を参照してください。

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

Javaデータ型(小文字はプリミティブ・データ型を示します) 同等のXMLスキーマ・データ型
int 
int
short 
short
long 
long
float 
float
double 
double
byte 
byte
boolean 
boolean
char 
string (with facet of 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 (with facet of length=1)
java.lang.String
string
java.math.BigInteger
integer
java.math.BigDecimal
decimal
java.util.Calendar
dateTime
java.util.Date
dateTime
byte[] 
base64Binary
javax.xml.namespace.QName
Qname
java.net.URI
anyURI
javax.xml.datatype.XMLGregorianCalendar
anySimpleType
javax.xml.datatype.Duration
duration
java.lang.Object
anyType
java.awt.Image
base64Binary
javax.activation.DataHandler
base64Binary
javax.xml.transform.Source
base64Binary
java.util.UUID
string

サポートされるユーザー定義のデータ型

以降の項の表には、jwscおよびwsdlc Antタスクでデータ・バインディング・アーティファクトを自動的に生成できるユーザー定義のXMLデータ型およびJavaデータ型(対応するJava表現またはXML表現、JAX-RPCの型マッピング・ファイルなど)をまとめます。

これらの表にないXMLデータ型またはJavaデータ型で、「サポートされる組込みデータ型」の表に示した組込みデータ型でもない型の場合は、ユーザー定義データ型のアーティファクトを手動で作成する必要があります。

サポートされるユーザー定義のXMLデータ型

次の表に、jwscおよびwsdlc AntタスクでサポートされるXMLスキーマ・データ型と、それぞれに対応するJavaデータ型またはマッピング・メカニズムをまとめます。

データ型の詳細と例については、JAX-RPC仕様(http://java.net/projects/jax-rpc/)を参照してください。

表5-3 サポートされているユーザー定義のXMLスキーマ・データ型

XMLスキーマ・データ型 同等のJavaデータ型またはマッピング・メカニズム

単純型および複合型の両方の要素を持つ<xsd:complexType>

JavaBean

単純なコンテンツを含む<xsd:complexType>

JavaBean

<xsd:complexType><xsd:attribute>

JavaBeanのプロパティ。

既存の単純型の制限による新しい単純型の派生

同等の単純型のJavaデータ型。

制限要素で使用されるファセット

シリアライゼーションおよびデシリアライゼーションで強制されないファセット。

<xsd:list>

リスト・データ型の配列。

wsdl:arrayType属性を使用した制限によってsoapenc:Arrayから派生する配列

arrayTypeデータ型と同等のJavaデータ型の配列。

制限によってsoapenc:Arrayから派生する配列

同等のJavaデータ型の配列。

単純型からの複合型の派生

_valueというプロパティのあるJavaBean。_valueの型は、この項の規則に従って単純型からマップされます。

<xsd:anyType>

java.lang.Object

<xsd:any>

javax.xml.soap.SOAPElementまたはorg.apache.xmlbeans.XmlObject

<xsd:any[]>

javax.xml.soap.SOAPElement[]またはorg.apache.xmlbeans.XmlObject[]

<xsd:union>

ユニオン・メンバーの共通の親タイプ。

<xsi:nil>および<xsd:nillable>属性

Javaのnull値。

XMLデータ型が組込みデータ型で通常はJavaプリミティブ・データ型(intshortなど)にマップされる場合、そのXMLデータ型は実際には同等のオブジェクト・ラッパー型(java.lang.Integerjava.lang.Shortなど)にマップされます。

複合型の派生

Javaの継承を使用してマップされます。

抽象型

抽象Javaデータ型。


サポートされるユーザー定義のJavaデータ型

次の表に、jwscおよびwsdlc Antタスクでサポートされるユーザー定義のJavaデータ型と、それぞれに対応するXMLスキーマ・データ型をまとめます。

表5-4 サポートされているユーザー定義のJavaデータ型

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

サポートされている任意のデータ型をプロパティとするJavaBean

JavaBeanプロパティに対応する要素の<xsd:sequence>をコンテンツ・モデルとする<xsd:complexType>

サポートされるすべてのデータ型の配列および多次元配列(JavaBeanプロパティとして使用する場合)

maxOccurs属性がunboundedに設定されている<xsd:complexType>内の要素。

java.lang.Object

注意: 実行時オブジェクトのデータ型は既知の型である必要があります。

<xsd:anyType>

(org.apache.xmlbeans.XmlObjectからのみ継承されます) Apache XMLBeans

注意: Apache XMLBeansデータ型を戻り値の型またはパラメータとして使用するWebサービスは、document-literal-wrappedまたはdocument-literal-bareとして定義する必要があります。

Apache XMLBeans (http://xmlbeans.apache.org/index.html)を参照してください。

java.util.Collection

リテラル配列。

java.util.List

リテラル配列。

java.util.ArrayList

リテラル配列。

java.util.LinkedList

リテラル配列。

java.util.Vector

リテラル配列。

java.util.Stack

リテラル配列。

java.util.Set

リテラル配列。

java.util.TreeSet

リテラル配列。

java.utils.SortedSet

リテラル配列。

java.utils.HashSet

リテラル配列。



注意:

ユーザー定義のJavaデータ型であるJAX-RPCスタイルの列挙値クラスは、バージョン8.1ではWebLogic Webサービスのパラメータまたは戻り値として使用されていましたが、現在はサポートされていません。

また、パラメータまたは戻り値としてのジェネリックスの使用はサポートされていません。たとえば、以下のJavaメソッドはパブリックな操作として公開できません。

public ArrayList<String> echoGeneric(ArrayList<String> in) {
     return in;
 }