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 查詢回傳的資源特性。您必須使用資源元素上的屬性定義任何其他需要的參數,以設定要使用的物件工廠(如果 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 物件工廠的類別名稱。