3

我正在将 EAR 文件部署到 IBM WebSpehre 服务器 6.1 - 我希望能够访问存储在“显示名称”下的部署文件中的 EAR 应用程序名称。查看有关相关主题的堆栈溢出帖子,我已经能够通过 Java MBean API 或 IBM 的 WAS API 收集到这是可能的 - 问题是我找不到汇总这些 API 列表的地方,即无法弄清楚哪个一个开始看。我可以硬编码 WAS 安装位置并通过查看“installedApps”目录找到该文件,但这不是动态的。

有没有人有使用这些 API 的经验?动态查找已部署 EAR 的显示名称的任何其他方式?

编辑 - 我应该补充一点,我想要这些信息的原因是动态加载我们的属性文件 - 由以下约定“EARAppName.properties”命名 - 所以你会看到在我的应用

编辑 2 - 我还应该注意,此应用程序将始终部署在 WAS 上 - 但如果不是,则首选通用的非专有解决方案,但目前没有必要。

编辑 3 -我想要完成的事情: 有没有办法从应用程序代码中动态查找已部署 EAR 的显示名称?

4

4 回答 4

2

不是直接的答案,但对属性文件使用硬编码名称不是更简单吗?毕竟,对于给定的应用程序来说,知道要加载什么文件似乎是有意义的。编写代码来读取部署描述符中的显示名称听起来很奇怪(特别是因为您作为Application Component Provider不应该依赖Application Assembler拥有的东西)。

于 2010-02-15T04:56:59.987 回答
2

如果这个目标的全部原因是读取属性文件,那么我会推荐一种不同的方法。

使用 WebSphere 共享库。

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/tcws_sharedlib.html

对于每个部署的 EAR,都有一个单独的目录,其中包含该 EAR 需要访问的属性文件。

为每个包含属性文件的目录创建共享库条目。

从 EAR 创建对所需共享库的共享库引用。

.

但是,以下链接可能对您的方法有所帮助:

通过编程管理应用程序

界面应用管理

于 2010-02-17T03:54:04.847 回答
1

我试图在这里完成同样的事情。我试图在运行时找到在 META-INF/application.xml 中找到的 ApplicationName。

我们在 Log4J File Appender 中使用这个 AppName 来根据当前正在记录的应用程序创建一个正确的日志文件名。我们有很多程序员和很多应用程序,我们需要在框架中强制执行一些约定。

我希望我可以简单地调用:

InputStream in = new MyObject().getClass().getResourceAsStream(“META-INF/application.xml”);

我还尝试将类加载器更改为“PARENT_LAST/FIRST”和“Single ClassLoader”,但它不起作用。

我可以在相对于我的战争文件的文件系统上找到 application.xml,但我不确定它是否会一直工作。

JMX Api 真的是唯一的方法吗?

于 2010-03-14T01:24:01.363 回答
0

这不是让您的应用程序知道的,而是让 EAR 处理工具(包括应用程序服务器)知道的。

于 2010-01-11T21:03:53.917 回答