Apcoordinator ユーザーズガイド
目次 前ページ次ページ

第4部 EJBアプリケーションの開発> 第24章 セションBeanの開発> 24.3 セションBeanとクライアントとの連携

24.3.3 データBean変換

データBean変換機能は、セションBeanを呼び出す際に、データBeanをjava.util.HashMapクラスに変換して送信する機能です。データBeanが持つ項目クラスはString, Integerなどの基本的なデータのクラスやその配列に変換されます。セションBeanがHashMapを返却した場合は、クライアントで自動的にデータBeanに変換されます。

データbean変換

データBeanからHashMapへの変換を正変換、HashMapからデータBeanへの変換を逆変換と呼びます。

この機能を使用すると、以下のように不要なデータを削除して通信量を減らすことができます。

データBean変換機能を使うには、EJBを呼び出すアプリケーションにデータBean変換マップを作成してください。データBean変換マップは、データBeanの変換規則をカスタマイズするファイルです。EJBを呼び出すアプリケーションにデータBean変換マップが存在しない場合は、データBean変換は行われません。

■データBeanの変換規則

以下にデータBeanの変換例を示します。

変換前のデータBean
プロパティ名プロパティのクラスプロパティの値
messageString"Hello!"
infoInfoBean
(データBean)
プロパティ名プロパティのクラスプロパティの値
countint21
dateDate2002/4/1
choiceComboBox
(コンボボックスの項目クラス)
選択肢番号表示文字列
1tokyo東京
2aomori青森
3kobe神戸
選択されている選択肢は1
変換後のHashMap
HashMapのキーHashMapの値のクラスHashMapの値
messageString"Hello!"
infoHashMap
HashMapのキーHashMapの値のクラスHashMapの値
countInteger21
dateDate2002/4/1
choiceInteger1
choice.valueString[]{"tokyo","aomori","kobe"}
choice.textString[]{"東京","青森","神戸"}
この例で示されているように、データBeanが変換されると、各プロパティがそれぞれ変換されてHashMapに格納されます。 各プロパティの変換規則は基本的に次のようになります。 この変換規則はデータBean変換マップによってカスタマイズができます。 項目クラス、画面部品のインタフェースが変換される形式の詳細はデータBean変換リファレンスを参照してください。

■データタイプ

変換後のHashMapには、データタイプが与えられます。データタイプはHashMapに格納されたデータの種類を表す文字列です。これは、以下の目的で使用されます。

データタイプはキー"uji.type"に対応するStringの値としてHashMapに格納されます。

データBean変換マップ

データBean変換マップはデータBeanや項目クラスの変換方法を設定するファイルです。以下の設定が可能です。

データBean変換マップはXMLで次のように記述します。


<?xml version="1.0" encoding="iso-2022-jp"?>

<convMap xmlns="http://interstage.fujitsu.com/schemas/uji/convMap" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://interstage.fujitsu.com/schemas/uji/convMap http://interstage.fujitsu.com/schemas/uji/convmap.xsd"> <config> <version>5.0</version> </config>   <!-- mypackage.MyBeanの変換方法を指定 -->
  <class name="mypackage.MyBean">
    <beanConv target="my-bean">
      <property name="description" pass="false"/>
    </beanConv>
  </class>
  <!-- ComboBox(サブクラス含む)の選択肢はインデックス番号で送る -->   <model name="ComboBox">
    <comboBoxConv useIndex="true"/>
  </model>
</convMap>

上記記述を例にしてデータBean変換マップの記述方法を説明します。

データBean変換マップのルートはconvMapです。 convMapの内側には、最初にconfigタグを記述し、その内側にversionタグを記述します。これはデータBean変換マップの文法のバージョンを表し、5.0を指定します。


  <config>
    <version>5.0</version>
  </config>

configタグの後に、データBeanや項目クラスの変換方法の指定が続きます。

classタグはname属性で指定したクラスの変換方法を定義します。


  <class name="mypackage.MyBean">

    <beanConv target="my-bean">
      <property name="syokugyo" pass="false"/>
    </beanConv>
  </class>

この記述で以下を指定しています。

classタグの内側には、変換方法をあらわすタグを記述します。ここでは、beanConvタグを使用しています。このタグは、classタグで指定されたデータBeanのクラスをHashMapに変換することを意味します。HashMapのデータタイプはtarget属性で指定します。target属性が省略された場合はclassタグで指定したクラス名がデータタイプとして使用されます。

beanConvタグの内側には必要に応じてpropertyタグを記述します。このタグはname属性で指定されたプロパティを送信するかどうかをpass属性で指定します。pass="false"を指定すると送信されません。 beanConvタグとpropertyタグを使って、データBeanの特定のプロパティだけを送信するように指定するには次のように記述します。


  <class name="mypackage.MyBean">

    <beanConv target="my-bean" passByDefault="false">
      <property name="userId" pass="true"/>
    </beanConv>
  </class>

セションBeanの呼び出し時に使用したコマンド名に応じて変換方法を変更したい場合は、classタグのverb属性にコマンド名を指定して、classタグによる指定が適用されるコマンド名を限定します。


  <class name="mypackage.MyBean" verb="update">

    <beanConv target="my-bean"/>
  </class>   <class name="mypackage.MyBean">
    <beanConv target="my-bean">
      <property name="userId" pass="false"/>
    </beanConv>
  </class>

この例では、コマンド名がupdateの場合は、すべてのプロパティが送られ、それ意外の場合はuserIdプロパティが送信されません。

以下の記述は項目クラスcom.fujitsu.uji.compo.ComboBoxの変換方法を指定します。


  <model name="ComboBox">

    <comboBoxConv useIndex="true"/>
  </model>

modelタグはname属性で指定した種類の項目クラスの変換方法を指定します。name="ComboBox"は、com.fujitsu.uji.compo.ComboBoxクラスとそのサブクラスを指定します。modelタグの内側には、変換方法をあらわすタグを記述します。ここでは、comboBoxConvタグを使用して、ComboBoxを選択肢や表示文字列の配列に変換することを指定しています。useIndex="index"は、コンボボックスの選択肢をインデックス番号で送信することを意味します。選択肢の値で送信するにはuseIndex="value"を指定します。

次のように指定すると、ComboBoxとそのサブクラスは変換されずに送信されます。


  <model name="ComboBox">

    <noConv/>
  </model>

以下の情報についてはデータBean変換リファレンスを参照してください。

■データBean変換マップのファイル名

デフォルトでは、データBean変換マップのファイル名はconv.xmlです。 Webアプリケーション、携帯端末対応アプリケーション、電子フォームアプリケーションでは/WEB-INFに、セションBean、SOAPサーバアプリケーションでは設定ファイルフォルダに配置します。ファイル名と配置場所は初期化パラメタuji.convMapで変更できます。リモート共通インタフェースを使用した場合は、呼び出し対象となるセションBeanごとにデータBean変換マップを指定できます。この場合、リモートマップのejbタグまたはlocalタグのconvMap属性にファイル名を指定します。

初期化パラメタuji.convMapを指定されておらず、conv.xmlが既定の配置場所に存在しない場合、データBean変換は行われません。

注意
データBean変換はクライアントで実行されるため、データBean変換マップはクライアントに作成します。セションBeanから別のセションBeanを呼び出す場合は、呼び出し側のセションBeanにデータBean変換マップを作成します。

■データBeanの上書き

データBean変換機能を使用している場合、データBeanの上書き機能が利用できます。この機能は、セションBeanが返したデータをそのまま受け取るのではなく、セションBeanを呼び出したときに引数として与えたデータBeanに上書きする機能です。

データbeanの上書き

以下の条件を満たす場合に上書きが可能です。

デフォルトでは上書き機能は有効に設定されています。無効に設定するには以下のようにします。

■データBean変換使用時の注意事項


目次 前ページ次ページ

All Rights Reserved, Copyright © 富士通株式会社 2000-2005