【问题标题】:Where in the world is com.ibm.ws.scripting.adminCommand.AdminTask?com.ibm.ws.scripting.adminCommand.AdminTask 到底在哪里?
【发布时间】:2012-03-23 14:58:27
【问题描述】:

对 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 的一个实例。尽管在运行时存在,但该类不存在于我的类路径中的任何位置,甚至我计算机硬盘上的任何位置。

我只能假设com.ibm.ws.scripting.adminCommand.AdminTask 是由 WSAdmin 在 jython 层中神奇地构造的。也许它被定义为一个python类?

在我resort to reflection 之前,谁能解释一下com.ibm.ws.scripting.adminCommand.AdminTask 可能住在哪里以及如何提取类文件的副本?

【问题讨论】:

  • 非常有趣。我可以确认,使用测试 JSP 来定位 WAS 运行时类路径上的类,找到了前者,但没有找到后者。 (ibm.com/developerworks/mydeveloperworks/blogs/Dougclectica/…)
  • 这可能有助于您搜索:我不确定 WAS 类路径和 WASadmin 的类路径是否相同或它们应该相同。无论如何,当您拥有一个全新的 WebSphere 配置文件并启动 wsadmin.sh(或 .bat)时,您可以看到它使用的 jar 列表。他们也许能帮助你。
  • google 告诉我,这不属于我们的世界。

标签: java websphere jython wsadmin


【解决方案1】:

AdminConfigClient 类不是 API/SPI,因此您正在通过依赖该类来创建脆弱的基础架构。 API/SPI 入口点是ConfigServiceFactory。

AdminTask 对象由CommandMgr 中的数据支持。应该可以使用 CommandMgr 执行任何您可以使用 AdminTask 执行的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-19
    • 2018-08-25
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 2018-11-07
    • 1970-01-01
    相关资源
    最近更新 更多