4

WebSphere Admin Serverによって提供されるひどいAPIに不満を感じて、私は独自のJavaDSLラッパーを作成しています。私のjythonファイルは単純に次のようになります。

from my.package import MyDSL
config = MyDSL(AdminConfig, AdminTask)
config.goGoGadgetSkates() # or something like that

重要な部分は、(#%$$!@#)神オブジェクトを介して送信しAdminConfigAdminTaskDSLがそれらを使用して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.AdminTaskjythonレイヤーのWSAdminによって魔法のように構築されているとしか思えません。おそらくそれはPythonクラスとして定義されていますか?

リフレクションに頼る前に、誰かcom.ibm.ws.scripting.adminCommand.AdminTaskが住んでいる可能性のある場所と、クラスファイルのコピーを抽出する方法を説明できますか?

4

1 に答える 1

1

AdminConfigClient クラスは API/SPI ではないため、そのクラスに依存して脆弱なインフラストラクチャを作成しています。API/SPI エントリ ポイントはConfigServiceFactoryです。

AdminTask オブジェクトは、CommandMgrのデータによって支えられています。CommandMgr を使用して、AdminTask でできることは何でもできるはずです。

于 2012-04-18T16:39:43.283 に答える