私はすべてのデプロイされたアプリケーションのリストを取得しようとしています。具体的にはtomcatルートにマッピングされたアプリケーションの名前です。 Tomcatサーバーに関する情報を収集するJavaエージェントを使用して、実行時に実行したいと考えています。 が、私はこのコードサンプルを使用してみました:Tomcat 7 - java-agent/aspectj経由でログインせずに実行時にアプリケーション名を取得
private Iterable<String> collectAllDeployedApps() {
try {
final Set<String> result = new HashSet<>();
final Set<ObjectName> instances = findServer()
.queryNames(new ObjectName("Tomcat:j2eeType=WebModule,*"), null);
for (ObjectName each : instances) {
result.add(substringAfterLast(each.getKeyProperty("name"), "/")); //it will be in format like //localhost/appname
}
return result;
} catch (MalformedObjectNameException e) {
//handle
}
}
がa similar questionから運ばれたが、以来、私はマネージャーアプリにログインしていないよ、私は右の権限を持っていないので、私は空のリストを取得します。
実際に私が望むのは、(aspectJに基づいた)Javaエージェントがあり、実行時/展開時などに、マネージャに実際にログインせずにすべての配備済みアプリケーションのリストを取得できるようにしたいと思います。私自身。 どうすればいいですか? Tomcatのデプロイメントコード(既にコードを実装しているので、私の側からログインする必要はありません)をインストールするのは気にしませんが、どの機能をインストルメントするのかは分かりません。質問は2部で構成されてい
おかげで、 林
なぜあなたはコンテナのセキュリティを迂回しようとしていますか?単にマネージャーにプログラムでログインしないのはなぜですか?それにはAPIが必要です。あなたは真剣にここにアプリケーションサーバーをハッキングするための助けを得ようとしていますか?私があなたを助けることを検討する前に、自分で説明してください。 – kriegaex
@kriegaex - 監視ツールのような、アプリケーション上の「アドオン」です。私は何かをハックしようとしていません。エージェントは、システムで何が行われたかにアクセスして見ることができますが、ログイン情報はありません。それはtomcatのスタートアップコードにもアクセスすることができます。そのコードを実装するだけで十分です。私はちょうどエージェントがログインする必要があるので、私はちょうどAPIを使用することができません。そして、tomcatのどのコードがアプリケーションを配備しているのか分かりません。 – Lin
@kriegaex - アプリケーションはエージェント(バイトコード計測)で開始されます – Lin