在 Wildfly 中显示 ENC (java:comp/env/) 下的所有 JNDI 名称

Posted

技术标签:

【中文标题】在 Wildfly 中显示 ENC (java:comp/env/) 下的所有 JNDI 名称【英文标题】:Show all the JNDI names under ENC (java:comp/env/) in Wildfly 【发布时间】:2020-07-29 14:49:09 【问题描述】:

背景

我将在 Wildfly 20.0.1 上定义一些 JMS 队列。 我可以在jboss-cli 中列出所有使用/subsystem=naming:jndi-view 定义的队列。

问题

/subsystem=naming:jndi-view 的结果中,JNDI 名称不是基于 ENC (java:comp/env/~)。我想知道 Java 应用程序中使用的 JNDI 名称。

问题

有什么方法可以显示在 Wildfly 服务器上的 Web 应用程序中可用的 ENC (java:comp/env/~) 下的所有 JNDI 名称?

注意:不仅适用于 Wildfly,而且适用于其他 Java EE 服务器的方式更可取。

【问题讨论】:

【参考方案1】:

部署在应用服务器中的每个 EJB 容器都有自己的个人内部注册表,称为企业命名上下文 (ENC)。

在 JNDI ENC 中注册的任何内容都可以在 java:comp/ env 上下文中按名称查找。

InitialContext ctx = new InitialContext();
NamingEnumeration<NameClassPair> list = ctx.list("java:comp/env/");
while (list.hasMore()) 
     System.out.println(list.next().getName());

Obs.:根据调用查找的位置,JNDI 名称解析为不同的上下文。例如,如果您在 MyEJB 中调用 jndi.lookup(“java:comp/env”),您将获得该 EJB 容器的 ENC。如果您在另一个 EJB 中执行相同操作,您将获得特定于该 bean 的不同 ENC 注册表。

【讨论】:

以上是关于在 Wildfly 中显示 ENC (java:comp/env/) 下的所有 JNDI 名称的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 WildFly 8.2.0 日志记录以仅在调试级别显示应用程序

为啥wildfly17服务器显示403 jboss 6.X在我的系统中完美运行?

Wildfly 10 不显示调试消息

<partial-response> XML 在 WildFly 中安全约束的 ajax 重定向后显示为纯文本

JBoss Wildfly 在 jboss-cli 命令行模式下显示属性值

使用 iso-8859-1 在 wildfly 中打开 ucanaccess/jackcess 数据库