对于WebSphere Admin Server提供的该死的可怕API感到沮丧,我正在编写自己的Java DSL包装器。我的jython文件现在只需阅读:
from my.package import MyDSL
config = MyDSL(AdminConfig, AdminTask)
config.goGoGadgetSkates() # or something like that
关键部分是我通过(#%$$!@#)神对象AdminConfig
和AdminTask
发送,以便DSL可以使用它们在WAS中执行操作。
为了编译DSL,我需要包含这两个对象的类文件。我通过首先将构造函数设置为:
来找到它们public MyDSL(Object a, Object b) {
System.out.println(a.getClass());
System.out.println(b.getClass());
}
输出显示AdminConfig对象是com.ibm.ws.scripting.AdminConfigClient
的实例。我很容易找到包含这个类的jar,一切都很好。
但是AdminTask是com.ibm.ws.scripting.adminCommand.AdminTask
的一个实例。尽管在运行时存在,但这个类在我的类路径中的任何地方都不存在,或者确实存在于计算机硬盘上的任何地方。
我只能假设jython层中的WSAdmin神奇地构造了com.ibm.ws.scripting.adminCommand.AdminTask
。也许它被定义为python类?
在我resort to reflection之前,有人可以解释com.ibm.ws.scripting.adminCommand.AdminTask
可能存在的位置以及如何提取类文件的副本吗?
答案 0 :(得分:1)
AdminConfigClient类不是API / SPI,因此依靠该类创建脆弱的基础结构。 API / SPI入口点为ConfigServiceFactory。
AdminTask对象由CommandMgr中的数据支持。应该可以使用CommandMgr来执行任何可以使用AdminTask执行的操作。