機械翻訳について

4 Javaライブラリを使用したOracle Messaging Cloud Serviceへのアクセス

Oracle Messaging Cloud Service JavaライブラリはJava Message Service (JMS) 1.1インタフェースを実装および拡張します。 この項では、Javaライブラリの使用方法と、Javaライブラリ使用時のJMSとの差異に関する情報を示します。

トピック:

クライアント側のロギング

特定のイベントは、クライアント・ソフトウェアを実行するJavaプラットフォーム上のJavaライブラリによってログされます。

イベント・ロギングは、java.util.logging.Levelのロギング・レベルを使用して、java.util.loggingフレームワークを介して行われます。 イベントは、問題の原因の診断に役立ち、サポートへの有用な情報となる場合があります。

イベントは、oracle.cloud.messaging.clientおよびoracle.cloud.messaging.utilの2つのパッケージにWARNINGおよびSEVEREの各レベルでログされます。
パッケージ ログ・レベル ログ・メッセージ 説明
oracle.cloud.messaging.client SEVERE Exception shutting down thread pool 接続をクローズしているときに例外がスローされました。 これは、MessageListenersの実行のようなバックグラウンド操作に使用されるスレッド・プールを停止しようとしたときに発生しました。 スローされた例外はログされます。
Exception stopping REST client 接続をクローズしているときに例外がスローされました。 これは、JavaライブラリとREST APIとの通信に使用されるHTTPクライアントを停止しようとしたときに発生しました。 スローされた例外はログされます。
Exception deleting connection クライアント側の接続に関連付けられたサーバー側の接続をクローズおよび削除しようとしたときに例外がスローされました。 スローされた例外はログされます。
Exception shutting down messaging context クライアント側の接続に関連付けられたサーバー側のメッセージング・コンテキストを停止しようとしたときに例外がスローされました。 スローされた例外はログされます。
Exception disconnecting HTTP connection クライアントからサーバーへのネットワーク接続を切断しようとしたときに例外がスローされました。 スローされた例外はログされます。
Exception on client-side session close 接続をクローズしているときに例外がスローされました。 これは、接続から作成されたセッションを停止しようとしたときに発生しました。 スローされた例外はログされます。
WARNING Closing unclosed Connection in finalizer 接続オブジェクトのガベージ・コレクトの際に接続がクローズされました。これは、接続のclose()を呼び出すことなく接続への参照が破棄されたことを示します。
oracle.cloud.messaging.util WARNING Runtime exception thrown from exception listener サーバーへのアクセスの試行中にHTTPクライアントで例外が発生し、このような例外を処理するリスナーがRuntimeExceptionをスローしました。 スローされた例外はログされます。

接続の自動クローズ

この項では、接続が自動的にクローズされる状況に関する情報を提供します。

サーバーが十分に長い期間にわたって到達不能である場合、接続がクローズする

Javaライブラリ・クライアントが十分に長い期間にわたってOracle Messaging Cloud Serviceサーバーに到達できない場合、このクライアントの接続はクローズされます。 接続がクローズされるまでの時間は、接続のタイムアウトによって指定され、これに加えて、クライアントとサーバー間の時間誤差を考慮に入れた許容誤差が追加されます。

クライアントがサーバーに到達できない期間中にクライアント操作が例外をスローしますが、サーバーへの到達不能な期間が接続のタイムアウトを超過するまで、接続はクローズしません。 この理由でConnectionがクローズされている場合、ConnectionにExceptionListenerが設定されている場合、JMSExceptionがConnection ExceptionListenerにディスパッチされます。

サーバー側の状態が失われた場合、接続がクローズする

サーバー側の状態が期限切れであるか失われたことを、接続が検出する場合があります。 これは、クライアントが一定期間にわたってサーバーに到達できなかったか、他の理由でサーバーが失敗したためであると考えられます。 接続に対するサーバー側の状態が失われていることをJavaライブラリが検出した場合、接続はクローズします。 この理由でConnectionがクローズされている場合、ConnectionにExceptionListenerが設定されている場合、JMSExceptionがConnection ExceptionListenerにディスパッチされます。

Javaライブラリからのエラーの診断

Javaライブラリでは、JMSから使用できる限界を超えた例外を診断するための追加機能を提供しています。

JMSException (またはそのサブクラスの1つ)がメソッドからスローされるか、ExceptionListenerにディスパッチされる場合、その例外には原因があり、例外オブジェクトでgetCause()を呼び出して取得できます。 原因がnullではなく、クラスHttpResponseExceptionがある場合、その原因には例外のもととなるエラーに関するメッセージング・サービス固有の情報が含まれます。 特に、エラー・キーと、詳細情報を伴うエラー・メッセージが含まれる場合があります。

HttpResponseExceptionの詳細については、「Oracle Messaging Cloud ServiceのJava APIリファレンス」HttpResponseExceptionを参照してください。 HttpResponseExceptionから取得可能なエラー情報の意味の詳細は、「エラー・キー、ステータス・コードおよびエラー・メッセージ」を参照してください。

再試行関数の使用

Javaクライアント・ライブラリからOracle Messaging Cloud Serviceへのリクエストで、期限が切れたメッセージング・コンテキストへのアクセスの試行を示すレスポンスを受け取った場合、JMSExceptionをスローする前に、一時停止を挟んでリクエストを再試行します。

デフォルトでは、ライブラリは、1回目の再試行の前に1秒間、1回目と2回目の再試行の間で2秒、次は4秒間、その次は8秒間、それぞれ一時停止してリクエストを4回再試行します。 どの時点でも、再試行に対するレスポンスによってメッセージング・コンテキストが再度見つかったことが示されると、再試行はそれ以上行われません。

再試行回数とその間の一時停止は、OracleCloudConnectionFactory.setProperty()メソッドを使用してoracle.cloud.messaging.client.retryWaitプロパティを設定することで変更できます。 このプロパティに設定する値は、長整数のカンマ区切りリストにする必要があります。 整数の個数は再試行の回数です。それぞれの整数は、対応する再試行の前に一時停止するミリ秒数です。

たとえば、OracleCloudConnectionFactoryオブジェクトに対してsetProperty("oracle.cloud.messaging.client.retryWait","1000,10000")を呼び出すと、再試行の動作は、1回目の再試行の前に1秒間、1回目と2回目の再試行の間に10秒間待機する2回の再試行に変更されます。

oracle.cloud.messaging.client.retryWaitプロパティをnullに設定すると、再試行は無効になります。