GlobalNamingResources 组件

目录

简介

GlobalNamingResources 元素定义了 服务器 的全局 JNDI 资源。

这些资源在服务器的全局 JNDI 资源上下文中列出。此上下文与 JNDI 资源操作方法 中描述的每个 Web 应用程序的 JNDI 上下文不同。在此元素中定义的资源不会在每个 Web 应用程序上下文中显示,除非您使用 <ResourceLink> 元素明确地将它们链接起来。

属性

嵌套组件

特殊功能

环境条目

您可以通过在此元素中嵌套 <Environment> 条目来配置将对所有 Web 应用程序显示为环境条目资源的已命名值。例如,您可以创建如下环境条目

<GlobalNamingResources ...>
  ...
  <Environment name="maxExemptions" value="10"
         type="java.lang.Integer" override="false"/>
  ...
</GlobalNamingResources>

这等效于在 Web 应用程序部署描述符(/WEB-INF/web.xml)中包含以下元素

<env-entry>
  <env-entry-name>maxExemptions</env-entry-name>
  <env-entry-value>10</env-entry-value>
  <env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>

不需要修改部署描述符来自定义此值。

<Environment> 元素的有效属性如下

属性 说明
说明

此环境条目的可选且可读的说明。

名称

要创建的环境条目的名称,相对于 java:comp/env 上下文。

覆盖

如果希望 Web 应用程序部署描述符中找到的同环境条目名称的 <env-entry> 覆盖此处指定的值,请将此项设置为 false。默认情况下,允许覆盖。

类型

此环境条目在 Web 应用程序中预期的完全限定 Java 类名称。必须是 Web 应用程序部署描述符中 <env-entry-type> 的合法值。

从 JNDI 上下文请求时将显示给应用程序的参数值。此值必须可转换为 type 属性定义的 Java 类型。

资源定义

您可以通过在此元素中定义资源的特征,然后在 <Context> 元素中使用 <ResourceLink> 元素链接它们,来声明在 Web 应用程序部署描述符中 <resource-ref><resource-env-ref> 元素的 JNDI 查找要返回的资源的特征。您必须还使用 Resource 元素上的属性定义任何其他必需的参数,以配置要使用的对象工厂(如果 Tomcat 尚未知道)以及用于配置该对象工厂的属性。

例如,您可以创建这样的资源定义

<GlobalNamingResources ...>
  ...
  <Resource name="jdbc/EmployeeDB" auth="Container"
            type="javax.sql.DataSource"
     description="Employees Database for HR Applications"/>
  ...
</GlobalNamingResources>

这等效于在 Web 应用程序部署描述符(/WEB-INF/web.xml)中包含以下元素

<resource-ref>
  <description>Employees Database for HR Applications</description>
  <res-ref-name>jdbc/EmployeeDB</res-ref-name>
  <res-ref-type>javax.sql.DataSource</res-ref-type>
  <res-auth>Container</res-auth>
</resource-ref>

不需要修改部署描述符来自定义此值。

<Resource> 元素的有效属性如下

属性 说明
auth

指定 Web 应用程序代码是否以编程方式登录到相应的资源管理器,还是容器将代表应用程序登录到资源管理器。此属性的值必须为 ApplicationContainer。如果 Web 应用程序将在 Web 应用程序部署描述符中使用 <resource-ref> 元素,则此属性是必需的,但如果应用程序使用 <resource-env-ref>,则此属性是可选的。

closeMethod

当不再需要单例资源时,调用其上的零参数方法的名称。这旨在加快资源的清理速度,否则这些资源将作为垃圾回收的一部分进行清理。如果 singleton 属性为 false,则此属性将被忽略。如果未指定,则未定义默认值,并且不会调用任何关闭方法。

对于 Apache Commons DBCP 2 和 Apache Tomcat JDBC 连接池,可以使用 closeMethod="close"。请注意,Apache Commons DBCP 2 要求将其设置为干净关闭。当使用默认的 Tomcat 连接池(基于 DBCP 2)时,Tomcat 会自动设置此属性,除非将其显式设置为一个空字符串。

说明

此资源的可选人类可读描述。

名称

要创建的资源的名称,相对于 java:comp/env 上下文。

范围

指定通过此资源管理器获得的连接是否可以共享。此属性的值必须为 ShareableUnshareable。默认情况下,连接被视为可共享的。

单例

指定此资源定义是否用于单例资源,即资源只有一个实例。如果此属性为 true,则此资源的多个 JNDI 查找将返回同一对象。如果此属性为 false,则此资源的多个 JNDI 查找将返回不同的对象。此属性对于 javax.sql.DataSource 资源必须为 true,以启用 DataSource 的 JMX 注册。此属性的值必须为 truefalse。默认情况下,此属性为 true

类型

Web 应用程序在查找此资源时预期的完全限定 Java 类名称。

使用 <ResourceLink> 元素将全局上下文中的资源链接到每个 Web 应用程序上下文中。以下是在 JNDI 资源操作指南 中的示例定义的基础上,向应用程序提供自定义工厂的示例:

<Context>
  <ResourceLink
    name="bean/MyBeanFactory"
    global="bean/MyBeanFactory"
    type="com.mycompany.MyBean"
  />
</Context>

事务

您可以声明要为 java:comp/UserTransaction 的 JNDI 查找返回的 UserTransaction 的特性。您必须定义一个对象工厂类来实例化此对象以及所需的资源参数作为 Transaction 元素的属性,以及用于配置该对象工厂的属性。

<Transaction> 元素的有效属性如下:

属性 说明
工厂

JNDI 对象工厂的类名称。