【问题标题】:Use JNDI lookup to check for being in an application server?使用 JNDI 查找来检查是否在应用程序服务器中?
【发布时间】:2020-10-14 22:27:11
【问题描述】:

我有一个库,既可以在 Wildfly 等应用服务器内部使用,也可以在外部使用。在企业 Java 环境中运行时,它的行为会有所不同,问题是 - 我如何确定我在哪里运行,而不依赖于任何 3rd 方库?

这个想法是使用简单的 JNDI 查找,但我想知道我会查找什么?

这里有很多问题解释了不同的 JNDI 命名空间,但我找不到您希望在目录中找到的实际对象列表。

那么,任何人都可以在 java:global、java:app 或 java:jboss 命名空间中找到更具体的内容文档吗?寻找“一直存在”的东西。

我可以使用这种方法,例如区分 Wildfly 和 Glassfish,并且 - 比如说 - 找出我正在运行的版本吗?

或者是否有不同的方法来确定我在哪种环境中运行?

【问题讨论】:

    标签: java jakarta-ee wildfly jndi


    【解决方案1】:

    我会使用这样一个事实,即当您在 JEE 环境中时,还有许多其他类可供您使用。例如:

    try {
        Class<?> clazz = Class.forName("javax.servlet.http.HttpServlet");
    }
    catch( ClassNotFoundException classNotFoundException ) {
        // not on an Java EE server       
    }
    

    这不会告诉您有关您正在运行的版本或其他信息。该部分通常需要一些 JMX 调用来确定。例如,对于 Wildfly/JBoss,请查看 here 了解一些详细信息。正确编写它对于最近的版本应该无关紧要。

    【讨论】:

      猜你喜欢
      • 2012-07-13
      • 1970-01-01
      • 2016-07-17
      • 2015-02-10
      • 1970-01-01
      • 2018-01-13
      • 2023-04-03
      • 2014-06-01
      • 1970-01-01
      相关资源
      最近更新 更多