ヘッダーをスキップ
Oracle BPEL Process Manager開発者ガイド
10g(10.1.3.1.0)
B31874-03
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

A トラブルシューティングおよび回避策

この付録では、Oracle BPEL Process Managerのトラブルシューティング方法について説明します。

この付録の内容は次のとおりです。

A.1 一般的な問題のトラブルシューティング

次の項では、考えられる問題および解決策を説明します。

A.1.1 BPELプロセスを正常に完了させて例外エラーを捕捉するためのプロパティ設定

transaction-timeoutおよびsyncMaxWaitTimeプロパティの設定値により、トランザクションのスコープを正常に完了するか、タイムアウトにして例外エラーを捕捉するかを指定できます。 たとえば、次の2つのプロセスがあるとします。

  • TimeoutSubprocess(3分に設定されたwaitアクティビティを含む同期詳細プロセス)

  • TimeoutMainProcess(TimeoutSubprocessをコールする非同期メイン・プロセス)

syncMaxWaitTime45秒(デフォルト値)に設定され、transaction-timeout30秒に設定されている場合、メイン・プロセスは45秒後に引き続き実行されますが正常に完了せず、予期したとおり次の例外エラーが捕捉されます。

com.oracle.bpel.client.delivery.ReceiveTimeOutException

domain.logファイルには、次の例外エラーが表示されます。

An exception occurred during transaction completion:; nested exception is:
javax.transaction.RollbackException: Timed out
javax.transaction.RollbackException: Timed out

メイン・プロセスを正常に完了して例外エラーを捕捉するには、次のプロシージャを実行します。

  1. transaction-timeoutおよびsyncMaxWaitTimeプロパティを次のように設定します。

    プロパティ ファイルの場所 必須の設定値
    transaction-timeout SOA_Oracle_Home¥j2ee¥home¥config¥transaction-manager.xml orion-ejb-jar.xml内のtransaction-timeout値およびsyncMaxWaitTime値よりも大きい値 7200
    transaction-timeout SOA_Oracle_Home¥j2ee¥home¥application-deployments¥orabpel¥ejb_ob_engine¥orion-ejb-jar.xml transaction-manager.xml内のtransaction-timeout値よりも小さい値

    注意: このファイルに表示されるtransaction-timeoutプロパティをすべて設定する必要があります。

    3600
    syncMaxWaitTime SOA_Oracle_Home¥bpel¥domains¥domain_name¥config¥domain.xml

    domain_nameはデプロイ先のドメイン名です。

    orion-ejb-jar.xml内のtransaction-timeout値よりも小さい値 240

    この設定により、メイン・プロセスが正常に完了して例外エラーが捕捉されます。

A.1.2 Windows 2000での開発者プロンプト

Windows 2000では、「スタート」「すべてのプログラム」「Oracle - Oracle_Home「Oracle BPEL Process Manager」「Developer Prompt」を選択しても開発者プロンプトが表示されないことがあります。これは、Windows 2000のCLASSPATHの長さに関する既知の問題です。開発者プロンプトを正常に表示するには、CLASSPATHを短くする必要があります。たとえば、Oracle BPEL Process Managerのインストール時に、Oracleホームのディレクトリ・パスの長さを制限します。

A.1.3 複雑なプロセスの検証エラーの修正

複雑なプロセスに検証エラーがある場合(たとえば、複数のコピー・ルールが複数のスコープ内に埋め込まれたassignアクティビティなど)、これらのエラーにアクセスして修正するための推奨方法は、次のとおりです。

  1. エラーを右クリックし、「ソースに移動」を選択し、エラーが発生したソース・コードにアクセスします。

  2. ソース・コードを確認し、エラーを識別します。

  3. 「ダイアグラム」をクリックし、エラーのグラフィカル・ビューに移動します。

  4. グラフィカル・ビューで修正を行います。

A.1.4 長時間実行プロセスの処理

プロセスに長時間にわたるアクティビティがあり、サーバーのタイムアウト値が前のデハイドレーション・ポイントに達してからの経過時間より小さい値に設定されている場合、Oracle BPEL Serverウィンドウに次のような例外メッセージが表示されることがあります。

Message handle error.
An exception occurred while attempting to process the message
"com.collaxa.cube.engine.dispatch.message.invoke.InvokeIns
tanceMessage"; the exception is: Transaction was rolled back: timed out;
nested exception is: java.rmi.RemoteException:
No Exception - originate from:java.lang.Exception: No Exception - originate
from:; nested exception is:
        java.lang.Exception: No Exception - originate from:

解決策として、transaction-manager.xmlファイルのtransaction-config timeoutの値を大きくします。たとえば、次のようになります。

<transaction-config timeout="30000"/>

このファイルの場所は、Oracle BPEL Process Managerのインストール方法によって異なります。

  • Oracle Application Server SOA基本インストールの場合、このファイルはSOA_Oracle_Home¥j2ee¥home¥configにあります。

  • Oracle BPEL Process Managerインストールの場合、このファイルはSOA_Oracle_Home¥bpel¥system¥appserver¥oc4j¥j2ee¥home¥configにあります。

このパラメータの設定の詳細は、『Oracle BPEL Process Managerインストレーション・ガイド』を参照してください。

A.1.5 空のBPELプロセスの作成およびスキーマのインポート

空のプロジェクト(アダプタ・エンドポイント・プロジェクトでは一般的)を作成してXSDファイルをインポートした場合、project_name.bpelファイルを編集しないと、このプロジェクトをデプロイできません。

これを解決するには、次の手順を実行します。

  1. 非同期プロジェクトを作成します。

  2. クライアント・パートナ・リンクは編集しません(このリンクは、必要なインポートが含まれるprocess_name.wsdlファイルを参照しているため、このリンクを使用してXSDをインポートできます)。

  3. クライアント・パートナ・リンクのreceiveInput receiveアクティビティを編集し、「パートナ・リンク」フィールドの新しいアダプタ・インバウンド・エンドポイントを指し示すようにします。

A.2 センサーのトラブルシューティング: カスタム・データ・パブリッシャ

次の項では、考えられる問題および解決策を説明します。

A.2.1 データ・パブリッシャが機能しない

問題

カスタム・データ・パブリッシャが機能していません。

解決策

  • classファイルが生成され、システム・クラスパスに配置されていることを確認します。この定義(BPELスーツケース)については、obsetenv.batファイルを参照してください。

  • データ・パブリッシャ・インタフェースが実装されていることを確認します。

  • データ・パブリッシャをシステム・クラスパスにコンパイルする場合、Oracle BPEL Process Managerを再起動する必要があります。Oracle BPEL Process Managerを再起動せずに、データ・パブリッシャに変更を加えた可能性があります。

  • データ・パブリッシャで例外がスローされている可能性があります。例外がないかどうかログ・ファイルをチェックするか、コード全体を囲むtry/catchブロックを一時的に追加します。catchで、スタック・トレースを出力します。このメッセージは、Oracle BPEL Process Managerの起動時に開くテキスト・ウィンドウに表示されます。

A.2.2 データ・パブリッシャは機能するが、ビジネス・プロセスの実行に時間がかかる

問題

データ・パブリッシャは問題なく機能しますが、ビジネス・プロセスの実行に非常に時間がかかります。

解決策

2つの選択肢があります。

第1に、コードのプロファイリングを試行します。Oracle BPEL Controlのdo-user-sensor-callback統計により、センサー・データのパブリッシュに要する時間が記録されます。

第2に、カスタム・データ・パブリッシャからJMSパブリッシャに切り替えます。その後、Message-Driven Beanをアプリケーション・サーバーにデプロイし、データがそのJMS宛先に送信されたときには必ずパブリッシュされるようにします。これにより、プロセスの実行からデータのパブリッシュが切り離されます。

A.2.3 データ・パブリッシャへのデータのキャッシュはサポートされない

問題

パフォーマンスを高めるために、データ・パブリッシャにデータをキャッシュしたいと考えています。これはサポートされていますか。

解決策

これはサポートされていません。データ・パブリッシャはステートレスであることが必要です。

A.2.4 データ・パブリッシャでの予期しないエラー

問題

データ・パブリッシャはたいてい問題なく機能するのですが、ときどき奇妙なエラーが出ます。

データ・パブリッシャで同時実行性の問題が発生している可能性があります。

解決策

データ・パブリッシャは、スレッドに対応した方法でコーディングする必要があります。つまり、データベースやファイルなどのリソースの利用と同様に、Javaコードもスレッド対応であることが必要です。

A.2.5 XMLに抽出されたデータが扱いづらい

問題

抽出したデータは複雑なXMLです。このデータは扱いづらいです。単純にする方法はありますか。

解決策

W3C DOMモデルは少々煩雑ですが、扱いやすいサード・パーティ・モデル(DOM4Jなど)があります。DOM4Jオブジェクトを、対応するW3C DOMオブジェクトから作成するのは簡単です。抽出したデータのJAX-Bオブジェクトまたはスキーマ・オブジェクトを生成するという選択肢もあります。生成されたJavaクラスを使用すれば、データをより簡単に操作できます。

A.3 Oracle BPEL Worklistアプリケーションのトラブルシューティング

次の項では、考えられる問題および解決策を説明します。

A.3.1 ワークリスト・アプリケーションにログインできない

アイデンティティ・サービスにユーザー情報がない場合は、ワークリスト・アプリケーションにログインできません。管理者に問い合せて、アイデンティティ・システム(Oracle Internet DirectoryのようなLDAPベースのファイル)にユーザー情報が存在することを確認してください。

A.3.2 別の言語で情報が表示される

ワークリスト・アプリケーションは、ユーザーの言語(ロケール)プリファレンスをアイデンティティ・サービスから取得し、そのロケールで情報を表示します。情報が間違った言語で表示される場合は、ユーザーのプリファレンスがサポート対象のロケールに設定されていることを確認してください。詳細は、「ローカル言語でのワークリスト・アプリケーションへのアクセス」を参照してください。

A.3.3 日付および時間が正しく表示されない

ワークリスト・アプリケーションは、ユーザーのタイムゾーン・プリファレンスをアイデンティティ・サービスから取得し、そのタイムゾーンで情報を表示します。また、日付および時間は言語(ロケール)プリファレンスにあわせて書式設定されます。これらのプリファレンスがアイデンティティ・サービスに正しく指定されていることを確認してください。

A.3.4 ユーザーがアクションの実行を許可されていない

次のようなエラー・メッセージが表示されることがあります。

"User jcooper is not permitted to perform the action Update on task Loan
application for John with id...."

ユーザーにアクションを実行する権限があるかどうか、または現在の状態のタスクに対してアクションを実行できるかどうかを確認してください。次の点も確認します。

  • ユーザーがページをロードしてから実際にアクションを実行するまでの間にタスクの有効期限が切れました。

  • ユーザーがページをロードしてから実際にアクションを実行するまでの間に、タスクが別のユーザー(マネージャ、所有者、管理者など)によって更新されていないか

A.3.5 予期したタスクがタスク・タイトルの下に表示されない

ワークリスト・アプリケーション・ホームページの「タイトル」列の下に予期したタスクが表示されていない場合、そのタスクは別のユーザーまたはシステムによって変更された可能性があります。

別のユーザー(マネージャやグループ・メンバーなど)が次のいずれかのアクションを実行して、タスクを変更した可能性があります。

  • 完了

  • 一時停止

  • 詳細情報のリクエスト

また、タスクのフィルタによってタスクが取り消された可能性もあります。

システムでタスクが変更される可能性があるのは次のような場合です。

  • タスクに関連付けられているプロセス・インスタンスが消去またはアーカイブされた場合、タスクも消去またはアーカイブされ、アクセスできなくなります。

  • タスクが期限切れになった場合。

  • タスクでシステム・エラー(誤った割当て先など)が発生した場合。

前述のほとんどのケースでは、フィルタをより広範なカテゴリ(「任意」「すべて」など)に変更すれば、タスクを表示できます。

A.4 まとめ

この付録では、Oracle BPEL Process Managerのトラブルシューティング方法について説明しました。