私はWebsphereと複雑なクラスローディングの問題に取り組んでいます。通常は javap によって印刷される情報 (メソッドなど) をダウンロードまたは印刷できるようにしたいと考えています。
バイナリ差分を実行するために、未加工のバイナリ クラス データを取得する必要がある場合もあります。
これをどのように行いますか?
クラスをクライアントに公開するサーブレットまたはJMXMBeanを作成できます。
サーブレット:
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を使用できます。
(byte []はサポートされていないため、MBeanはクラスファイルを文字列(Base 64など)にエンコードする必要があると思います。しかし、それについてはよくわかりません。残りは同じです。)
これを本番環境に導入する場合は、何らかの形式の認証を構成する必要があります。