gpt4 book ai didi

jboss - 以编程方式确定 jboss 5 和 7 之间的 jboss 版本

转载 作者:行者123 更新时间:2023-12-02 12:02:03 30 4
gpt4 key购买 nike

我正在尝试找到从语法上确定我的程序是在 Jboss 5 还是 Jboss 7 (eap-6.1) 上运行的最佳方法。到目前为止,我找到的方法是特定于 jboss 5 或 jboss 7 的,这不起作用,因为代码必须在两者中都工作。从这里尝试了两种解决方案:How do I programmatically obtain the version in JBoss AS 5.1?但他们没有工作。一个提示 jboss 7 中不存在 org.jboss.Main,另一个提示但没有找到“jmx/rmi/RMIAdaptor”。

我能看到的唯一方法是执行 Class.forName 来查找“org.jboss.Version”(如果 jboss 5 则应该找到),如果失败,则执行 Class.forName “org.jboss.util.xml” .catalog.版本”(jboss 7)。但这似乎是一个糟糕的主意。

我需要知道 war 是在 jboss 5 还是 7 上运行的原因是因为有一些自定义文件位于两者的不同位置。所以就像“如果jboss 5,则执行这段代码,如果jboss 7则执行另一段代码。

最佳答案

好的,我刚刚看到问题是什么。

我建议您考虑软件的设计问题/重构。

如果您想在不同的环境中提供您的软件,请将您的逻辑与技术依赖性。

构建面和接口(interface)以满足环境要求。

在我看来,我们必须支持所有集成平台并支持所有版本,这要好得多。这是完全不可能的。

因此,解耦您的业务逻辑并提供特定的接口(interface)。这些接口(interface)(适配器)的实现和维护更加简单。

希望有帮助。

<小时/>

因评论而更新。

<小时/>

我认为服务器 4 到 6 的解决方案是使用JBoss 的 MBean 服务器查找已注册的 Web 应用程序它与已部署的 WarFile 关联。

我建议首先使用 JBoss jmx-console 手动查找 Web 应用程序的已注册 MBean。 Web 应用程序的名称应位于 jmx 控制台中的大写“web”或“web-deployment”下。

如果您找到了该名称,您可以实现自己的基于 jmx 的查找机制检查该名称。

这是一个教程:相当旧,但我认为它可以让您了解如何做。这个问题一定有更多的教程:

http://www.theserverside.com/news/1364648/Using-JMX-to-Manage-Web-Applications

在 JBoss 7 中,我只能给你提示,它的架构是基于 OSGI 的。因此,要查找其他服务,您应该查看此机制。

无论如何,您都无法直接访问文件系统和部署目录来自部署在 JEE 容器内的应用程序,除了使用容器提供的机制。 JNDI Lookup、JMX ManagedBean 机制、Java 连接器架构 (JCA)(在您的情况下没有任何意义)

关于jboss - 以编程方式确定 jboss 5 和 7 之间的 jboss 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20668768/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com