データベース コントロール メソッドで例外を宣言する

データベース コントロールのメソッドに関連付けられているデータベース処理がエラーになる場合があります。その場合に、データベース コントロール メソッドが例外を送出するよう宣言するかどうかを選択できます。

次に示すように、データベース コントロールのメソッドが java.sql.SQLException を送出するよう宣言することができます。

/**
 * @jws:sql statement="DROP TABLE customer"
 */
public void dropCustomerTable() throws SQLException; 

ただし、この場合、データベース コントロールのユーザが try-catch ブロックでメソッドの呼び出しを囲んで、例外を明示的に処理するようにしなければなりません。たとえば、上の例の custDB というコントロールで宣言されている dropCustomerTable メソッドを呼び出すには、ユーザは次のようにコードを記述する必要があります。

try {
    custDB.dropCustomerTable()
}
catch (java.sql.SQLException sqle)
{
    // handle error here
}

メソッドが例外を送出するように宣言しない場合でも、生成された例外は送出されます。しかし、送出される前に、例外は weblogic.jws.control.ControlException オブジェクトとしてラップされます。ControlException は、java.lang.RuntimeException のサブクラスです。RuntimeException には、例外を送出したメソッド呼び出しを try-catch ブロックで囲む必要がないという利点があります。データベース コントロールのユーザは ControlException を検出できますが、必須の処理ではないので、コントロールのユーザにとって好都合です。

SQLException を含む ControlException がデータベース コントロール メソッドによって送出され、呼び出し側の JWS メソッドで処理されない場合、呼び出し側の JWS メソッドは例外をクライアントに返します。ほとんどの場合、こうした設計は適切ではありません。例外は Web サービス内部の処理に関連しているので、クライアント コードが例外に対して何らかの処理を実行することができないからです。例外を Web サービスで処理し、必要に応じて適切なエラーをクライアントに返すように設計した方がよいでしょう。

コントロールにおける例外の処理については、「Handling Exceptions in Controls」を参照してください。

関連トピック

データベース コントロール : Web サービスからデータベースを使用する

新しいデータベース コントロールを作成する