Web サービスでエラーを処理するには
Web サービス エラーの中には、コンパイル時に検出できないものもあります。たとえば、コードがヌル参照のメソッドを呼び出そうとする場合や、呼び出したデータベース コントロールが無効な SQL を実行しようとする場合です。ほとんどの場合、実行時のエラーによって例外が送出されます。コードを追加して例外を処理しない限り、これによって SOAP エラーがクライアントに送り返されます。また、例外が処理されないと、Web サービスの暗黙的なトランザクションがロールバックされます。
管理者が問題の発生を知ることができるよう、デフォルトの例外処理をオーバーライドしてカスタム アクション(エラーのロギングなど)を実行できます。
例外を処理するコードを記述する方法は 2 つあります。1 つは、メソッドのコードに try/catch ブロックを追加する方法です。たとえば、「myMethod」というメソッドで送出されたすべての例外を取得するには、次のように記述します。
/** * @jws:operation */ public void myMethod() { try { // [ Normal code for the method. ] } catch (Exception e) { // [ Code to handle error cases. ] } }
メソッドの通常コードの実行中に例外が送出された場合、「catch」ブロックのコードが実行されます。
この方法の欠点のひとつは、これが「myMethod」に対してだけ機能するということです。このため、すべてのメソッドに対する例外処理を実装する場合は、それぞれのメソッドに try/catch ブロックを追加する必要があります。
例外を処理するもう 1 つの方法は、JwsContext インタフェースの「onException」コールバックのハンドラを追加することです。try/catch ブロックとは異なり、このコードは例外が Web サービスのどのメソッドで送出された場合も実行されます。
実行時例外の一般ハンドラを追加するには
ソース ビューで、[ソース ビュー] タブのすぐ下の左側にあるクラス ドロップダウン リストをクリックし、context をクリックします。
ペイン上部の右側にあるドロップダウン リストをクリックし、onException を選択します。
context_onException という名前のハンドラが Web サービスに挿入されます。
このメソッドの本体に、独自の例外処理コードを記述します。このコードは、メソッドのひとつで例外が発生した場合に実行されます。
Java 例外の詳細については、Java 言語のチュートリアル(java.sun.com/docs/books/tutorial/essential/exceptions/index.html)を参照してください。
WebLogic Workshop には、メッセージを書き込むことができるコンフィグレーション済みログ ファイルが用意されています。コンフィグレーション済みログ ファイルとそれらに書き込む方法については、workshopLogCfg.xml コンフィグレーション ファイルを参照してください。