【问题标题】:Application and module name though JNDI in WebSphere 7应用程序和模块名称通过 WebSphere 7 中的 JNDI
【发布时间】:2013-08-08 20:46:20
【问题描述】:

我在一个单元格中有一个 EAR 应用程序,其中包含两个 Web 模块,每个 Web 模块都有一个 servlet。

当我请求每个 servlet 时,我想通过 JNDI 获取应用程序和模块名称。

我试过了:

String applicationName = (String) new InitialContext()
    .lookup("java:app/AppName");

String moduleName = (String) new InitialContext()
    .lookup("java:module/ModuleName");

没用。 appmodulejava: 中找不到。

我在网页上找到了这个例子,也许这适用于 WebSphere 8 但不适用于 7。

我试图在 java:comp/env 中找到应用程序或模块名称的条目,但没有找到。

  • 如何从应用服务器获取应用名称?
  • 还有模块名称?
  • 有比 JNDI 更好的方法吗?

提前致谢。

【问题讨论】:

    标签: java jakarta-ee jndi websphere-7


    【解决方案1】:

    我能想到的应用程序级别的一种方法是在应用程序的 web.xml 中指定 <env-entry>。 Websphere 会要求您在部署时指定值,但它会使用您在 web.xml 中放置的任何内容作为默认值。

    例如:

    <env-entry>
        <env-entry-name>AppName</env-entry-name>
        <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>MyApp</env-entry-value>
    </env-entry>
    

    然后您可以使用java:comp/env/AppName 通过JNDI 查找此值。

    【讨论】:

    • 目前我想不出每个模块的方法。
    • 这可能是一个好转。但是,如果同一应用程序的两个实例部署在具有相同值的同一服务器中,我的用例就会发生冲突。但如果我能从 WebSphere 中获取应用程序名称,就不会有冲突。
    • 正确,使用此方法您必须为应用程序指定唯一名称。 WebSphere 将在部署时要求您提供此值,但它将使用 web.xml 中的默认值。我不知道 WS 是否会自动将任何名称注册到本地和/或 java 上下文中。
    • 这里是我发现的几个关于使用 wsadmin 转储 JNDI 上下文的链接......无法找到像你描述的东西,但认为你可能感兴趣:pic.dhe.ibm.com/infocenter/wasinfo/v7r0/…pic.dhe.ibm.com/infocenter/wasinfo/v7r0/…
    猜你喜欢
    • 2018-03-02
    • 2011-12-06
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    相关资源
    最近更新 更多