应用程序绑定

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

Open Liberty 在 及更高版本中,应用程序绑定的文档可在 22.0.0.8 Open Liberty 网站上获取。

应用程序绑定和扩展提供多种方式来定义应用程序资源和控制各种应用程序行为。 应用程序绑定可应用于企业应用程序、Web 应用程序或 EJB 应用程序。

通常情况下,在应用程序归档中 XML 文件内指定这些绑定和扩展。 例如,可以在 ibm-web-bnd.xml 文件中定义 Web 应用程序绑定。 在 Liberty V 17.0.0.1 及更高版本中,可以在 server.xml 文件中指定绑定和扩展作为应用程序配置的一部分。

Liberty 支持在应用程序中定义绑定和扩展的传统方法。 如果在 server.xml 和应用程序中都指定了信息,那么会合并这两个源以创建有效绑定集或扩展集。

server.xml 文件中指定的信息优先于应用程序工件中指定的相同信息。 例如,如果 ibm-web-bnd.xmlserver.xml 文件指定 Web 应用程序的虚拟主机,那么会使用 server.xml 文件中指定的值。 如果要指定的信息可具有多个值,那么会将 server.xml 文件中的值添加到应用程序中的值。 例如,如果 ibm-application-bnd.xml 文件定义两个安全角色而 server.xml 定义一个安全角色,那么会使用全部三个安全角色。 如果 server.xml 文件中定义的安全角色的名称与 ibm-application-bnd.xml 文件中定义的安全角色名称相同,那么 server.xml 文件中的角色会覆盖应用程序中的角色。

对于适用于应用程序中特定模块的绑定和扩展,可能需要在配置中指定 moduleName 属性。 此规范适用于在 ibm-web-ext.xml 文件、ibm-web-bnd.xml 文件、ibm-ejb-jar-bnd.xmlibm-ejb-jar-ext.xml 文件中以传统方式指定的信息。 模块名称属性是不带文件扩展名的模块名称。 例如,对于包含归档 stockDisplay.war 中 Web 模块的文件 stockPrices.ear 中定义的企业应用程序,以下配置将为 Web 模块设置缺省错误页:
<application location="stockPrices.ear">
   <web-ext moduleName="stockDisplay" default-error-page="error.html"/>
</application>
相似地,对于在 stockData.jar 文件中定义的 EJB 应用程序,以下 server.xml 配置将指定数据源绑定:
<application location="stockPrices.ear">
   <ejb-jar-bnd moduleName="stockData">
	<session name="StockBean">				
		<data-source name="jdbc/stockDS" binding-name="stockDataSource"/>
 	</session>  
   </ejb-jar-bnd>
</application>
如果应用程序位于独立 WAR 或 JAR 文件中,并且使用 webApplicationejbApplication 元素在 server.xml 文件中定义,那么不需要模块名称参数。 例如,如果先前示例中 stockDisplay.war 文件和 stockData.jar 文件是独立应用程序而不是 stockPrices.ear 应用程序的模块,那么可能使用了以下配置:
<webApplication location="stockPrices.ear">
   <web-ext default-error-page="error.html"/>
</webApplication>

<ejbApplication location="stockPrices.jar">
   <ejb-jar-bnd>
	<session name="StockBean">				
		<data-source name="jdbc/stockDS" binding-name="stockDataSource"/>
 	</session>  
   </ejb-jar-bnd>
</ejbApplication>

Liberty 运行时未使用绑定和扩展文件中指定的某些元素。 例如,在 Web 应用程序扩展中,将忽略重新装入时间间隔属性的值,因为在 Liberty 中,重新装入行为由 applicationMonitor 配置控制。 在 server.xml 配置中指定这些元素未产生任何错误。 但是,此操作可能会导致您在 WebSphere Developer Tools 中编辑配置时出现“无法识别元素”警告。

在某些情况下,必须将在绑定和扩展文件中指定为子元素的配置指定为 server.xml 文件中的属性。 这会影响子元素只有一个可能属性值的情况,例如,应用程序扩展文件中的 shared-session-context,或 Web 扩展文件中的 context-root。 在每种情况下,扩展文件中的子元素名称将成为 server.xml 中的属性名称,而子元素的单个属性的值将成为 server.xml. 中的属性值。例如, Web 扩展文件中 context-root 的配置可能如下所示:

<web-ext>
   <context-root uri="stockPrices"/>
</web-ext>

server.xml 中的相应配置如下所示:

<web-ext context-root="stockPrices"/>

有关可以在 server.xml 文件中指定的绑定和扩展的完整列表,请参阅 server.xml 文件中的 配置元素

以下示例指定 EJB 应用程序中受管 Bean 的资源引用。
<ejbApplication location="someBean.jar">
    <managed-bean-bnd>
	<managed-bean class="com.ibm.MyBean">
		<resource-ref name="jdbc/myBinding" binding-name="jdbc/TestDataSource" />
	</managed-bean>
    </managed-bean-bnd>
</ejbApplication>
以下配置用于将应用程序的共享会话上下文属性设置为 false:
<application location="myApplication.ear">
	<application-ext shared-session-context="false" />
</application>
以下配置用于为 Web 应用程序设置虚拟主机:
<application location="myApplication.ear">
	<web-bnd moduleName="myWebModule">
		<virtual-host name="default_host" />
	</web-bnd>
</application>