0

WebLogic 10.3.3 を使用しています。Web サービスの 1 つが呼び出されるたびに、ログ エントリをデータベースに書き込みたいと考えています。

私の質問は、ログ情報をデータベースに送信する最良の方法は何ですか? データベースがダウンしている場合、ロギング コードで Web サービスを停止させたくありません。ロギング コードが失敗した場合に、Web サービスが待機したりクラッシュしたりしたくありません。ロギング ルーチンのエラーを Web サービス コードで完全に無視したい。

Java EE on WebLogic でこれを行う方法がわかりません。助言がありますか?

4

2 に答える 2

0

あなたはすでにlog4jに旋風を与えていると思いますか?ロギングをtry/catchブロックで囲むだけで、サービスに影響を与えるはずです。

于 2012-12-12T19:47:56.690 に答える
0

ピーターへのあなたのコメントは正しい軌道に沿っています。

ロギングを処理するための別のサービスが確かに必要です。

「ロガーがダウンしている場合 - データベースまたはサービス」というメッセージが失われるという問題が常に発生します。

必要なことは、失敗する可能性が最も低いファイル ベースのバッキング ストアを使用して、JMS キューを設定することです。サービスで JMS キューに書き込みを行ってロギングを実行し、EJB ロガー サービスでメッセージをキューから抽出してデータベースに書き込みます。

このように、ログ メッセージは、必ずしもすぐにデータベースに追加されることなく、すぐに保存されますが、データベース コミットの完了をサービスが待機する必要もありません。

完了応答を待たずに JMS キューに書き込む方法があるため、サービスへの影響を最小限に抑えることができます。

10.3.3 にポリシー ゲートウェイ機能があったかどうか、または 10.3.4 でそれが導入されたかどうかは思い出せませんが、クライアント コンポーネントをポリシーとして実装すると、実際にサービス コードに触れずに各サービスに適用しやすくなります。再利用可能なソリューションです。

于 2012-12-13T02:55:51.070 に答える