Webからランタイムクラス情報を取得しますか? Javapのようなものですが、メモリにロードされたクラスの実行時に
質問
私はWebSphereと複雑なクラスロードの問題を扱っています。通常、Javap(メソッドなど)によって印刷される情報をダウンロードまたは印刷できるようになりたいです。
また、バイナリdiffを実行するには、生のバイナリクラスデータを取得する必要がある場合があります。
これをどうやってやるの?
解決
クラスをクライアントに公開するサーブレットまたはJMX Mbeanを書くことができます。
サーブレット:
String resourceParameter = ...;
OutputStream out = ...:
InputStream input = Thread.currentThread().getContextClassLoader()
.getResourceAsStream(resourceParameter)
write(input, out);
クライアント:
GET http://host/DiagnosticServlet?resource=your/ClassName.class
リソースパラメーターはあなたでなければなりません クラスファイル your.classname-> your/classname.class。その後、ファイルを保存してJavapを使用できます。
(MBEANは、バイト[]がサポートされていないため、クラスファイルを文字列(ベース64)にエンコードする必要があると思います。しかし、私はそれについてはわかりません。残りは同じです。)
これが生産中に展開される場合、何らかの形の認証を構成する必要があります。
所属していません StackOverflow