Oracle Jolt

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

Oracle Jolt の例外

この付録では、発生する可能性のある Oracle Jolt の例外について説明します。Jolt クラス ライブラリは、Oracle Jolt と Oracle Tuxedo の両方の例外を返します。

Oracle Tuxedo の例外の詳細については、次のドキュメントのいずれかを参照してください。

また、Jolt クラス ライブラリの例外は、『Oracle Jolt API リファレンス』でクラス、コンストラクタ、およびメソッドごとにリストされています。

以下は、Oracle Jolt の実行中に発生する可能性のある、Oracle Jolt と Oracle Tuxedo の例外の一覧です。各項目では、例外発生の原因と問題を解決するためのアクションを示しています。

1. TPEABORT
トランザクションをコミットできなかった。
 
原因
サーバサイドでトランザクションをコミットできなかった場合に発生する。また、以前のブロッキング状態が原因でタイムアウトになったコミット操作に対して、JSH がメッセージの再送を実行したときに発生する場合もある。Oracle Tuxedo では、未処理の応答が残っているか、または会話型接続がオープンのまま、tpcommit() が呼び出されると、この例外が返される。
アクション
サーバサイドにトランザクションのエラーがないかどうかを確認する。Oracle Jolt クライアントからのリクエストの再送は、サーバサイドのトランザクションの問題が解決された後で行う。
2. TPEBADDESC
Oracle Jolt では、この例外は発生しない。
 
原因
Oracle Tuxedo では通常、tpgetrply() または tpsend() に無効な呼び出し記述子が指定された場合にこの例外が発生する。
アクション
なし
3. TPEBLOCK
Oracle Tuxedo でブロッキング状態が発生し、TPNOBLOCK フラグが指定される。
 
原因
サーバがバックアップされているために発生する。
アクション
負荷が大きい場合は、アプリケーションを再検討し、再構築しなければならない場合がある。
4. TPEINVAL
アプリケーションに対して無効な引数が指定された。
 
原因
セキュリティ プロトコルを実行する前に新しい JoltSession クラスが処理されると発生する。Jolt の URL ハンドラ ルーチンでは、openConnection() メソッドで無効な CHALLENGE 応答を受け取るとこの例外が発生する。また、JSL -H オプションに指定した 16 進数のアドレスの先頭に「0x」を付けなかった場合、または UBBCONFIG ファイルに間違ったアドレスを入力した場合にも TPEINVAL 例外が発生する。さらに、REPNAME がない場合に JREPSVRGETREC()DELREC()、および GETSVC() サービスから TPEINVAL が返される場合もある。REPVAL を指定しないと、JREPSVRADDREC() サービスから TPEINVAL が返される。
アクション
この種の例外は、アプリケーションの開発時に処理しておく必要がある。この例外が実働環境で発生してはならない。
5. TPELIMIT
未処理のリクエストまたはサブスクリプションが最大数に達した。
 
原因
未処理のリクエストが最大数に達している。この例外は、Oracle Tuxedo システムのイベント ブローカのサブスクリプションが最大数 (現在、内部的な定義は 50) に達したことを意味する場合もある。
アクション
負荷が大きい場合は、アプリケーションを再検討し、再構築しなければならない場合がある。
6. TPENOENT
要求されたサービスが利用できない。
 
原因
通常、要求されたサービスが Oracle Tuxedo のサーバサイドで起動または宣言されていないことが原因。要求されたサービスが Jolt リポジトリで定義されていない可能性もある。また、Oracle Tuxedo システムのイベント ブローカにアクセスできなかったことを示す場合もある。
アクション
サーバサイドでサービスが起動または宣言されているかどうかを確認する。または、要求されたサービスが Jolt リポジトリで定義されているかどうかを確認する。サーバサイドでサービスを使用できるようになったら、Jolt クライアントからリクエストを再送する必要がある。
7. TPEOS
オペレーティング システムの例外が発生した。
 
原因
問題の内容は ULOG ファイルに記述される。通常、この例外はメモリ割り当ての失敗、無効なネットワーク アドレス、または JSL の掲示板へのアタッチの失敗が原因で発生する。
アクション
ULOG ファイルに従って問題を修正する。問題が修正されたら、Jolt クライアントは接続し直してリクエストを再送しなければならない場合がある。
8. TPEPERM
セッションに参加しようとする際にパーミッションの問題が発生した。
 
原因
JoltSession クラスでは、Jolt クライアントがアプリケーションに参加するためのパーミッションを持たない場合にこの例外が発生する。アプリケーション パスワードが無効な場合、アプリケーション固有の認証にパスしなかった場合、または許可されていないクライアント名を使用している場合は、パーミッションが拒否される。Jolt の URL ハンドラ ルーティングでは、openConnection() メソッドに対して無効な CHALLENGE 応答を受け取ると、この例外が発生する。Jolt リポジトリが読み取り専用に設定されていると、ADDREC() および DELREC() サービス、または JREPSVRGARBAGECOLLECT() サービスから TPEPERM 例外が返される。
アクション
この種の例外は、アプリケーションの開発時に処理しておく必要がある。この例外が実働環境で発生してはならない。
9. TPEPROTO
関数が不適切なコンテキストで呼び出された。
 
原因
この例外で不適切なコンテキストとは、rollback() または commit() メソッドが参加リソースによって呼び出された場合、「unsubscribe all」の実行中にアンサブスクライブ イベントが呼び出された場合、または呼び出し側がクライアントでない場合。
アクション
この種の例外は、アプリケーションの開発時に処理しておく必要がある。この例外が実働環境で発生してはならない。
10. TPESVCERR
Oracle Tuxedo の tpreturn() または tpforward() の実行中、サービス ルーチンで例外が発生した。
 
原因
アプリケーション レベルのエラー、つまり、無効なフラグが指定された tpreturn() または tpforward() が呼び出された、呼び出し側の記述子が無効である、戻り値が無効である、のいずれかのエラーがサービス ルーチンから返される。
アクション
この種の例外は、アプリケーションの開発時に処理しておく必要がある。この例外が実働環境で発生してはならない。
11. TPESVCFAIL
呼び出し側の応答を送信するサービス ルーチンが、tpreturn() を呼び出し、TPFAIL が返された。
 
原因
サービス ルーチンからアプリケーション レベルのエラーが返される。
アクション
この種の例外は、アプリケーションの開発時に処理しておく必要がある。この例外が実働環境で発生してはならない。
12. TPESYSTEM
Oracle Tuxedo システムの例外が発生した。
 
原因
例外の内容は ULOG ファイルに書き込まれる。たとえば、Diffie-Hellman 方式の暗号化を実行するとする。JSH が調整パラメータを送信できない場合、この例外が発生する。JSL は Challenge 呼び出しの応答を Jolt クライアントに送信できない。そのため、Jolt クライアントがタイムスタンプ、暗号ビット、およびチケット値を間違った値で送信したり、再接続プロトコルのタイムスタンプが一致しなくなる。JSL はネットワーク プロトコル情報を初期化できず、ネットワーク上の接続指示受け付けアドレスを確立することもできない。また、JSH は、不明なコンテキスト付きのネットワーク メッセージを受信したり、別の接続でのメッセージを受信する。
アクション
通常、サーバサイドで ULOG ファイル内の例外の内容を確認する必要がある。ハードウェア障害やネットワーク障害が原因のとき、ハードウェアやネットワークのフェイルオーバを実行できる場合は接続し直す。
13. TPETIME
トランザクション タイムアウトが発生した。
 
原因
サーバサイドでトランザクション タイムアウトが発生した。
アクション
この種の例外は、アプリケーションのサーバサイドで処理する必要がある。Jolt クライアントからのリクエストの再送は、サーバサイドの問題が解決された後で行う。
14. TPETRAN
要求されたサービスがトランザクションをサポートしないサーバ上にあり、TPNOTRAN が設定されていない。
 
原因
要求されたサービスに対してトランザクションがサポートされていない。
アクション
この種の例外は、アプリケーションのサーバサイドで処理する必要がある。Jolt クライアントからのリクエストの再送は、サーバサイドの問題が解決された後で行う。
15. TPGOTSIG
予期しないシグナルを受信した。
 
原因
シグナルを受け取ったが、TPSIGSTRT フラグが指定されていなかった。
アクション
なし
16. TPERMERR
サーバサイドでリソース マネージャがオープンまたはクローズに失敗した。
 
原因
リソース マネージャを使用できないか、クローズする前にすべてのリソースを解放またはコミットできない。
アクション
ULOG ファイルを参照して、リソース マネージャがサーバサイドでオープンまたはクローズに失敗した原因を確認する。
17. TPEITYPE
JoltRemoteService クラスで、要求された Oracle Tuxedo サービスが入力データのタイプおよびサブタイプを認識しない。
 
原因
入力データのタイプおよびサブタイプが Jolt リポジトリで定義されていない。
アクション
入力データのタイプとサブタイプを Jolt リポジトリで定義する必要がある。この種の例外は、アプリケーションの開発時に処理しておく必要がある。この例外がプロダクション環境で発生してはならない。
18. TPEOTYPE
JoltRemoteService クラスで、Oracle Tuxedo の呼び出し側が応答データのタイプおよびサブタイプを認識しない。
 
原因
出力データのタイプおよびサブタイプが Jolt リポジトリで定義されていない。
アクション
出力データのタイプとサブタイプを Jolt リポジトリで定義する必要がある。この種の例外は、アプリケーションの開発時に処理しておく必要がある。この例外がプロダクション環境で発生してはならない。
19. TPERELEASE
Oracle Jolt では、この例外は発生しない。
 
原因
通常、TPACK フラグを指定した非請求メッセージがサーバから送信され、ターゲットが肯定応答プロトコルをサポートしていない以前のリリースの Oracle Jolt クライアントの場合に発生する。
アクション
ご使用のマシンに正しいバージョンの Oracle Jolt がインストールされているかどうかを確認する。この種の例外は、アプリケーションの開発時に処理しておく必要がある。この例外がプロダクション環境で発生してはならない。
20. TPEHAZARD
何らかの障害が発生したため、トランザクションの代わりに行われた作業がヒューリスティックに完了された可能性がある。
 
原因
サーバサイドで ULOG ファイルを参照して、詳しい情報を確認する。
アクション
なし
21. TPEHEURISTIC
ヒューリスティックな判断のため、トランザクションの一部としてなされた作業が一部はコミットされ、一部は中途終了している。
 
原因
サーバサイドで ULOG ファイルを参照して、詳しい情報を確認する。
アクション
なし
22. TPEEVENT
Oracle Jolt では、この例外は発生しない。
 
原因
この例外は通常、Oracle Tuxedo の会話型接続で、メッセージの送受信中にイベントが発生したことを意味する。ただし、会話型サーバ接続は Oracle Jolt では使用できない。
アクション
なし
23. TPEMATCH
JoltUserEvent クラスは非同期通知イベントのサブスクリプションを実装したが、既存のサブスクリプションと一致するため、サブスクリプションが失敗した。
 
原因
Oracle Tuxedo システムのイベント ブローカのリストに既に存在するサブスクリプションと一致するため、サブスクリプションが失敗した。
アクション
なし
24. TPEDIAGNOSTIC
Oracle Jolt では、この例外は発生しない。
 
原因
通常 Oracle Tuxedo で、メッセージを指定したキューに登録したり、キューから取り出す操作が失敗すると、この例外が発生する。ただし、キューへのメッセージの登録や取り出しは Oracle Jolt では実行できない。
アクション
なし
25. TPEMIB
Oracle Jolt では、この例外は発生しない。
 
原因
この例外は通常、Oracle Tuxedo で、tpadmcall() を使用した管理リクエストが失敗すると発生する。ただし、TMIB 呼び出しは Oracle Jolt では使用できない。
アクション
なし
26. TPEJOLT
この例外は Oracle Jolt で問題が発生していることを示す。
 
原因
TPEJOLT 例外は、次のいずれかの理由で発生する。
  • JoltSession クラス - セッション オブジェクトまたはメッセージ ID が無効な場合、send()recv()、または cancel() メソッドは TPEJOLT を送出する。
  • JoltSession クラス - TPINIT データ変換が失敗すると TPEJOLT を送出する。
  • bea.jolt.pool.connection クラス - 実行時の例外が発生すると TPEJOLT を送出する。
  • JoltRemoteService - Oracle Jolt と Oracle Tuxedo の間のバッファ変換が失敗した場合、要求されたサービスが Jolt リポジトリで定義されていない場合、要求されたサービスが正しいバージョンではない場合、または応答データの変換が失敗した場合に、call() メソッドは TPEJOLT を送出する。
  • JoltUserEvent クラス - イベント名の変換が失敗した場合、無効なメッセージ ID が検出された場合、または非請求メッセージのデータ変換が失敗した場合に TPEJOLT を送出する。
アクション
この種の例外は、アプリケーションの開発時に処理しておく必要がある。この例外が実働環境で発生してはならない。


  ページの先頭       前  次