![[17.0.0.1 and later]](../ng_v17001plus.gif)
应用程序绑定
在应用程序服务器上所安装的应用程序可以启动之前,应用程序中定义的所有企业 Bean (EJB) 引用和资源引用必须与应用程序服务器中定义的实际工件(企业 Bean 或资源)绑定。
应用程序绑定和扩展提供多种方式来定义应用程序资源和控制各种应用程序行为。应用程序绑定可应用于企业应用程序、Web 应用程序或 EJB 应用程序。
通常情况下,在应用程序归档中 XML 文件内指定这些绑定和扩展。例如,可以在 ibm-web-bnd.xml 文件中定义 Web 应用程序绑定。在 Liberty V17.0.0.1 和更高版本中,可以在 server.xml 文件的应用程序配置中指定绑定和扩展。
Liberty 支持使用传统方法将绑定和扩展定义为应用程序的一部分。如果在 server.xml 和应用程序中都指定了信息,那么会合并这两个源以创建有效绑定集或扩展集。
server.xml 文件中指定的信息优先于应用程序工件中指定的相同信息。例如,如果 ibm-web-bnd.xml 和 server.xml 文件指定 Web 应用程序的虚拟主机,那么会使用 server.xml 文件中指定的值。如果要指定的信息可具有多个值,那么会将 server.xml 文件中的值添加到应用程序中的值。例如,如果 ibm-application-bnd.xml 文件定义两个安全角色而 server.xml 定义一个安全角色,那么会使用全部三个安全角色。如果 server.xml 文件中定义的安全角色的名称与 ibm-application-bnd.xml 文件中定义的安全角色名称相同,那么 server.xml 文件中的角色会覆盖应用程序中的角色。
<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> </application>
<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></ejbApplication>
在绑定和扩展文件中指定的一些元素不由 Liberty 运行时使用。例如,在 Web 应用程序扩展中,由于 Liberty 重新装入行为由 applicationMonitor 配置控制,因此会忽略重新装入时间间隔属性的值。在 server.xml 配置中指定这些元素未产生任何错误。由于缺少错误,因此可以将应用程序绑定和扩展文件的内容复制到 server.xml 文件中。但是,在 WebSphere Developer Tools 中编辑配置时,此复制操作可能会导致未识别元素警告。
有关可在 server.xml 文件中指定的绑定和扩展的完整列表,请参阅 server.xml 文件中的配置元素。
<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>
<application location="myApplication.ear">
<application-ext shared-session-context="false" />
</application>
<application location="myApplication.ear">
<web-bnd moduleName="myWebModule">
<virtual-host name="default_host" />
</web-bnd>
</application>