【问题标题】:Show all the JNDI names under ENC (java:comp/env/) in Wildfly在 Wildfly 中显示 ENC (java:comp/env/) 下的所有 JNDI 名称
【发布时间】: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 服务器的方式更可取。

【问题讨论】:

    标签: servlets wildfly jndi


    【解决方案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 注册表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-30
      • 1970-01-01
      • 2011-03-27
      • 2015-08-31
      相关资源
      最近更新 更多