2012年11月29日木曜日

JBossコマンドラインインタフェースを使ってみる

JBoss テクニカルチームの 寺田 です。
今回は、JBoss EAP6の管理に使用するコマンドラインインタフェースを紹介します。 古いバージョンのJBossでは、twiddle.shと呼ばれるコマンドラインインタフェースで、 コネクションプールの状態、JVMの状態などを取得していました。 EAP6で同じことをしようとすると、jboss-cliと呼ばれるコマンドラインインタ フェースを使うことになります。
今回はこのコマンドラインインタフェースを紹介します。

◆起動停止方法

まずは、起動~停止のやり方から順に説明します。
以下のような手順で起動して接続します
$JBOSS_HOME/bin>jboss-cli.sh
You are disconnected at the moment. Type 'connect' to connect to the server or '
help' for the list of supported commands.
[disconnected /] connect
[standalone@localhost:9999 /]■

停止は以下のようなコマンドで行います
$JBOSS_HOME/bin/jboss-cli.sh -c --command=":shutdown"

◆基本コマンド

次に基本的なコマンドを使ってみます。 後で説明するリソースの階層をUNIXライクなコマンドでリポジトリ内を 移動し、中身を確認することができます。
[standalone@localhost:9999 /] pwd
/
[standalone@localhost:9999 /] ls
core-service                           deployment
extension                              interface
path                                   socket-binding-group
subsystem                              system-property
launch-type=STANDALONE                 management-major-version=1
management-minor-version=2             name=xxxxxxxxxx
namespaces=[]                          process-type=Server
product-name=EAP                       product-version=6.0.0.GA
profile-name=undefined                 release-codename=Steropes
release-version=7.1.2.Final-redhat-1   running-mode=NORMAL
schema-locations=[]                    server-state=running
#subsystemの下に移動します
[standalone@localhost:9999 /] cd subsystem
[standalone@localhost:9999 subsystem] ls
configadmin          datasources          deployment-scanner
ee                   ejb3                 infinispan
jaxrs                jca                  jdr
jmx                  jpa                  logging
mail                 naming               osgi
pojo                 remoting             resource-adapters
sar                  security             threads
transactions         web                  webservices
weld


helpコマンドを実行しますと、以下のような基本コマンドが表示されます。 接続(connection)、デプロイ(deploy)・アンデプロイ(undeploy)、ヘルプ(help) 、history(コマンドヒストリ)+ディレクトリ操作コマンドで基本コマンドは 構成されています。
[standalone@localhost:9999 /] help
(省略)
 cn (or cd)             - change the current node path to the argument;
 connect                - connect to the specified host and port;
 deploy                 - deploy an application;
 help (or h)            - print this message;
 history                - print or disable/enable/clear the history expansion.
 ls                     - list the contents of the node path;
 pwn (or pwd)           - prints the current working node;
 quit (or q)            - quit the command line interface;
 undeploy               - undeploy an application;
 version                - prints the version and environment information.
(省略)

◆リソース

リソースはツリー構造で管理されており、スタンドアロンとドメインで異なります。 スタンドアロンはstandalone.xml、ドメインはdomain.xmlとhost.xmlに似通ったツリー構造を持っています。サービス等の設定方法の説明は先日説明したWebコンソールでもできるのですが、xmlの設定やコマンドラインインタフェースでの方法で説明されているものもあるため、リソースの構造やコマンドラインインタフェースについても理解はしておいた方が望ましいと思います。 以下の図はstandalone構成でのルート直下のリソースです。

◆リソースの種類

リソースには、位置情報を持つ「ノード」と、位置情報を持たず値を格納する「属性」の二種類があります。

◆リソースの操作

リソースを操作する際には以下の情報が必要となります。 リソースの操作は位置情報(アドレス)を指定して行いますので、ノードの位置情報を指定します。 属性に対する操作はノードの位置情報を指定し、ノードを特定することによって、ノードにぶらさがる属性や他のリソースに対して操作を行います。
  • アドレス
  • グローバルオペレーション
  • パラメータ
[アドレス]:グローバルオペレーション名[(パラメータ名=パラメータ値)]
[]は省略可能なものを意味しています。
最小の表現では、:グローバルオペレーションとなります。
()内はグローバルオペレーションがパラメータを取る場合のみ指定。複数パラメータの場合は、カンマ区切りで指定
アドレスはキーと値を/キー=値/キー=値/....としてリソースの位置を表現されます。アドレスを省略した場合は現在の位置のリソースに対してグローバルオペレーションが実行されます

◆リソースの操作例1

リソース位置(/subsystem=web/connector=http)に移動し、現在移動した先の リソースに対してグローバルオペレーションを実行します。 この例では、/subsystem=web/connector=httpのリソースに対して、属性の名前が"protocol" となっている属性の値を取得しています
[standalone@localhost:9999 connector=http] pwd
/subsystem=web/connector=http
[standalone@localhost:9999 connector=http] :read-attribute(name=protocol)
{
    "outcome" => "success",
    "result" => "HTTP/1.1"
}
同じグローバルオペレーションをノードの位置情報(アドレス)を指定して実行します。
[standalone@localhost:9999 /] cd /
[standalone@localhost:9999 /] pwd
/
[standalone@localhost:9999 /] /subsystem=web/connector=http:read-attribute(name=
protocol)
{
    "outcome" => "success",
    "result" => "HTTP/1.1"
}
同じグローバルオペレーションをノードを"cd"基本コマンドで移動して、 対象ノードを移動してから行ってもよく、移動せず対象となるノードの位置情報(アドレス) を指定しhて行ってもどちらでも良いことがわかります。

◆リソースの操作例2

現在位置のリソースに対して、実行可能なグローバルオペレーションの名前を表示します。
[standalone@localhost:9999 data-source=PostgreDS] :read-operation-names
{
    "outcome" => "success",
    "result" => [
        "add",
        "disable",
        "enable",
        "flush-all-connection-in-pool",
        "flush-idle-connection-in-pool",
        "read-attribute",
        "read-children-names",
        "read-children-resources",
        "read-children-types",
        "read-operation-description",
        "read-operation-names",
        "read-resource",
        "read-resource-description",
        "remove",
        "test-connection-in-pool",
        "undefine-attribute",
        "whoami",
        "write-attribute"
    ],
    "response-headers" => {"process-state" => "restart-required"}
}
[standalone@localhost:9999 data-source=PostgreDS]

◆リソースの操作例3

現在位置の「/」ルートノードから、再帰的にリソースを取得し、test.txtと いうファイルに吐き出します。 リダイレクトも使えるようです。
[standalone@localhost:9999 /] :read-resource(recursive=true) > test.txt
以上EAP6のコマンドラインインタフェースを使ってみました。 簡単ですが、基本的な概念の説明をこの辺で終わりにします。 次回は対話型以外のモードについて紹介します。⇒(2012年11月29日木曜)『JBossコマンドラインインタフェースのモード』の記事へ

0 件のコメント:

コメントを投稿