7 RESTful Webサービスとクライアントの監視
Oracle WebLogic Serverでは、Java API for RESTful Web Services (JAX-RS)を使用して、Representational State Transfer (REST)アーキテクチャ・スタイルに従ったJava EE Webサービスを監視する様々な方法がサポートされています。
RESTful Webサービスの監視について
表7-1で定義されているメソッドを使用すると、RESTful Webサービス・アプリケーションを監視できます。
表7-1 RESTful Webサービスの監視用メソッド
メソッド | 説明 |
---|---|
Enterprise Manager Fusion Middleware Control |
実行時情報にアクセスし、実行時統計を監視します。詳細は、「Enterprise Manager Fusion Middleware Controlを使用したRESTful Webサービスの監視」を参照してください |
WebLogic Server管理コンソール |
実行時情報にアクセスし、実行時統計を監視します。詳細は、管理コンソールを使用したRESTful Webサービスの監視を参照してください |
WebLogic Scripting Tool (WLST) |
実行時情報にアクセスし、実行時統計を監視します。詳細は、WLSTを使用したRESTful Webサービスの監視を参照してください |
ログ・フィルタ |
リクエストが処理される方法と、Jersey JAX-RS RIコンポーネントにディスパッチされる方法を監視します。詳細は、「トレース機能の有効化」を参照してください |
表7-1で説明されている監視メソッドに加えて、Jersey 2.x (JAX-RS 2.0 RI)には、イベント・リスナーおよび統計の監視のサポートなど、他にも監視機能があります。Jersey 2.22 User GuideのJerseyアプリケーションの監視に関する項を参照してください。
ノート:
RESTful Webサービスの監視機能は、デフォルトで有効になっています。これによって、メモリー消費が増加する場合があります。監視機能は、ドメイン・レベルおよびアプリケーション・レベルで無効にできます。RESTful Webサービスのアプリケーション監視の無効化を参照してください。
Enterprise Manager Fusion Middleware Controlを使用したRESTful Webサービスの監視
管理コンソールを使用したRESTful Webサービスの監視
WebLogic Server管理コンソールを使用すると、デプロイメントおよび構成データの詳細、グローバル実行統計、リソースおよびリソース・メソッド実行統計などの、RESTful Webアプリケーションとリソースの拡張された実行時統計を監視できます。
WebLogic Server管理コンソールを使用してデプロイ済のRESTful Webサービスを監視するには、次のステップを実行します。
WLSTを使用したRESTful Webサービスの監視
表7-2 RESTful Webサービスの監視用ランタイムMBean
ランタイムMBean | 説明 |
---|---|
|
RESTful Webサービス・アプリケーションの例外マッパーの実行に関する監視情報を表示します。Oracle WebLogic Server MBeanリファレンスのJaxRsExceptionMapperStatisticsRuntimeMBeanを参照してください。 |
|
RESTful Webサービス・アプリケーションの監視情報を表示します。Oracle WebLogic Server MBeanリファレンスのJaxRsApplicationRuntimeBeanを参照してください。 |
|
RESTful Webサービス・アプリケーションで実行されたリクエストに関する監視情報を表示します。統計情報はアプリケーションで処理されたすべてのリクエストに適用され、特定のリソースまたはリソース・メソッドに関連したものではありません。Oracle WebLogic Server MBeanリファレンスのJaxRsExecutionStatisticsRuntimeMBeanを参照してください。 |
|
RESTful Webサービス・アプリケーションのリソース構成に関する監視情報を表示します。Oracle WebLogic Server MBeanリファレンスのJaxRsResourceConfigTypeRuntimeBeanを参照してください。 ノート: |
|
RESTful Webサービス・アプリケーションで作成されたレスポンスに関する監視情報を表示します。統計情報はアプリケーションで作成されたすべてのレスポンスに適用され、特定のリソースまたはリソース・メソッドに関連したものではありません。Oracle WebLogic Server MBeanリファレンスのJaxRsResponseStatisticsRuntimeMBeanを参照してください。 |
|
RESTful Webサービスのリソースに関する監視情報を表示します。コンテナにより管理されるすべてのオブジェクト(EJBなど)はアプリケーション・スコープを含みます。その他のすべてのリソースはデフォルトでリクエスト・スコープを含みます。Oracle WebLogic Server MBeanリファレンスのJaxRsResourceRuntimeMBeanを参照してください。 ノート: このMBeanは、今回のリリースのWebLogic Serverで非推奨になりました。かわりに、 RootResourcesByClassを使用する必要があります。 |
|
RESTful Webサービス・アプリケーションでデプロイされているリソース・クラスごとの監視情報を表示します。1つのリソース・クラスが、各URIに一致するリクエストに対応します。配列には、サブリソース・ロケータから返されたサブリソースのリソース・モデルおよびリソース・クラスに登録されたリソース・クラスが含まれています。Oracle WebLogic Server MBeanリファレンスのJaxRsResourceRuntimeMBeanを参照してください。 |
|
RESTful Webサービス・アプリケーションで公開されているURIごとの監視情報を表示します。Oracle WebLogic Server MBeanリファレンスのJaxRsUriRuntimeMBeanを参照してください。 |
|
RESTful Webサービス・アプリケーションをホストするサーブレットの監視情報を表示します。Oracle WebLogic Server MBeanリファレンスのServletRuntimeMBeanを参照してください。 |
WLSTを使用してRESTful Webサービスを監視するには、次のプロシージャのステップを実行します。
このプロシージャでは、ステップの例により、WebLogic Serverのサンプル・サーバーとともに提供されるJAX-RS 2.0同期処理サンプルの監視方法を示します。Oracle WebLogic Serverの理解のサンプル・アプリケーションとコード例を参照してください。
-
WebLogic Scripting Toolの理解のWLSTの呼出しの説明に従って、WLSTを呼び出します。
たとえば:
c:\Oracle\oracle_common\common\bin> wlst
-
WebLogic Server WLSTコマンド・リファレンスのconnectの説明に従って、管理サーバー・インスタンスに接続します。
たとえば:
wls:/offline> connect('weblogic','password','t3://localhost:8001')
-
WebLogic Server WLSTコマンド・リファレンスのserverRuntimeの説明に従って、サーバー・ランタイムMBeanに移動します。
たとえば:
wls:/samples/serverConfig> serverRuntime()
Location changed to serverRuntime tree. This is a read-only tree with ServerRuntimeMBean as the root. For more help, use help('serverRuntime')
wls:/samples/serverRuntime>
-
Webアプリケーション・コンポーネント・ランタイムMBeanに移動します。
たとえば、
jaxrs-async
という名前のアプリケーションのランタイムMBeanに移動するには、次を実行します。wls:/samples/serverRuntime> cd('ApplicationRuntimes/jaxrs-async') wls:/samples/serverRuntime/ApplicationRuntimes/jaxrs-async> cd('ComponentRuntimes') wls:/samples/serverRuntime/ApplicationRuntimes/jaxrs/ComponentRuntimes>
cd ('AdminServer_/jaxrs-async')
-
RESTful Webサービス・リクエスト統計のアプリケーション・ランタイムMBeanに移動します。
たとえば:
wls:/samples/serverRuntime/ApplicationRuntimes/jaxrs-async/ComponentRuntimes>
cd ('AdminServer_/jaxrs-async'
wls:/samples_domain/serverRuntime/ApplicationRuntimes/jaxrs-async/ComponentRuntimes/AdminServer_/jaxrs-async>cd ('JaxRsApplications/examples.javaee7.jaxrs.async.MessageApplication/RequestStatistics/examples.javaee7.jaxrs.async.MessageApplication_RequestStatistics')
-
RESTful Webサービス・アプリケーションについて表示される監視情報を確認します。Oracle WebLogic Server MBeanリファレンスのJaxRsApplicationRuntimeBeanを参照してください。
たとえば:
wls:/samples/serverRuntime/ApplicationRuntimes/jaxrs-async/ComponentRuntimes/AdminServer_/jaxrs-async /JaxRsApplications/examples.javaee7.jaxrs.async.MessageApplication/RequestStatistics /examples.javaee7.jaxrs.async.MessageApplication_RequestStatistics> ls() -r-- AvgTimeLast15m -1 -r-- AvgTimeLast15s -1 -r-- AvgTimeLast1h -1 -r-- AvgTimeLast1m -1 -r-- AvgTimeLast1s -1 -r-- AvgTimeTotal 0 -r-- MaxTimeLast15m -1 -r-- MaxTimeLast15s -1 -r-- MaxTimeLast1h -1 -r-- MaxTimeLast1m -1 -r-- MaxTimeLast1s -1 -r-- MaxTimeTotal 0 -r-- MinTimeLast15m -1 -r-- MinTimeLast15s -1 -r-- MinTimeLast1h -1 -r-- MinTimeLast1m -1 -r-- MinTimeLast1s -1 -r-- MinTimeTotal 0 -r-- Name examples.javaee7.jaxrs.async.MessageApplication_RequestStatisti cs -r-- RequestCountLast15m 0 -r-- RequestCountLast15s 0 -r-- RequestCountLast1h 0 -r-- RequestCountLast1m 0 -r-- RequestCountLast1s 0 -r-- RequestCountTotal 0 -r-- RequestRateLast15m 0.0 -r-- RequestRateLast15s 0.0 -r-- RequestRateLast1h 0.0 -r-- RequestRateLast1m 0.0 -r-- RequestRateLast1s 0.0 -r-- RequestRateTotal 0.0 -r-- Type JaxRsExecutionStatisticsRuntime wls:/samples/serverRuntime/ApplicationRuntimes/jaxrs-async/ComponentRuntimes/AdminServer_/jaxrs-async /JaxRsApplications/examples.javaee7.jaxrs.async.MessageApplication/RequestStatistics /examples.javaee7.jaxrs.async.MessageApplication_RequestStatistics>
-
表7-2に示された他のランタイムMBeanのいずれかに移動して、追加の監視情報を表示します。
-
WebLogic Scripting Toolの理解のWLSTの終了の説明に従って、WLSTを終了します。
たとえば:
wls:/samples/serverRuntime/ApplicationRuntimes/jaxrs-async/ComponentRuntimes/AdminServer_/jaxrs-async /JaxRsApplications/examples.javaee7.jaxrs.async.MessageApplication/RequestStatistics /examples.javaee7.jaxrs.async.MessageApplication_RequestStatistics>exit() Exiting WebLogic Scripting Tool. c:\>
トレース機能の有効化
有効な場合、Jersey 2.xトレース機能により、JAX-RSサーバー側リクエスト処理パイプラインのすべてのコンポーネントから個々のリクエストについて有用な情報が収集されます。収集された情報は、JerseyまたはJAX-RSアプリケーションをトラブルシューティングするために、きわめて重要な詳細情報となることがあります。
単一リクエストのトレース情報は、レスポンスのHTTPヘッダーでリクエスト元のクライアントに返されます。さらに、その情報は専用のJavaロガー・インスタンスを使用してサーバー側で記録されます。
Jersey 2.xトレース機能の有効化の詳細は、Jersey 2.22 User Guideのトレースのサポートに関する項を参照してください。
RESTful Webサービスのアプリケーション監視の無効化
個々のJersey 2.x Java API for RESTful Web Services (JAX-RS)アプリケーションに対して、あるいはWebLogicドメイン全体に対してグローバルに、監視機能を無効にできます。
たとえば、次の方法で監視を無効化できます。
-
アプリケーション・レベルで、WebLogic Server固有のJersey 2.xアプリケーション・プロパティ
jersey.config.wls.server.monitoring.enabled
を設定できます。JerseyプロパティによるRESTful Webサービス・アプリケーションの監視の無効化を参照してください。 -
アプリケーション・レベルとドメイン・レベルの両方で、WebLogic構成MBean(
WebAppComponentMBean.JaxRsMonitoringDefaultBehavior
)を使用して監視機能を無効にできます。WebLogic構成MBeanによるRESTful Webサービス・アプリケーションの監視の無効化およびWebLogicドメインのRESTful Webサービスのアプリケーション監視の無効化を参照してください。
WebLogic Serverでは、次のアルゴリズムを使用して、各アプリケーションで監視を有効にするか無効にするかを判定します。
JerseyプロパティによるRESTful Webサービス・アプリケーションの監視の無効化
Jersey 2.xでは、次のWebLogic Server固有のプロパティをサポートしています。これを使用すると、個々のRESTful Webサービス・アプリケーションのアプリケーションの監視を無効にできます。
jersey.config.wls.server.monitoring.enabled
このプロパティをfalse
に設定すると、アプリケーションの監視が無効になります。JAX-RSアプリケーションのサブクラス・コードで、この値をプログラムで設定できます。また、次の例で示すようにweb.xml
で指定したサーブレット初期化パラメータで宣言して設定することもできます。
便宜上、プロパティ名はweblogic.jaxrs.server.WeblogicServerProperties.MONITORING_ENABLED
定数フィールドに格納されます。
例7-1に、JAX-RSアプリケーション・クラスを拡張し、プログラムによってRESTful Webサービス・アプリケーションで監視を無効にする方法の例を示します。
例7-1 JAX-RSアプリケーション・クラスの拡張によるプログラムでのアプリケーション監視の無効化
ApplicationPath("/")
public class MyApplication extends Application {
public Map<String, Object> getProperties() {
final Map<String, Object> properties = new HashMap<>();
// Disable JAX-RS Application monitoring (and WLS console monitoring) for this internal application.
properties.put(weblogic.jaxrs.server.WeblogicServerProperties.MONITORING_ENABLED, false);
return properties;
}
}
例7-2に、JAX-RS Jersey ResourceConfig
クラスを拡張し、RESTful Webサービス・アプリケーションでプログラムによって監視を無効にする方法の例を示します。
例7-2 Jersey ResourceConfigクラスの拡張によるプログラムでのアプリケーション監視の無効化
@ApplicationPath("/")
public class MyApplication extends ResourceConfig {
public MyApplication() {
// ...
// Disable JAX-RS Application monitoring (and WLS console monitoring) for this internal application.
property(weblogic.jaxrs.server.WeblogicServerProperties.MONITORING_ENABLED, false);
}
// ...
}
例7-1に、web.xml
で指定したサーブレット初期化パラメータを使用して、宣言で監視を無効にする方法の例を示します。
例7-3 web.xmlでサーブレット初期化パラメータを使用した宣言でのアプリケーション監視の無効化
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app version="2.5" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <servlet> <servlet-name>com.examples.MyApplication</servlet-name> ... <init-param> <param-name>jersey.config.wls.server.monitoring.enabled</param-name> <param-value>false</param-value> </init-param> ... <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>com.examples.MyApplication</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app>
WebLogic構成MBeanによるRESTful Webサービス・アプリケーションの監視の無効化
WebLogic ServerにRESTful Webサービス・アプリケーションをデプロイした後、WLSTを使用して、アプリケーションの監視を無効にできます。たとえば、次のようにWebAppComponentMBean
でJaxRsMonitoringDefaultBehavior
プロパティをfalse
に設定します。
webAppComponentMBean.setJaxRsMonitoringDefaultBehavior("false")
これはアプリケーションごとのプロパティです。JAX-RSアプリケーションのデフォルトの監視動作の状態を判定するためにJersey/WebLogicの統合コードで内部的に使用されます。
-
true
に設定すると、JAX-RSアプリケーションの監視は有効になります。 -
false
に設定すると、JAX-RSアプリケーションの監視は無効になります。 -
プロパティが設定されていない場合、ドメイン・レベルのWebアプリケーション・コンテナ・プロパティ
WebAppContainerMBean.isJaxRsMonitoringDefaultBehavior())
をフォールバックとして使用します。
ノート:
アプリケーション固有のこのプロパティの値(設定されている場合)は、ドメイン・レベルの構成プロパティをオーバーライドします。
デフォルトでは、この値は明示的に設定されていません。
WebLogicドメインのRESTful Webサービスのアプリケーション監視の無効化
アプリケーションの監視は、WebLogicドメインにデプロイされているすべてのRESTful Webサービス・アプリケーションに対して、デフォルトで有効になっています。WebLogicドメインのこのデフォルトの動作を戻して、ドメインにデプロイされたすべてのRESTful Webサービス・アプリケーションに対してJAX-RS監視を無効にするには(アプリケーション固有の構成によってオーバーライドされない場合)、WebAppContainerMBean
のJaxRsMonitoringDefaultBehavior
プロパティをfalse
に設定します。
WebAppContainerMBean.setJaxRsMonitoringDefaultBehavior("false")
このWebアプリケーション・コンテナ・プロパティは、ドメイン・レベルでJAX-RSアプリケーションの監視の動作を判定するために、Jersey/WebLogic統合コードで使用されるドメイン・レベルのプロパティです。
-
true
に設定されている場合(またはこのプロパティが設定されていない場合)、JAX-RS監視は有効になります(アプリケーションで直接設定されたプロパティでオーバーライドされない場合)。デフォルトでは、このプロパティは明示的に設定されておらず、監視は有効になっています。 -
false
に設定されている場合、すべてのJAX-RSアプリケーションの監視は指定されたドメインに対してデフォルトで無効になっています。
ノート:
各JAX-RSアプリケーションのこのドメイン・レベルの設定をオーバーライドするには、アプリケーション・レベルの同じプロパティWebAppComponentMBean#isJaxRsMonitoringDefaultBehavior())
を設定します。WebLogic構成MBeanによるRESTful Webサービス・アプリケーションの監視の無効化を参照してください。
WLSTコマンドを使用して、ドメインのWebAppContainerMBean.JaxRsMonitoringDefaultBehavior
プロパティを更新してから、例7-4に示すように、ドメインの起動またはアプリケーションのデプロイを実行できます。
例7-4に、デフォルトでドメイン全体でJAX-RS監視を無効にするサンプルWLSTスクリプトを示します。
例7-4 ドメイン・レベルでのJAX-RS監視を無効にするサンプルWLSTスクリプト
connect(<user>, <password>) edit() startEdit() cd("WebAppContainer/<domain_name>/") cmo.setJaxRsMonitoringDefaultBehavior(false) activate()
ノート:
監視を無効にしてからドメインを再起動して、以前にデプロイしたすべてのアプリケーションが新しい設定で再デプロイされていることを確認する必要があります。
例7-5に、jax-rs-monitoring-default-behavior
設定をfalse
に変更後、DOMAIN_NAME
/config/config.xml
で生成されたドメイン構成ドキュメントのセクションを示します。
例7-5 ドメイン・レベルでJAX-RS監視を無効にしているconfig.xmlファイル
<?xml version='1.0' encoding='UTF-8'?> <domain ...> <name>mydomain</name> ... <web-app-container> <jax-rs-monitoring-default-behavior>false </jax-rs-monitoring-default-behavior> </web-app-container> ... </domain>
ノート:
前述の手順は可能ですが、直接config.xml
ファイルを編集することはお薦めしません。Oracle WebLogic Serverドメイン構成の理解のドメイン構成ファイルを参照してください。
RESTful Webサービス・アプリケーションにおける合成Jerseyリソースの監視の有効化
-
JAX-RSアプリケーション全体へのWADLの公開、およびデプロイしたリソースへの部分的なWADの公開を行うリソース。
-
JAX-RSアプリケーションの各リソースまたはリソース・メソッドのOPTIONSメソッド・ハンドラ。
-
JAX-RSアプリケーションの各リソースまたはリソース・メソッドのHEADメソッド・ハンドラ。
アプリケーションによっては、非常に多数の合成リソースがデプロイ済アプリケーションに追加される可能性があります。パフォーマンス上の理由から、WebLogic Serverでは、デフォルトで、これらの拡張合成リソースおよびリソース・メソッドにランタイムMBeanを公開しません。
ただし、次のJersey 2.x/JAX-RSアプリケーション・プロパティをtrue
に設定すると、WebLogic Server管理コンソールでこれらの追加の合成リソースに関する情報を表示できます。
jersey.config.wls.server.monitoring.extended.enabled
次の例で示すように、JAX-RSアプリケーションのサブクラス・コードで、この値をプログラムで設定できます。また、web.xml
で指定したサーブレット初期化パラメータで宣言して設定することもできます。
便宜上、プロパティ名はweblogic.jaxrs.server.WeblogicServerProperties.MONITORING_EXTENDED_ENABLED
定数フィールドに格納されます。
例7-6に、JAX-RSアプリケーション・クラスを拡張し、プログラムによってJAX-RSアプリケーションで合成リソースの監視を有効にする方法の例を示します。
例7-6 JAX-RSアプリケーション・クラスの拡張によるプログラムでの合成監視の有効化
@ApplicationPath("/")
public class MyApplication extends Application {
public Map<String, Object> getProperties() {
final Map<String, Object> properties = new HashMap<>();
// Expose MBeans for extended JAX-RS resources and resource methods
properties.put(weblogic.jaxrs.server.WeblogicServerProperties.MONITORING_EXTENDED_ENABLED, true);
return properties;
}
}
例7-7に、JAX-RS Jersey ResourceConfig
クラスを拡張し、プログラムによってJAX-RS/Jerseyアプリケーションで合成リソースの監視を有効にする方法の例を示します。
例7-7 Jersey ResourceConfigクラスの拡張によるプログラムでの合成監視の有効化
@ApplicationPath("/")
public class MyApplication extends ResourceConfig {
public MyApplication() {
// ...
// Expose MBeans for extended JAX-RS resources and resource methods
property(weblogic.jaxrs.server.WeblogicServerProperties.MONITORING_EXTENDED_ENABLED, true);
}
// ...
}
例7-8に、web.xml
で指定したサーブレット初期化パラメータを使用して、宣言で合成リソースの監視を有効にする方法の例を示します。
例7-8 web.xmlでサーブレット初期化パラメータを使用した宣言での合成監視の有効化
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app version="2.5" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <servlet> <servlet-name>com.examples.MyApplication</servlet-name> ... <init-param> <param-name>jersey.config.wls.server.monitoring.extended.enabled</param-name> <param-value>true</param-value> </init-param> ... <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>com.examples.MyApplication</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app>