Webからランタイムクラス情報を取得しますか? Javapのようなものですが、メモリにロードされたクラスの実行時に

StackOverflow https://stackoverflow.com/questions/1396449

  •  22-09-2019
  •  | 
  •  

質問

私は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)にエンコードする必要があると思います。しかし、私はそれについてはわかりません。残りは同じです。)

これが生産中に展開される場合、何らかの形の認証を構成する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top