WebSphere Admin Serverによって提供されるひどいAPIに不満を感じて、私は独自のJavaDSLラッパーを作成しています。私のjythonファイルは単純に次のようになります。
from my.package import MyDSL
config = MyDSL(AdminConfig, AdminTask)
config.goGoGadgetSkates() # or something like that
重要な部分は、(#%$$!@#)神オブジェクトを介して送信しAdminConfig
、AdminTask
DSLがそれらを使用してWASで操作を実行できるようにすることです。
DSLをコンパイルするには、この2つのオブジェクトのクラスファイルを含める必要があります。最初にコンストラクターを次のように設定することで、それらを見つけます。
public MyDSL(Object a, Object b) {
System.out.println(a.getClass());
System.out.println(b.getClass());
}
出力は、AdminConfigオブジェクトがのインスタンスであることを示しましたcom.ibm.ws.scripting.AdminConfigClient
。私はこのクラスを含む瓶を簡単に見つけました、そしてすべては順調です。
ただし、AdminTaskはのインスタンスですcom.ibm.ws.scripting.adminCommand.AdminTask
。このクラスは実行時に存在しますが、クラスパスのどこにも、実際にはコンピューターのハードドライブのどこにも存在しません。
com.ibm.ws.scripting.adminCommand.AdminTask
jythonレイヤーのWSAdminによって魔法のように構築されているとしか思えません。おそらくそれはPythonクラスとして定義されていますか?
リフレクションに頼る前に、誰かcom.ibm.ws.scripting.adminCommand.AdminTask
が住んでいる可能性のある場所と、クラスファイルのコピーを抽出する方法を説明できますか?