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 サービスのどのメソッドで送出された場合も実行されます。

実行時例外の一般ハンドラを追加するには

  1. ソース ビューで、[ソース ビュー] タブのすぐ下の左側にあるクラス ドロップダウン リストをクリックし、context をクリックします。

  2. ペイン上部の右側にあるドロップダウン リストをクリックし、onException を選択します。

context_onException という名前のハンドラが Web サービスに挿入されます。

  1. このメソッドの本体に、独自の例外処理コードを記述します。このコードは、メソッドのひとつで例外が発生した場合に実行されます。

Java 例外の詳細については、Java 言語のチュートリアル(java.sun.com/docs/books/tutorial/essential/exceptions/index.html)を参照してください。

ログ ファイルに書き込む

WebLogic Workshop には、メッセージを書き込むことができるコンフィグレーション済みログ ファイルが用意されています。コンフィグレーション済みログ ファイルとそれらに書き込む方法については、workshopLogCfg.xml コンフィグレーション ファイルを参照してください。

関連トピック

Java の概要

WebLogic Workshop におけるデフォルトのトランザクションの動作