Web サービスと一緒に使用する SOAP メッセージをチューニングする方法について学習します。
このタスクについて
SOAP は、非集中の分散環境のピア間で、構造化され型指定された情報を XML を使用して交換するためのメカニズムを提供する軽量プロトコルです。
プロシージャー
- servant.jvm.options (-Dcom.ibm.CORBA.iiop.noLocalCopies=1) で noLocalCopies を指定します。
これによって、値ではなく参照によるパラメーターの引き渡しが可能になります。
これは、エンタープライズ Bean を Web サービスとして公開している場合にのみ適用されます。
次を参照してください。
オブジェクト・リクエスト・ブローカー・サービス設定
.
- 問題をアクティブにデバッグするのでなければ、すべてのトレースを使用不可にしてください。
- アプリケーションのトランザクション・ポリシーを定義する際に、TX_NOT_SUPPORTED を指定して、ローカル・トランザクションを選択します。 WebSphere が複数のリソース・マネージャーに対してコミット有効範囲を調整せずに済むことから、
ローカル・トランザクションの方がグローバル・トランザクションよりも良好なパフォーマンスを得られます。
- SOAP メッセージで空の属性または空のエレメントを渡すことのないようにしてください。SOAP メッセージに余分な不要データを組み込むことのないようにしてください。Document/Literal スタイルの Web サービス呼び出しを使用して、単一の SOAP メッセージに要求をバッチ処理できれば、個々の SOAP メッセージを複数送信するよりも好ましい方法です。
SOAP アプリケーションは、SOAP メッセージが少なく、含まれる XML エレメントが少ない (特に XML 属性が少ない) ほど、パフォーマンスが向上します。SOAP メッセージの内容は、シリアライズし、構文解析する必要があります。これはコストを要する操作であるため、最小限に抑えなければなりません。つまり、10KB のメッセージを 1 つ送る方が、1KB のメッセージを 10 個送るよりも好ましいということです。ただし、非常に大きな (例えば 200KB を超える) メッセージは、メモリーなどのシステム・リソースに影響を与える場合があります。
- デフォルトの Java ヒープ・サイズを増やす必要のある場合があります。 SOAP
および XML (DOM) は、ストレージ集約型であり、ヒープ・サイズが小さいと
Java ガーベッジ・コレクションが過剰に行われる場合があります。ほとんどのテスト・ケースでは、256M (デフォルト) のヒープ・サイズが最適であることが確認されています。ガーベッジ・コレクションは、verbose:gc Java ディレクティブを使用してモニターできます。
- TCP/IP 送信/受信バッファーが、送信される大量の
XML メッセージを十分保持できるサイズであることを確認します。
- RPC モデルよりも文書モデルを使用するようにしてください。
これにより、XML 形式を完全に制御することができますが、追加のプログラミング作業が必要になります。
- RPC スタイルのメッセージを使用する場合、可能であればストリングを送信してください。
- 独自のシリアライザーとデシリアライザーを作成して、リフレクションを使用しないようにしてください。
- パフォーマンスを向上させる必要がある場合は、サーブレットを作成して、
SOAP ランタイムではなく SAX パーサーを使用することを検討します。または、Apache AXIS をダウンロードおよびインストールして、Web Services Technology Preview を使用できます。