jstatd [ options ]
options
jstatd ツールは、計測された HotSpot Java 仮想マシン (JVM) の作成と終了を監視し、ローカルシステム上で実行している Java 仮想マシンに、リモート監視ツールが接続できるようにするためのインタフェースを提供する RMI サーバアプリケーションです。
jstatd サーバでは、ローカルホストに RMI レジストリが存在することが必要になります。jstatd サーバは、デフォルトポートまたは -p port オプションで指定されたポート上の RMI レジストリに接続しようとします。RMI レジストリが見つからない場合、-p port オプションで指定されたポート、または -p port が省略されている場合は、デフォルト RMI レジストリにバインドされた jstatd アプリケーション内に、1 つの RMI レジストリが作成されます。内部 RMI レジストリの作成は、-nr オプションを指定することによって禁止することができます。
注: このユーティリティはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。現在、Windows 98 および Windows Me プラットフォームでは使用できません。
jstatd コマンドは次のオプションをサポートしています。
jstatd サーバは、有効なネイティブアクセス権を持つ JVM だけを監視できます。したがって、jstatd プロセスは、ターゲット JVM と同じユーザ資格で実行している必要があります。一部のユーザ資格は、Unix(TM) ベースのシステムにおける root ユーザのように、システム上の任意の JVM によってエクスポートされたインストゥルメンテーションへのアクセス権を持っています。このような資格で実行している jstatd プロセスは、システム上のすべての JVM を監視できますが、セキュリティ上の別の問題が起こります。
jstatd サーバは、リモートクライアントの認証を一切与えません。そのため、jstatd サーバプロセスを実行すると、jstatd プロセスがアクセス権を持つすべての JVM によるインストゥルメンテーションのエクスポートを、ネットワーク上のすべてのユーザに公開することになります。この無防備な状態は、環境的に望ましくない場合があります。特に実稼働環境または安全でないネットワークでは、jstatd プロセスを起動する前に、ローカルセキュリティポリシーを検討する必要があります。
jstatd サーバは、他のセキュリティマネージャがインストールされていない場合には、RMISecurityPolicy のインスタンスをインストールします。そのため、セキュリティポリシーファイルを指定する必要があります。ポリシーファイルは、デフォルトポリシー実装のポリシーファイルの構文に準拠する必要があります。
次のポリシーファイルの場合、jstatd サーバは一切のセキュリティ例外を使用せずに実行できます。このポリシーは、すべてのコードベースへのあらゆるアクセス権を認めるポリシーよりも自由度は低いですが、jstatd サーバを実行するために最低限必要なアクセス権しか認めないポリシーよりも自由度は高くなっています。
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
このポリシーを使用するには、このテキストを jstatd.all.policy というファイルにコピーし、次のように jstatd サーバを実行します。
jstatd -J-Djava.security.policy=jstatd.all.policy
より厳しいセキュリティを実施するサイトの場合、カスタムポリシーファイルを使用して、特定の信頼できるホストまたはネットワークにアクセスを制限することができます。ただし、このような方法は、IP アドレスの盗聴攻撃を受けやすくなります。セキュリティの問題について、カスタマイズしたポリシーファイルでも対処できない場合は、jstatd サーバを実行せずに、jstat と jps ツールをローカルで使用することがもっとも安全な方法になります。
jstatd プロセスがエクスポートするインタフェースは、独自に開発したものであり変更される予定です。ユーザおよび開発者は、このインタフェースへの書き込みを行わないでください。
次に jstatd を起動する例を紹介します。jstatd スクリプトによって、サーバはバックグラウンドで自動的に起動します。
この例は、内部 RMI レジストリを使用した jstatd の起動を表しています。この例では、デフォルトの RMI レジストリポート (ポート 1099) には、他のサーバはバインドされていないと想定しています。
jstatd -J-Djava.security.policy=all.policy
この例は、外部 RMI レジストリを使用した jstatd の起動を表しています。
rmiregistry& jstatd -J-Djava.security.policy=all.policy
この例は、ポート 2020 の外部 RMI レジストリを使用した jstatd の起動を表しています。
rmiregistry 2020& jstatd -J-Djava.security.policy=all.policy -p 2020
この例は、AlternateJstatdServerName の名前にバインドされた、ポート 2020 の外部 RMI レジストリを使用した jstatd の起動を表しています。
rmiregistry 2020& jstatd -J-Djava.security.policy=all.policy -p 2020 -n AlternateJstatdServerName
この例は、RMI レジストリが見つからない場合に RMI レジストリを作成しない jstatd の起動を表しています。この例では、RMI レジストリがすでに実行していると想定しています。実行していない場合は、該当するエラーメッセージが表示されます。
jstatd -J-Djava.security.policy=all.policy -nr
この例は、RMI ログ機能を有効にした jstatd の起動を表しています。この方法は、トラブルシューティングまたはサーバ活動の監視に役立ちます。
jstatd -J-Djava.security.policy=all.policy -J-Djava.rmi.server.logCalls=true
Copyright © 2003 Sun Microsystems, Inc.All Rights Reserved. |
Java ソフトウェア |