ここでは、アプリケーション実行時に発生する異常終了の事例とその対処方法について説明します。
多階層システムのアプリケーション間連携時に処理要求が無応答となる
3階層システムなどでコンポーネントトランザクションサービスを構成すると、以下の図に示すとおり接続している端末数に対して多くの接続資源を消費します。
各クライアントアプリケーションはトランザクションアプリケーションAに処理要求を行い、さらにトランザクションアプリケーションAはトランザクションアプリケーションBへ処理要求を行います。
図中の1から4の処理で、コンポーネントトランザクションサービスの処理スレッドが使い切られているため、アプリケーション間の処理要求時(5および6)に必要な処理スレッドが不足し、CORBAサービスで処理要求が待ち状態となり、クライアントAおよびクライアントBの処理要求のいずれも復帰することができません。したがって、処理スレッドが解放されず、デッドロックが発生して、クライアントでは処理要求が無応答となります。
このため、各処理要求に対する受付順番によりデッドロック状態となり、処理要求が無応答となることがあります。
この場合、システムログに以下のメッセージが出力されます。
TD: 警告: td12038: 最大接続クライアント数に達しました(ORB- PID) ORB:ワークユニット種別を表示します。 PID:最大接続クライアント数を表示します。
処理要求が無応答となり、上記メッセージが出力されている場合は、メッセージの[ユーザの対処]に記載しているように、システム規模を見直す必要があります。
参照
システム規模の変更については、「運用ガイド(基本編)」を参照してください。
サーバから不完全な文字列型データが復帰する
以下の条件の場合に、クライアントアプリケーションに復帰したデータが途切れるなど、不完全な状態になることがあります。
サーバアプリケーションにCOBOLを使用している。かつ、
IDL定義に文字列型で宣言している。かつ、
サーバアプリケーションで、文字列以外のデータ(バイナリデータや数値データなど)を設定している。
この場合、サーバアプリケーションで設定したデータに0x00のコードが含まれている可能性があります。
サーバアプリケーションの処理を見直してください。
なお、本現象については、「アプリケーション作成ガイド(コンポーネントトランザクション編)」の「トランザクションアプリケーション作成上の注意点」を参照してください。