月曜日 3 19, 2007

WSIT Milestone 3 Tutorial Document Updated

WSIT(Web Services Interoperability Technologies) Milestone 3のチュートリアル(pdf版はこちら)がアップデートされています。2月5日版からの大きな変更は以下の通り:

  • 6章。WS-TrustでSTS(Secure Token Service)を使用したサンプルの解説が追加
  • 11章。WS-AT/WS-Cordinationを使用したトランザクション利用のサンプルの解説が追加

上記により、チュートリアルの内容としては、WSITが実装予定のWebサービス仕様一覧を一通り網羅する形となっています。

木曜日 2 22, 2007

WSIT Milestone 3 and Interoperability Design Guideline

2月12日にWSIT(Web Services Interoperability Technologies)のmilestone 3がリリースされましたが、これに合わせてチュートリアルドキュメント(pdf版はこちら)もアップデートされています。

チュートリアルの内容は全体的に大きく加筆修正されているのですが、新たに10章の「Data Contracts」が追加され、.NET WCFサービスとインターオペラブルなWebサービスを設計するときに気をつけた方がよいと思われる点についていくつかのポイントを説明しています。この章の内容は特にWSITに依存しているわけではないので、.NETと繋ぐ予定がなくても、将来に渡って長く使えるWebサービスインタフェースをJAX-WSベースでデザインしたいという目的にも意味のある内容です。是非チェックしてみて下さい。ここでは、簡単に10章の内容を紹介しておきます。

  1. (Java) プリミティブ型とそのラッパークラス(ex. doubleとjava.lang.Double)では、生成されるスキーマのminOccursが違う。
  2. (Java/.NET) Javaのjava.math.BigDecimalと.NETのSystem.decimalはレンジと精度が異なる。
  3. (Java) java.net.URLはxs:stringにマップされてしまうので、@XmlSchemaType(name="anyURI")を付与して、xs:anyURIにマップされるようにする。
  4. (.NET) xs:durationのマッピングをSystem.stringにするときは、System.Xml.XmlConvert.ToString(System.TimeSpan)を使う。
  5. (.NET) Java側でjava.awt.Imageに@XmlMimeType("image/gif")を付与すると、XSDのスキーマエレメントにmime:expectedContentTypes="image/gif"が追加されるが、.NETはこれを無視してしまう。
  6. (Java) 日付にはjava.util.Dateやjava.util.Calendarの代わりに、java.xml.datatype.XMLGregorianCalendarを使う。また、XMLGregorianCalendarはxs:anySimpleTypeにマップされてしまうので、@XmlSchemaType(name="dateTime")を明示して、xs:dateTimeにマップされるようにする。
  7. (Java) java.util.UUIDはxs:stringにマッピングされる。また、.NET接続にはLeach-Salzバリアントを使うこと。
  8. (Java) Genericsを使用したクラスのタイプパラメータはxs:anyTypeにマッピングされる。
  9. (Java) Collectionsを扱う時は、@XmlElement(nillable=true)や@XmlListなどによって、.NET側の生成コードが変わることに注意する。
  10. (Java) xs:choiceを表現するには、@XmlElementRefsを用いる。
  11. (Java) anonymousタイプを表現するには、@XmlType(name="")を使用する。
  12. (Java) xs:allを表現するには、@XmlType(propOrder={})を使用すれば良いがお薦めしない。
  13. (Java) xs:simpleContentを表現するには、@XmlValueを用いる。
  14. (Java) xs:any、xs:anyAttributeを表現するには、@XmlAnyElement、@XmlAnyAttributeを用いる。
  15. (Java) xs:enumerationを表現するには、enumタイプを用いる。
  16. (Java) @XmlElementDecl、@XmlID、@XmlIDREFの使用は推奨されない。

2.のBigDecimalの精度の違いは要注意です。また、5.の「Date/Calendarの代わりにXMLGregorianCalendarを使う」はちょっと抵抗がありますね。しかし、xs:dateTimeをDate/Calendarマッピングするのに、JAXB用のカスタムのバインディング定義をXMLで定義する手間を考えたら、プログラム側で変換のコードを書いた方が楽なのかも知れません。

About

Takashi Nishigaya
Principal Consultant
Technology Solution Consulting
Oracle Consulting Services

Search

Categories
Archives
« 4月 2014
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
今日