4.1 Web サービス・プロバイダの作成
4.1.1 概要
JavaScript関数のWebサービス化は、関数を実行するためのJavaクラスを作成し、そのJavaクラスをWebサービ
スとして公開することで実現します。(以降、このJavaクラスを 「JavaScriptラッパークラス」 と呼びます)
Webサービスとして公開されたJavaScirpt関数が実行されるまでの流れを以下に示します。
クライアントが、Webサービスの実行を要求します。
Webサービス実行エンジン「Axis2」が、受け付けたリクエストに該当するJavaScriptラッパークラス のメソッドを呼び出します。
ラッパークラスは 「JavaScriptUtilityクラス」 を利用してJavaScript関数を実行します。
以降、実行結果が適宜変換され、クライアントに返却されます。
開発者は、上記のシーケンス図の中で太い点線で囲まれた3種類のものを作成する必要があります。
一つ目は、「Webサービスとして公開したいJavaScript関数」です。二つ目は、JavaScript関数を実行するための
「JavaScriptラッパークラス」です。三つ目は、JavaScript関数の引数、および、返却値のオブジェクト変換に必要な
「型情報クラス」です。「型情報クラス」 とはJavaScriptオブジェクトのプロパティ構成を、JavaBeanで表現した単純 なクラスです。
Page 30
Copyright 2000-2012 株式会社NTTデータ イントラマート All rights Reserved.および、JavaScript形式 から Java形式へのオブジェクトを自動的に変換し、JavaScript関数を実行します。
オブジェクト間のプロパティ変換規則は「4.1.1.1.1 プロパティ変換規則 : Java形式 → JavaScript形式」 およ び 「4.1.1.1.2 プロパティ変換規則 : JavaScript形式 → Java形式」を参照してください。
4.1.1.1.1 プロパティ変換規則 : Java形式 → JavaScript形式
Java JavaScript
null → null
java.lang.String → String
java.lang.Number → Number
java.lang.Boolean → Boolean
java.util.Date java.util.Calendar
→ Date
byte[]
javax.activation.DataHandler
→ String (バイナリ)
配列 → Array
上記以外のクラスは変換対象外です。(例えば、List, Map, Setを変換することはできません)
JavaBeanのプロパティの値がJavaBean形式のインスタンスである場合、さらにそのプロパティの変換を試みます。
詳細は、APIリスト「JavaScriptUtility」のjavaBeanToJS(Object)メソッドの説明を参照してください。
作成者:株式会社 NTT データ イントラマート
Page
31 4.1.1.1.2 プロパティ変換規則 : JavaScript形式 → Java形式JavaScript Java 備考
null undefined
→ null -
java.lang.String -
String →
java.lang.Character 先頭1文字をCharacterに変換します。
byte[]
String (バイナリ) →
javax.activation.DataHandler
「String (バイナリ)」とは、JavaScriptAPIの「Fileオブジ ェクト」や「VirtualFile オブジェクト」の「load()関数」など で取得できるファイルデータ(バイナリ)の事を意味しま す。
Number → java.lang.Number
java.lang.Number のサブクラスが指定された場合は、
その型に変換されます。変換可能なjava.lang.Number のサブクラスは Double, Float, Long, Integer, Short, Byteの6クラスです。
Boolean → java.lang.Boolean -
java.util.Date
Date →
java.util.Calendar
-
Array → 配列
JavaScript の Array 要素の型がすべて同じであり、か
つ、その型がJavaの配列要素の型に変換可能でなけ ればなりません。
java.lang.String java.lang.Number
任意のJavaScriptオブジェク
ト →
java.lang.Boolean
JavaScript オブジェクトの文字列表現が変換可能な場
合に限る。
上記以外のクラスは変換対象外です。(例えば、List, Map, Setを変換することはできません)
JavaBeanのプロパティの型がJavaBean形式クラスの場合、さらにそのプロパティの変換を試みます。
詳細は、APIリスト「JavaScriptUtility」のjsToJavaBean(Object, Class)メソッドの説明を参照してください。