应用程序绑定

在应用程序服务器上所安装的应用程序可以启动之前,应用程序上定义的所有企业 Bean (EJB) 引用和资源引用必须与应用程序服务器上定义的实际工件(企业 Bean 或资源)绑定。

定义绑定时,请对应用程序中的可引用对象和被引用工件指定 Java™ 命名和目录接口 (JNDI) 名称。对工件指定的 jndiName 值必须是限定的查询名。示例可引用对象工件是应用程序中定义的 EJB。已引用工件的示例是应用程序中使用的 EJB 或资源引用。

绑定定义存储在应用程序的 ibm-xxx-bnd.xmlibm-xxx-bnd.xmi 文件中。对于 EJB 3x 和 Web 2.5 及更高版本模块,V7.0 或更高版本绑定定义支持后缀为 XML 的文件。版本低于 Java EE 5 的模块将继续使用后缀为 XMI 的绑定定义文件,这与先前版本的 WebSphere® Application Server 相同。xxx 可以是 ejb-jarwebapplicationapplication-client

请参阅以下有关绑定的信息:

可以定义绑定的时间

您可以在以下时间定义绑定:

  • 应用程序开发期间

    应用程序开发者可以在 ibm-xxx-bnd.xml 文件中为 EJB 3.x 和 Web 2.5 及更高版本模块创建绑定定义以及在 ibm-xxx-bnd.xmi 文件中为 Java EE 5 之前的模块创建绑定定义。应用程序开发者可以使用工具(如 IBM® Rational® 开发者工具)创建这些文件,或者对于 EJB 3.x 或 Web 2.5 及更高版本模块,可以使用 XML 编辑器或文本编辑器创建这些文件。然后,开发者将完成了绑定的企业应用程序(.ear 文件)提供给应用程序组装者或部署者。组装应用程序时,组装者不修改绑定。同样,将应用程序安装到 WebSphere Application Server 支持的服务器上时,除非必须更改绑定才能成功地部署应用程序,否则开发者不修改或覆盖绑定,也不生成缺省绑定。

  • 应用程序组装期间

    应用程序组装者可以在应用程序的注释或部署描述符中定义绑定。Java EE 5 或更高版本模块将注释包含在源代码中。要声明注释,应用程序组装者在关键字前面指定 @ 符。对于版本低于 Java EE 5 的模块,请在部署描述符编辑器的 WebSphere 绑定部分中指定绑定。修改部署描述符可能会更改在开发应用程序时在 ibm-xxx-bnd.xmi 文件中创建的绑定定义。定义绑定后,组装者将为应用程序分配一个部署者。将应用程序安装到 WebSphere Application Server 支持的服务器上时,除非必须更改绑定才能部署应用程序,否则开发者不修改或覆盖绑定,也不生成缺省绑定。

  • 应用程序安装期间

    在将应用程序安装到 WebSphere Application Server 所支持的服务器上时,应用程序部署者或服务器管理员可以使用管理控制台来修改绑定。您可以在安装向导页面上指定新的绑定定义。

    并且,部署者或管理员还可以在应用程序安装期间选择生成缺省绑定。在应用程序安装期间选择生成缺省绑定将指示产品输入应用程序中不完整绑定的缺省值。现有绑定不会更改。

    限制: 在应用程序客户机的应用程序安装期间,无法定义或覆盖绑定。在组装期间,必须为应用程序客户机模块定义绑定,并将这些绑定存储在 ibm-application-client-bnd.xmi 文件中。
  • 配置已安装的应用程序期间

    在将应用程序安装到 WebSphere Application Server 所支持的服务器上之后,应用程序部署者或服务器管理员可以通过在管理控制台页面中更改值(例如从企业应用程序的设置页面访问的那些值)来修改绑定。

必需的绑定

可以成功部署应用程序之前,必须定义绑定以引用以下工件:

EJB JNDI 名称
对于每个 EJB 2.1 或更低版本的企业 Bean (EJB),必须指定 JNDI 名称。此名称用来在全局 JNDI 名称空间中绑定 EJB 主对象的条目。Store 应用程序中 Product EJB 的 JNDI 名称示例可以是 store/ejb/Product。绑定定义存储在 META-INF/ibm-ejb-jar-bnd.xmi 文件中。

如果部署者在安装应用程序时选择生成缺省绑定,那么安装向导将对不完整的绑定指定格式为 prefix/EJB_name 的 EJB JNDI 名称。缺省前缀为 ejb,但这是可以重设的。EJB_name 是在部署描述符 <ejb-name> 标记中指定的。

在应用程序安装期间以及安装完成之后,可以在“提供 Bean 的 JNDI 名称”页面上指定 EJB JNDI 名称。完成安装后,请在管理控制台中单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > application_name > EJB JNDI 名称

因为 EJB 容器会指定缺省绑定,所以不需要为企业 Bean 上的每个 EJB 3.x Home 接口或业务接口指定 JNDI 绑定名称。

实体 Bean 的数据源
实体 Bean(例如容器管理的持久性 (CMP) Bean)将持久数据存储在数据存储器中。使用 CMP Bean,EJB 容器管理 Bean 持久状态。您通过将 EJB 模块或单个企业 Bean 与数据源绑定来指定 Bean 所使用的数据存储器。将 EJB 模块与数据源绑定将导致该模块中的所有实体 Bean 持久使用同一数据源。

Store 应用程序中的 Store 数据源的 JNDI 名称示例可以是 store/jdbc/store。对于版本低于 Java EE 5 的模块而言,绑定定义存储在 IBM 绑定文件(例如 ibm-ejb-jar-bnd.xmi)中。部署者还可以指定是在容器级别还是在应用程序级别处理认证。

WebSphere Application Server V8.x 支持 EJB 2.x 或 1.x 模块中的 CMP Bean。V8.x 不支持 EJB 3.0 模块中的 CMP Bean。

如果部署者在安装应用程序时选择生成缺省绑定,那么安装向导将为不完整的绑定生成以下内容;

  • 对于 EJB 2.x .jar 文件,基于指定的 JNDI 名称和授权信息的连接工厂绑定
  • 对于 EJB 1.1 .jar 文件,基于指定的 JNDI 名称、数据源用户名和密码的数据源绑定

在正在安装的应用程序中,生成的绑定为每个 EJB 2.x .jar 文件提供缺省的连接工厂设置,并为每个 EJB 1.1 .jar 文件提供缺省的数据源设置。除非在生成缺省绑定期间提供的定制策略规则中指定了 Bean 级连接工厂绑定或数据源绑定,否则不会生成这些绑定。

在应用程序安装期间以及安装完成之后,您可以在“2.x CMP Bean 数据源”页面和“2.x 实体 Bean 数据源”页面上将数据源映射至 2.x 实体 Bean。完成安装后,请在管理控制台中单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > application_name,然后选择 2.x CMP Bean 数据源2.x 实体 Bean 数据源。您可以在“为所有 1.x CMP Bean 映射数据源”页面和“为包含 1.x 实体 Bean 的模块提供缺省数据源映射”页面上将数据源映射至 1.x 实体 Bean。安装之后,请访问与 2.x CMP Bean 的那些控制台页面类似的控制台页面(除了单击 1.x CMP Bean 的链接)。

EJB 模块的后端标识
如果定义 CMP Bean 的 EJB .jar 文件包含多个后端数据库的映射,请指定用于确定在运行时可装入哪些持久类的适当后端标识。

在应用程序安装期间指定后端标识。应用程序安装到服务器上之后,您无法选择后端标识。

要对各个 EJB 模块启用后端标识:

  1. 在应用程序安装期间,在选择安装选项页面上选择部署企业 Bean。选择部署企业 Bean 将使您能够访问“提供用于执行 EJB 部署的选项”页面。
  2. 在“提供用于执行 EJB 部署的选项”页面上,将数据库类型设为 ""(空)。

在应用程序安装期间,如果您在“选择安装选项”页面上选择了部署企业 Bean,并在“提供用于执行 EJB 部署的选项”页面上为 EJB 部署工具指定了数据库类型,那么先前为所有 EJB 模块定义的后端标识都将被选择的数据库类型覆盖。

缺省数据库类型是 DB2UDB_V81

在安装 EJB 3.0 或更高版本模块期间,不会运行 EJB 部署工具。

有关后端数据库的信息,请参阅有关 EJB 部署工具和 ejbdeploy 命令的 V8.5.5 文档。

EJB 引用
企业 Bean (EJB) 引用是用于查找企业 Bean 的 Home 接口的逻辑名。EJB 引用是在部署期间指定的。在运行时,EJB 引用与企业 Bean 在目标操作环境中的物理位置(全局 JNDI 名称)绑定。可以在 java:comp/env/ejb Java 命名子上下文中或在另一个 java: 名称空间(如果引用名称是 java:modulejava:appjava:app URL)中使用 EJB 引用。会根据 URL 将具有 URL 名称的 EJB 引用绑定到对应的名称空间。

产品将指定缺省 JNDI 值或自动解析不完整的 EJB 3.0 引用目标。

对于每个 EJB 2.1 或更低版本 EJB 引用,您必须指定 JNDI 名称。Store 应用程序中的 Supplier EJB 引用的 JNDI 名称示例可以是 store/ejb/Supplier。绑定定义存储在 IBM 绑定文件(如 ibm-ejb-jar-bnd.xmi)中。如果所引用的 EJB 也部署在同一应用程序服务器中,那么您可以指定具有服务器范围的 JNDI 名称。但是,如果所引用的 EJB 部署在另一应用程序服务器上,或者 ejb-ref 是在应用程序客户机模块中定义的,那么您应该指定具有单元范围的全局 JNDI 名称。

如果部署者在安装应用程序时选择生成缺省绑定,那么安装向导将按如下方式绑定 EJB 引用:如果找到 <ejb-link>,那么采用此内容。如果应用程序中定义的 EJB 的 ejb-nameejb-ref 名称匹配,那么选择该 EJB。否则,如果找到唯一的 EJB,并且其匹配的 Home(或本地 Home)接口作为所引用的 Bean,那么自动解析引用。

在应用程序安装期间以及安装完成之后,您可以在“将 EJB 引用映射到 Bean”页面上指定 EJB 引用 JNDI 名称。完成安装后,请在管理控制台中单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > application_name > EJB 引用

注: 要使 EJB 引用目标能够在引用来自 EJB 2.1 或更低版本的模块或者来自 Web 2.3 或更低版本的模块时自动进行解析,请在“准备安装应用程序”页面上选择生成缺省绑定,或者在“选择安装选项”、“将 EJB 引用映射到 Bean”或“EJB 引用”控制台页面上选择允许 EJB 引用目标自动解析
资源引用
资源引用是用于查找应用程序的外部资源的逻辑名。资源引用是在部署期间指定的。在运行时,这些引用与资源在目标运营环境中的物理位置(全局 JNDI 名称)绑定。已按如下所示提供不对 JNDI 名称使用 URL 的资源引用:
表 1. 资源引用子上下文. JNDI java:comp/env 名称用于资源引用子上下文。
资源引用类型 次上下文声明位置
Java 数据库连接 (JDBC) 数据源 java:comp/env/jdbc
JMS 连接工厂 java:comp/env/jms
JavaMail 连接工厂 java:comp/env/mail
统一资源定位符 (URL) 连接工厂 java:comp/env/url

或者,应用程序可以将名称指定给具有 java:modulejava:appjava:global 等前缀的 java: URL 的资源引用。这些 URL 会映射至组件名称空间(它包含 java:comp/env 名称绑定)以外的名称空间。会根据 URL 将具有 URL 名称的资源引用绑定到对应的名称空间。

对于每个资源引用,您必须指定 JNDI 名称。如果部署者在安装应用程序时选择生成缺省绑定,那么安装向导将在假定 java:comp/env 名称与资源全局 JNDI 名称相同的情况下生成从 <res-ref-name> 标记派生的资源引用绑定。

在应用程序安装期间,您可以在“将资源引用映射到引用”页面上指定资源引用 JNDI 名称。指定资源的 JNDI 名称,这些名称表示资源引用中定义的逻辑名。您可以选择指定资源的登录配置名和认证属性。指定认证属性后,请单击确定,保存值并返回到映射步骤。应用程序中定义的每个资源引用都必须与 WebSphere Application Server 配置中定义的一个资源绑定。完成安装后,请在管理控制台中单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > application_name > 资源引用以访问“资源引用”页面。

Web 模块的虚拟主机绑定
您必须将每个 Web 模块绑定到特定虚拟主机。绑定对 Web 服务器插件意味着,必须让 Web 应用程序处理与虚拟主机匹配的所有请求。绑定到 Store Web 应用程序的虚拟主机示例可以是 store_host。绑定定义存储在 IBM 绑定文件(如 WEB-INF/ibm-web-bnd.xmi)中。

在安装应用程序时,如果部署者选择生成缺省绑定,那么对于每个 .war 文件,安装向导会将虚拟主机设置为 default_host

在应用程序安装期间以及安装完成后,可以将虚拟主机映射到应用程序中定义的 Web 模块。在映射 Web 模块的虚拟主机页面上,指定虚拟主机。在用来访问 Web 模块工件(例如 Servlet 和 JavaServer Pages (JSP) 文件)的 URL 中,将使用该虚拟主机定义中指定的端口号。例如,Web 工件(如 JSP 文件)的外部 URL 是 http://host_name:virtual_host_port/context_root/jsp_path。完成安装后,请在管理控制台中单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > application_name > 虚拟主机

消息驱动的 Bean
对于每个消息驱动的 Bean,您必须指定 Bean 将侦听的队列或主题。当消息到达侦听器正在监视的输入队列时,Java 消息服务 (JMS) 侦听器调用消息驱动的 Bean。在组装工具 EJB 部署描述符编辑器的 Bean 页面上的 WebSphere 绑定下面,部署者将指定连接器模块(.rar 文件)中所定义的激活规范的侦听器端口或 JNDI 名称。要由 Store 应用程序使用的侦听器端口的 JNDI 名称示例可以是 StoreMdbListener。绑定定义存储在 IBM 绑定文件(如 ibm-ejb-jar-bnd.xmi)中。
在安装应用程序时,如果部署者选择生成缺省绑定,那么安装向导将 JNDI 名称指定给不完整绑定。
  • 对于作为符合 JCA 1.5 的资源部署的 EJB 2.0 或更高版本的消息驱动的 Bean,安装向导用 eis/MDB_ejb-name 格式指定对应于激活规范实例的 JNDI 名称。
  • 对于针对侦听器端口部署的 EJB 2.0 或更高版本的消息驱动的 Bean,将从追加了字符串 Port 的消息驱动的 Bean <ejb-name> 标记派生出这些侦听器端口。

在使用管理控制台安装应用程序期间,可以在“绑定消息驱动的 Bean 的侦听器”页面上指定每个消息驱动的 Bean 的侦听器端口名或激活规范 JNDI 名称。在使用 JMS 提供程序(V5 缺省消息传递提供程序、WebSphere MQ 消息传递提供程序或通用消息传递提供程序)时,必须提供侦听器端口名。当使用支持入站消息传递的缺省消息传递提供程序或任何一般 J2C 资源适配器来配置应用程序的资源时,必须提供激活规范。如果既未指定侦听器端口名也未指定激活规范 JNDI 名称,那么您在“摘要”页面上单击完成后,将显示验证错误。

安装应用程序完成后,您可以使用通过选择资源 > JMS > JMS 提供程序资源 > 资源适配器打开的控制台页面上指定 JNDI 名称并配置消息驱动的 Bean。

限制: 只能将 EJB 3.0 或更高版本模块中定义的消息驱动的 Bean 绑定至激活规范。
消息目标引用
消息目标引用是用于在 EJB 模块中查找充当消息目标的企业 Bean 的逻辑名。消息目标引用只存在于 J2EE 1.4 和更高版本的工件中,例如:
  • J2EE 1.4 应用程序客户机
  • EJB 2.1 项目
  • 2.4 Web 应用程序

如果多个消息目标引用与单一消息目标链接相关联,那么在部署期间将收集企业 Bean 的单一 JNDI 名称,该 JNDI 名称将映射至消息目标链接,接着再映射至所链接的所有消息目标引用。在运行时,消息目标引用与目标运营环境中的受管消息目标绑定。

如果消息目标引用与消息驱动的 Bean 链接到同一个消息目标,那么此引用与这个 Bean 的目标 JNDI 名称应该相同。当他们同名时,将仅收集消息驱动的 Bean 的目标 JNDI 名称并将其应用于相应的消息目标引用。

如果部署者在安装应用程序时选择生成缺省绑定,那么安装向导将对不完整的消息目标引用指定 JNDI 名称,如下所示:如果消息目标引用包含 <message-destination-link>,那么 JNDI 名称将设置为 ejs/message-destination-linkName。否则,JNDI 名称设置为 eis/message-destination-refName

根据应用程序中的引用以及该程序所使用的工件,您可能需要定义其他引用和工件的绑定。

应用程序资源冲突

在产品 V8 之前,会将应用程序定义的资源(例如引用和环境条目)绑定到相对于 java:comp/env 的组件名称空间中。在 V8.0 和更高版本中,应用程序开发者可以将名称指定给属于具有 java:modulejava:appjava:global 前缀的 java: URL 的资源。这些 URL 中的每一个都解析为不同于组件名称空间的独一无二的名称空间。java:module 名称空间在模块中的所有组件之间共享,java:app 名称空间在应用程序中的所有模块之间共享,java:global 名称空间在单元中的所有应用程序之间共享。因为名称空间是共享的,所以可能会为不同的资源指定相同的名称,从而导致冲突。

仅当模块中的两个组件用相同的名称定义资源时,才会在模块范围中发生冲突。因为此范围的大小很小,所以模块真正发生冲突的可能性较小。但是,如果存在相同资源定义的多个实例,那么必须将他们配置为相同的内容。例如,对特定 EJB 类型的两个 EJB 引用(都指定了相同的 java:module 名称)必须用相同的绑定数据配置。否则,这两个资源会冲突,并且应用程序配置操作会失败。

应用程序作用域的资源与模块作用域的资源相似。唯一的差别是定义可能源自应用程序中的任何模块。与模块范围的资源一样,所有同名的应用程序范围的资源必须是相同类型的资源,并且必须用相同的绑定数据配置。

全局范围的资源不同于应用程序范围的资源和模块范围的资源,不同之处在于不同的应用程序之间可能会发生冲突。冲突发生时,如果资源在逻辑上不相同,那么冲突的应用程序无法共存。如果全局范围的多个资源全部在逻辑上标识相同的资源,那么必须用相同的绑定数据对他们进行配置,以便产品不会将他们检测为冲突。要编辑存在多个应用程序的全局范围的资源,必须在相同的会话中编辑所有进行定义的应用程序,以便不会引入冲突。如果不这样做,就会导致保存会话失败。


指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=crun_app_bindings
文件名:crun_app_bindings.html