Java 使用JNDI查找检查是否在应用程序服务器中?

Java 使用JNDI查找检查是否在应用程序服务器中?,java,jakarta-ee,wildfly,jndi,Java,Jakarta Ee,Wildfly,Jndi,我有一个库,既可以在像Wildfly这样的应用服务器内部使用,也可以在外部使用。当在企业Java环境中运行时,它的行为应该有所不同,问题是-如何在不依赖任何第三方库的情况下确定运行的位置 想法是使用一个简单的JNDI查找,但我想知道我会查找什么 这里有很多问题来解释不同的JNDI名称空间,但是我没有找到您希望在目录中找到的实际对象的列表 那么,有人能指出在java:global、java:app或java:jboss名称空间中可以找到的更具体的文档吗?寻找“永远存在”的东西 例如,我可以使用这种

我有一个库,既可以在像Wildfly这样的应用服务器内部使用,也可以在外部使用。当在企业Java环境中运行时,它的行为应该有所不同,问题是-如何在不依赖任何第三方库的情况下确定运行的位置

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

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

那么,有人能指出在java:global、java:app或java:jboss名称空间中可以找到的更具体的文档吗?寻找“永远存在”的东西

例如,我可以使用这种方法来区分野蝇和玻璃鱼,并且——比方说——找出我正在运行的版本吗


或者,是否有其他方法来确定我运行的是哪种上下文?

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

try {
    Class<?> clazz = Class.forName("javax.servlet.http.HttpServlet");
}
catch( ClassNotFoundException classNotFoundException ) {
    // not on an Java EE server       
}
试试看{
Class clazz=Class.forName(“javax.servlet.http.HttpServlet”);
}
捕获(ClassNotFoundException ClassNotFoundException){
//不在JavaEE服务器上
}
这不会告诉您运行的版本或其他信息。这一部分通常需要一些JMX调用来确定。例如,对于Wildfly/JBoss,请查看一些详细信息。写得好对最近的版本不重要