在 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在我的系统中完美运行?
<partial-response> XML 在 WildFly 中安全约束的 ajax 重定向后显示为纯文本