この付録では、Oracle BPEL Process Managerのトラブルシューティング方法について説明します。
この付録の内容は次のとおりです。
次の項では、考えられる問題および解決策を説明します。
transaction-timeout
およびsyncMaxWaitTime
プロパティの設定値により、トランザクションのスコープを正常に完了するか、タイムアウトにして例外エラーを捕捉するかを指定できます。 たとえば、次の2つのプロセスがあるとします。
TimeoutSubprocess(3分に設定されたwaitアクティビティを含む同期詳細プロセス)
TimeoutMainProcess(TimeoutSubprocessをコールする非同期メイン・プロセス)
syncMaxWaitTime
が45
秒(デフォルト値)に設定され、transaction-timeout
が30
秒に設定されている場合、メイン・プロセスは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
メイン・プロセスを正常に完了して例外エラーを捕捉するには、次のプロシージャを実行します。
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
|
orion-ejb-jar.xml内のtransaction-timeout 値よりも小さい値
|
240
|
この設定により、メイン・プロセスが正常に完了して例外エラーが捕捉されます。
Windows 2000では、「スタート」→「すべてのプログラム」→「Oracle - Oracle_Home」→「Oracle BPEL Process Manager」→「Developer Prompt」を選択しても開発者プロンプトが表示されないことがあります。これは、Windows 2000のCLASSPATHの長さに関する既知の問題です。開発者プロンプトを正常に表示するには、CLASSPATHを短くする必要があります。たとえば、Oracle BPEL Process Managerのインストール時に、Oracleホームのディレクトリ・パスの長さを制限します。
複雑なプロセスに検証エラーがある場合(たとえば、複数のコピー・ルールが複数のスコープ内に埋め込まれたassignアクティビティなど)、これらのエラーにアクセスして修正するための推奨方法は、次のとおりです。
エラーを右クリックし、「ソースに移動」を選択し、エラーが発生したソース・コードにアクセスします。
ソース・コードを確認し、エラーを識別します。
「ダイアグラム」をクリックし、エラーのグラフィカル・ビューに移動します。
グラフィカル・ビューで修正を行います。
プロセスに長時間にわたるアクティビティがあり、サーバーのタイムアウト値が前のデハイドレーション・ポイントに達してからの経過時間より小さい値に設定されている場合、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インストレーション・ガイド』を参照してください。
空のプロジェクト(アダプタ・エンドポイント・プロジェクトでは一般的)を作成してXSDファイルをインポートした場合、project_name
.bpel
ファイルを編集しないと、このプロジェクトをデプロイできません。
これを解決するには、次の手順を実行します。
非同期プロジェクトを作成します。
クライアント・パートナ・リンクは編集しません(このリンクは、必要なインポートが含まれるprocess_name
.wsdl
ファイルを参照しているため、このリンクを使用してXSDをインポートできます)。
クライアント・パートナ・リンクのreceiveInput receiveアクティビティを編集し、「パートナ・リンク」フィールドの新しいアダプタ・インバウンド・エンドポイントを指し示すようにします。
次の項では、考えられる問題および解決策を説明します。
問題
カスタム・データ・パブリッシャが機能していません。
解決策
class
ファイルが生成され、システム・クラスパスに配置されていることを確認します。この定義(BPELスーツケース)については、obsetenv.bat
ファイルを参照してください。
データ・パブリッシャ・インタフェースが実装されていることを確認します。
データ・パブリッシャをシステム・クラスパスにコンパイルする場合、Oracle BPEL Process Managerを再起動する必要があります。Oracle BPEL Process Managerを再起動せずに、データ・パブリッシャに変更を加えた可能性があります。
データ・パブリッシャで例外がスローされている可能性があります。例外がないかどうかログ・ファイルをチェックするか、コード全体を囲むtry
/catch
ブロックを一時的に追加します。catch
で、スタック・トレースを出力します。このメッセージは、Oracle BPEL Process Managerの起動時に開くテキスト・ウィンドウに表示されます。
問題
データ・パブリッシャは問題なく機能しますが、ビジネス・プロセスの実行に非常に時間がかかります。
解決策
2つの選択肢があります。
第1に、コードのプロファイリングを試行します。Oracle BPEL Controlのdo-user-sensor-callback統計により、センサー・データのパブリッシュに要する時間が記録されます。
第2に、カスタム・データ・パブリッシャからJMSパブリッシャに切り替えます。その後、Message-Driven Beanをアプリケーション・サーバーにデプロイし、データがそのJMS宛先に送信されたときには必ずパブリッシュされるようにします。これにより、プロセスの実行からデータのパブリッシュが切り離されます。
問題
パフォーマンスを高めるために、データ・パブリッシャにデータをキャッシュしたいと考えています。これはサポートされていますか。
解決策
これはサポートされていません。データ・パブリッシャはステートレスであることが必要です。
次の項では、考えられる問題および解決策を説明します。
アイデンティティ・サービスにユーザー情報がない場合は、ワークリスト・アプリケーションにログインできません。管理者に問い合せて、アイデンティティ・システム(Oracle Internet DirectoryのようなLDAPベースのファイル)にユーザー情報が存在することを確認してください。
ワークリスト・アプリケーションは、ユーザーの言語(ロケール)プリファレンスをアイデンティティ・サービスから取得し、そのロケールで情報を表示します。情報が間違った言語で表示される場合は、ユーザーのプリファレンスがサポート対象のロケールに設定されていることを確認してください。詳細は、「ローカル言語でのワークリスト・アプリケーションへのアクセス」を参照してください。
ワークリスト・アプリケーションは、ユーザーのタイムゾーン・プリファレンスをアイデンティティ・サービスから取得し、そのタイムゾーンで情報を表示します。また、日付および時間は言語(ロケール)プリファレンスにあわせて書式設定されます。これらのプリファレンスがアイデンティティ・サービスに正しく指定されていることを確認してください。
次のようなエラー・メッセージが表示されることがあります。
"User jcooper is not permitted to perform the action Update on task Loan application for John with id...."
ユーザーにアクションを実行する権限があるかどうか、または現在の状態のタスクに対してアクションを実行できるかどうかを確認してください。次の点も確認します。
ユーザーがページをロードしてから実際にアクションを実行するまでの間にタスクの有効期限が切れました。
ユーザーがページをロードしてから実際にアクションを実行するまでの間に、タスクが別のユーザー(マネージャ、所有者、管理者など)によって更新されていないか
ワークリスト・アプリケーション・ホームページの「タイトル」列の下に予期したタスクが表示されていない場合、そのタスクは別のユーザーまたはシステムによって変更された可能性があります。
別のユーザー(マネージャやグループ・メンバーなど)が次のいずれかのアクションを実行して、タスクを変更した可能性があります。
完了
一時停止
詳細情報のリクエスト
また、タスクのフィルタによってタスクが取り消された可能性もあります。
システムでタスクが変更される可能性があるのは次のような場合です。
タスクに関連付けられているプロセス・インスタンスが消去またはアーカイブされた場合、タスクも消去またはアーカイブされ、アクセスできなくなります。
タスクが期限切れになった場合。
タスクでシステム・エラー(誤った割当て先など)が発生した場合。
前述のほとんどのケースでは、フィルタをより広範なカテゴリ(「任意」や「すべて」など)に変更すれば、タスクを表示できます。