2012-03-01 52 views
0

我正在使用Tomcat的7連接池。我的配置如下:
server.xmlTomcat:我搞砸了我的jndi連接設置或什麼?

<GlobalNamingResources> 
    <!-- Editable user database that can also be used by 
     UserDatabaseRealm to authenticate users 
    --> 
    <Resource name="jdbc_DS" auth="Container" 
       type="javax.sql.DataSource" 
       factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
       driverClassName="org.h2.Driver" 
       url="jdbc:h2:file:absolutePathtodatabase" 
       username="root" password="" 
       maxActive="20" maxIdle="10" maxWait="-1" 
       /> 
    </GlobalNamingResources> 

而且在context.xml中:

<ResourceLink name="jdbc/myDS" 
     global="jdbc_DS" 
     type="javax.sql.DataSource"/>  

這似乎工作,但我注意到以下幾點:
在資源here:global resources它的屬性並沒有提及factory作爲Resource的屬性。但是我已經在server.xml中定義了它,並沒有發生錯誤。
這是什麼意思?我在這裏沒有使用org.apache.tomcat.jdbc.pool.DataSourceFactory工廠嗎?

回答

0

Tomcat 7 documentation告訴我們,你是配置是否正確使用數據源工廠:

Tomcat的連接池被配置爲The Tomcat JDBC documentation描述,唯一的區別是,你要的資源指定工廠屬性和值設置爲org.apache.tomcat.jdbc.pool.DataSourceFactory

documentation進一步提到:

必須還定義使用Resource元素上的屬性的任何其他所需參數,配置對象工廠以使用(如果Tomcat已知),以及用於配置該對象工廠的屬性。

這是另一個提示,即有效元素列表不完整。

+0

在給出的鏈接中,引用是在'context.xml'中定義的'Resource',但是我在'server.xml'中使用'GlobalNamingResources'.Am我錯誤地使用'server.xml '?我看過很多例子,使用'server.xml'搜索google0001 – Jim 2012-03-01 08:16:43

+0

我看到全局和本地「'''聲明」沒有區別。你用''來使用全局變量,並且期望有相同的屬性。否則,您無法在全球範圍內聲明「完整」資源。 – 2012-03-01 08:26:25

+0

我的關注點如下:'context.xml'中的'resource'作爲嵌套組件被定義爲在doc的鏈接中具有'factory'屬性,但是'resource'作爲'server.xml'中的嵌套組件(嵌套在'globalresources'中)似乎沒有一個。你說這個元素在兩個xml文件('server.xml'和'context.xml')中是相同的嗎? – Jim 2012-03-01 08:30:01

1

但你不使用context.xml一個<Resource>,您使用的是<ResourceLink>,所以無論屬性一<Resource>可能在context.xml是無關緊要的。 <ResourceLink>只具有足夠的屬性來引用<Resource>,該屬性在其他地方完全定義,包括其factory屬性。

+0

我指的是'server.xml'中的''屬性。這似乎沒有'factory'屬性 – Jim 2012-03-01 12:15:00

+0

@Jim'context.xml'中的同一件事物沒有工廠屬性。我會嘗試它。 – EJP 2012-03-03 09:08:50