【问题标题】:What's the default JNDI name of an EJB in Websphere Application Server 7 (WAS)?Websphere Application Server 7 (WAS) 中 EJB 的默认 JNDI 名称是什么?
【发布时间】:2014-05-30 22:01:23
【问题描述】:

在 WAS 7 的管理控制台中,在 应用程序 > 应用程序类型 > WebSphere 企业应用程序 > 应用程序 > EJB JNDI 名称 部分,我有一个包含四列的表:

  • EJB 模块(例如 ProjectEJB.jar)
  • EJB(例如 BeanBO)
  • URI(例如 ProjectEJB.jar、META-INF/ejb-jar.xml
  • 目标资源 JNDI 名称(有空字段)

类似这样的:

我的 LogWriter bean 的 jndi 名称是什么?

【问题讨论】:

    标签: jakarta-ee websphere jndi websphere-7


    【解决方案1】:

    下面有默认名称的表格。每个豆子都有短而长的形式。您可以使用 ibm-ejb-jar-bnd.xml 文件或在安装期间通过控制台覆盖默认值。在模块启动期间绑定将在 SysyemOut.log 中可见

    您可以在此处阅读有关默认绑定的信息: http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.express.iseries.doc/info/iseriesexp/ae/cejb_bindingsejbfp.html

    Description                              Binding pattern
    Short form local interfaces and homes    ejblocal:<package.qualified.interface>
    Short form remote interfaces and homes   <package.qualified.interface>
    Long form local interfaces and homes     ejblocal:<component-id>#<package.qualified.interface>
    Long form remote interfaces and homes    ejb/<component-id>#<package.qualified.interface>
    
    The component-id defaults to <application-name>/<module-jar-name>/<ejb-name>
    

    【讨论】:

    • 那么如果在 ejb-jar.xml 中配置了 jndi,它会覆盖在 WebSphere 管理控制台中配置的 EJB JNDI 查找吗?
    • @GovindaSakare - 不,控制台中的 JNDI 配置始终优先于任何描述符,以允许您在部署后手动覆盖。
    【解决方案2】:

    可以通过添加文件 META-INF/ibm-ejb-jar-bnd.xml 来设置它 - 类似这样:

    <?xml version="1.0" encoding="UTF-8"?>
    <ejb-jar-bnd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://websphere.ibm.com/xml/ns/javaee" xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd" version="1.0">
        <session name="LogWriter" simple-binding-name="my/ejb/LogWriterService"/>
    </ejb-jar-bnd>
    

    我们曾经有一个脚本来为不同的供应商生成这些特定于服务器的文件。

    【讨论】:

    • 感谢 Ed!,正如您所说,这是用于自定义 JDNI。我试图在管理控制台中更改它,但没有“确定”或“保存”按钮,但是使用 ibm-ejb-jar-bnd.xml 文件可以正常工作,谢谢。
    【解决方案3】:

    感谢 [https://stackoverflow.com/a/16936264/539783][2]

    本地查找:

    String jndi = "ejblocal:enterprise_app_name/ejb_web_project_name.jar/ejb_name#name.of.local.impl.interface";
    

    远程查询:

    String jndi = "ejb/enterprise_app_name/ejb_web_project_name.jar/ejb_name#name.of.remote.impl.interface";
    

    例子:

    ejblocal:ServicesEAR/LogWriter.jar/LogWriter#ILogWriter

    更新:在某些情况下它不起作用。

    【讨论】:

      猜你喜欢
      • 2018-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多