この章では、操作の多くの詳細を監視および管理するために使用できる、EDQ Java Management Extensions (JMX)インタフェースについて説明します。JMXはJavaコンポーネントのリモート管理および監視用に設計されたJavaテクノロジです。
内容は次のとおりです。
EDQは内部JMXサーバー、またはWebLogicかTomcatアプリケーション・サーバーで提供されたもののいずれかを使用できます。このトピックでは、どのJMXサーバーが使用されるかを制御する方法について説明します。
Apache TomcatでのEDQのデフォルトのインストールは、内部JMXサーバーを使用します。
Oracle WebLogic ServerでのEDQのデフォルトのインストールは、WebLogic Serverアプリケーション・サーバーのJMXツリーを使用します。
デフォルトの構成には、リモート・メソッド呼出し(RMI)レジストリが含まれ、これはJMXクライアントだけでなく、EDQコマンドライン・インタフェースにより使用されます。RMIリスニング・ポート番号は、director.properties
ファイルに定義される、management.port
プロパティで指定されます。デフォルトは8090です。このプロパティは内部JMXサーバーと、EDQコマンドライン・ツールで使用されるRMI APIの両方へのアクセスを制御します。
JMXの構成を次のように変更できます。
コマンドライン・インタフェースを使用せず、Tomcatアプリケーション・サーバーJMXツリーにEDQ JMX Beansを表示する場合、management.portプロパティを0に変更します。
management.port=0
management.port
をゼロに設定した場合、RMIレジストリはどのポートもリスンしません。これは、内部JMXサーバーが使用されず、かつRMI APIも使用できないことを意味します。そのため、コマンドライン・ツールはmanagement.port
が0に設定されていると動作しません。
Oracle WebLogic Serverを使用していて、コマンドライン・インタフェースを使用し、WebLogic ServerのJMXツリーにEDQ JMX Beansを表示する場合、構成ディレクトリのdirector.properties
ファイルに次のプロパティを追加します。コマンドライン・ツールでRMI APIを使用できるように、management.port
の設定を8090のままにします。
management.jndiname=java:comp/env/jmx/runtime
EDQ JMX Beansで使用されるネーミング・スキームはJconsoleを使用してうまく動作するように設計されています。しかし、他のJMXクライアントが変更されたネーミング・スキームを必要とする場合があります。
EDQ JMX Beansで使用される名前は、適切なJavaScriptまたはGroovyファイルを構成ディレクトリに書き込んで配置し、director.properties
のmanagement.namemaker.scriptfile
プロパティをその存在を示すように設定することでカスタマイズできます。
この例では、type属性を名前の最後に追加することで、デフォルトのEDQ JMX Beanネーミング・スキームを変更する方法を示します。type属性はJava Beanクラスに基づきます。
構成ディレクトリにjmxnames.js
という名前のファイルを作成し、次のJavaScriptを追加します。
/** * Adds a type attribute to the name of a JMX Beans. * * @param beanclass The bean class name * @param domain The domain name * @param names The name strings * * @return The name string */ function objectNameFor(beanclass, domain, names) { var type = beanclass == null ? "*" : beanclass.substring(beanclass.lastIndexOf('.') + 1); var out; /* * The names array always has 2 elements. */ out = domain + ":" + "component=" + escape(names[0]) + ",name=" + escape(names[1]); for (var i = 2; i < names.length; i++) { var index = i-1 out += "," + "name" + index + "=" + escape(names[i]); } return out + ",type=" + type; }
director.properties
ファイルに次の行を追加します。
management.namemaker.scriptfile = jmxnames.js
EDQアプリケーション・サーバーを再起動します。
JMX Beansでは名前の最後に型修飾子が含まれるようになります。
EDQでは、操作の多くの局面を監視するために使用できる、組込みJMXサーバーが提供されます。EDQアプリケーションを構成する多くのオブジェクトとリソースは、リアルタイムWebサービスを含む、MBeansをJMXサーバーに提供します。
各リアルタイムWebサービスは、MBeanをそのリーダーと、JMXツリーのライターに登録します。
リーダーを次の場所に登録します。
Runtime/Data/Buckets/Realtime/Projects/Project Name/readers/Web service name
ライターを次の場所に登録します。
Runtime/Data/Buckets/Realtime/Projects/Project Name/writers/Web service name
いずれの場合も、MBeanへのパスには、それを所有するWebサービス、およびWebサービスを含むプロジェクトの名前が含まれます。
Global Webサービス(oedq_local_home/webservices
ディレクトリの.jar
ファイルにデプロイ済)には別のパス名があります。単に前述のパスのProjects/
Project Name
をGlobal
で置き換えます。
内部JMXサーバーのポートは、director.properties
ファイルに定義される、management.port
プロパティで制御されます。
JConsoleなどの一般的なJMXコンソールを使用して、MBeansと対話できます。各MBeanは次のものを公開します。
その値を読み取ることができる属性。
起動してMBeanでいくつかのアクションを実行できる操作。
クライアントがMBeanで発生するイベントの通知をサブスクライブできるインタフェース。
EDQリアルタイムWebサービスMBeansは次の属性を使用します。
|
バケットが最後に閉じられた時間。 |
|
同期リクエストの現在の数。 |
|
バケットが開かれてからの同時同期リクエストの最大数。 |
|
起動時以降の同時同期リクエストの最大数。 |
|
バケットが開かれてから処理されたメッセージ数。 |
|
バケットが開いているかまたは閉じているかを示します。 |
|
起動時以降のバケットが開かれた回数。 |
|
バケットが最後に開かれた時間。 |
|
最後のメッセージが処理された時間。 |
|
バケットが開かれてから処理されたレコード数。 |
|
最後に開かれたときにバケットを使用したスレッドの数。 |
|
起動時以降に処理されたメッセージの数。 |
|
起動時以降に処理されたレコードの数。 |
EDQリアルタイムWebサービスMBeansは次の操作を公開します。
|
このバケットを使用してリーダーまたはライターを停止します。 |