4.4.6 MBSTRINGバッファ・タイプを使用する

Tuxedo 9.0以降、JoltではMBSTRINGバッファ・タイプがサポートされています(Tuxedo ATMIではTuxedo 8.1以降ですでにサポートされています)。

Javaではマルチ・バイト文字のエンコーディングの標準としてUnicodeが使用され、Unicodeの文字列データ用にStringクラスが提供されているので、Jolt MBSTRINGのサポートではJavaクライアント側のMBSTRINGコンテナとしてStringクラスが使用されます。Joltでは、JoltクライアントとTuxedoサーバーの間でデータが転送されるときに、Stringオブジェクト内のUnicode MBSTRINGデータがバイト配列MBSTRINGデータ(ATMIのMBSTRING表現)に、またはその逆に自動的に変換されます。

次の各メソッドが、bea.jolt.Messageインタフェース、bea.jolt.JoltMessageクラスおよびbea.jolt.JoltRemoteServiceクラスに追加されています。

addMBString
setMBString
setMBStringItem
getMBStringDef
getMBStringItemDef

MBSTRINGバッファ・タイプの使用方法はSTRINGバッファ・タイプとほとんど同じですが、メタデータ・リポジトリ・エディタで指定されるバッファ・タイプはMBSTRINGで、MBSTRINGデータを取得および設定するためのJavaメソッドは前述のメソッドです。

さらに、次のJavaシステム・プロパティは、Tuxedoサーバーに送信されるMBSTRINGデータの文字エンコーディング名を指定するために使用されます。

bea.jolt.mbencoding
MBSTRINGデータをTuxedoサーバーに送信するときに、Unicode MBSTRINGデータを対応するバイト配列MBSTRINGデータに変換するために使用されるTuxedoエンコーディング名。このプロパティが指定されていない場合、Javaのデフォルトの文字エンコーディング名が使用され、対応するTuxedoエンコーディング名にマップされます。たとえば、デフォルトの日本語版Windowsのエンコーディング名MS932は、対応するTuxedoエンコーディング名CP932にマップされ、このプロパティ内に指定されます。
bea.jolt.mbencodingmap
JoltクライアントとTuxedoサーバー間の文字エンコーディング名のマッピングを指定するファイルのフル・パス名。このマッピングが必要なのは、同じ文字エンコーディングの文字エンコーディング名がJavaとTuxedoで異なる場合があるためです。たとえば、デフォルトの日本語版Windowsのエンコーディング名は、JavaではMS932ですが、TuxedoではCP932です。このプロパティを指定しない場合、マッピングは行われません。
つまり、Java文字エンコーディング名が、Tuxedoサーバーに送信されるMBSTRINGデータに直接設定され、Tuxedoサーバーから受信したMBSTRINGデータ内に設定されているエンコーディング名がJavaエンコーディング名として使用されます。そのエンコーディング名がJavaまたはTuxedoでサポートされていない場合、変換エラーが発生する場合があります。
bea.jolt.mbencodingまたはbea.jolt.mbencodingmapを指定するには、jolti18n.jarCLASSPATHに追加する必要があります。jolti18n.jarCLASSPATHに存在しない場合、エンコーディング名はISO-8859-1に設定され、Javaコマンド行でこれらのプロパティを指定しても、JavaとTuxedoの間でエンコーディング名のマッピングは行われません。