在 Wildfly 中显示 ENC (java:comp/env/) 下的所有 JNDI 名称
Show all the JNDI names under ENC (java:comp/env/) in Wildfly
背景
- 我将在 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服务器可用的方式更可取。
应用服务器中部署的每个 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());
}
观察:JNDI 名称解析为不同的上下文,具体取决于您调用查找的位置。例如,如果您在 MyEJB 中调用 jndi.lookup(“java:comp/env”),您将获得该 EJB 容器的 ENC。如果您在另一个 EJB 中执行相同的操作,您将获得特定于该 bean 的不同 ENC 注册表。
背景
- 我将在 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服务器可用的方式更可取。
应用服务器中部署的每个 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());
}
观察:JNDI 名称解析为不同的上下文,具体取决于您调用查找的位置。例如,如果您在 MyEJB 中调用 jndi.lookup(“java:comp/env”),您将获得该 EJB 容器的 ENC。如果您在另一个 EJB 中执行相同的操作,您将获得特定于该 bean 的不同 ENC 注册表。