7.3.3 データ変換定義の注意事項
- 〈この項の構成〉
(1) 開発環境における注意事項
要素数が2,000以上あるなど,大きな電文フォーマットのスキーマファイルを使用してデータ変換を定義する場合,データ変換定義の検証およびパッケージングを実行すると,メモリの不足によってエラーが発生することがあります。
エラーが発生した場合は,<Eclipseのインストールディレクトリ>\eclipse\eclipse.iniファイル内の次のオプションを変更し,Eclipseを再起動してから実行し直してください。
-
-XmxNm(Nは1以上の整数(MB単位))
また,次のオプションを追加してください。
-
-XssNm(Nは1以上の整数(MB単位))
なお,次のオプションは指定しないでください。
-
-Xverify:none
(2) 実行環境における注意事項
-
データ変換定義の構造に依存して,大規模の入力電文を変換する際に,メモリを大量に確保する場合があります。条件として,次に示すどちらかのマッピング定義を利用する場合が該当します。
-
マッピングされている変換先ノード自身が省略できる,または,その先祖ノードが省略できる個所を含むマッピング定義。
-
電文フォーマットに要素が多数定義されており,マッピング線が引かれている。
このため,実行時にメモリ不足となる場合は,入力電文のデータ量を減らすか,ヒープサイズを増やしてください。
なお,上記のマッピング定義によるデータ変換処理にはJavaの制限により変換できる限界が存在します。限界以上のデータを変換すると,変換処理が途中でエラー終了します。この場合には,エラーメッセージの内容に従い,入力電文のデータ量を減らすことで対処してください。
-
-
HCSCサーバランタイム定義ファイルで,transformdef-maxcache-numを指定し,データ変換定義をキャッシュしている場合,Metaspace領域を消費します。このため,実行時にMetaspace領域不足となる場合は,Metaspace領域サイズを増やしてください。
-
データ変換定義を用いたデータ変換処理で扱えるXML形式のデータは,XML標準仕様のバージョン「XML 1.0 Third Edition」に準拠していることが,前提条件となります。データ変換処理の概要については,マニュアル「サービスプラットフォーム 解説」の「付録B データ変換機能の処理概要」を参照してください。
XML標準仕様に関する内容の一部を要約したものを次に示します。詳細は,XMLの仕様書を参照してください。
-
要素値に含まれる改行コード(CR(#xD)またはCR+LF(#xD #xA))は,DOMへのパース処理によって,#xAに正規化されます。
#xAは,データ変換処理によって,各OSに対応した改行コードとなります。
-
属性値に含まれる改行コード(LF(#xA),CR(#xD)またはCR+LF(#xD #xA)),およびタブ(#x9)は,DOMへのパース処理によって,半角空白(#x20)に正規化されます。文字参照で指定した場合は,正規化の対象にはなりません。
-
XMLで使用できる文字は,次に示すUnicodeの範囲となります。
0x09|0x0A|0x0D|[0x20-0xD7FF]|[0xE000-0xFFFD]|[0x10000-0x10FFFF]
-
-
サービスプラットフォームで扱えるXML形式データの制限を次に示します。
-
扱える文字コードはUTF-8だけです。UTF-8以外の文字コードを指定した場合,動作は保障されません。
-
ルートノードが存在しないデータは扱えません。
-
cscで始まる名前空間接頭辞は利用できません。
-
BOM(0xEF 0xBB 0xBF)を付加した場合,動作は保障されません。
-
-
データ変換処理の結果は,BMPの範囲(UCS-2)の文字はそのまま文字で出力され,Unicode補助文字については,10進数の数値文字参照で出力されます。
ただし,特殊文字「<」,「>」,「&」は,それぞれ文字実体参照「<」「>」「&」として処理されます。属性の場合は,さらに「"」を文字実体参照「"」として処理されます。
-
妥当性検証は,明示的に検証機能を利用しない場合,実施されません。
このため,データ変換処理の結果は,出力先電文フォーマットに妥当でないデータとなることがあります。
-
データ変換のマッピング元にノードが存在しない場合,マッピング先もノードなしとなります(エラーにはなりません)。
-
サービスアダプタの配備,アンデプロイ,およびキャッシュの登録を繰り返すと,次に示す仕様によって,サービスアダプタの不要なキャッシュが増え続けます。不要なキャッシュを削除するには,cscsvstopコマンドを実行してHCSCサーバを停止後,再配備してください。
-
サービスアダプタで電文のデータ変換を行う場合,フォーマット定義とデータ変換定義のオブジェクトが生成されます。しかし,サービスアダプタを再配備した場合,オブジェクト名の一部に配備の時刻が設定されているため,前回生成されたオブジェクトは参照されません。再配備のたびに新しいオブジェクトが生成されます。
-
csccompostopコマンドでは,サービスアダプタのキャッシュは削除されません。
-