我正在使用Tomcat的7连接池。我的配置如下:
在server.xml
:
<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 :(得分:1)
但是你没有在<Resource>
中使用context.xml
,而是使用了<ResourceLink>
,因此<Resource>
中context.xml
可能包含的任何属性都是无关。 <ResourceLink>
只有足够的属性来引用<Resource>
,factory
已在其他位置完全定义,包括其{{1}}属性。
答案 1 :(得分:0)
Tomcat 7 documentation告诉我们,您使用数据源工厂的配置是正确的:
Tomcat连接池配置为The Tomcat JDBC documentation中描述的资源,唯一的区别是您必须指定工厂属性并将值设置为
org.apache.tomcat.jdbc.pool.DataSourceFactory
documentation进一步提及:
您必须还使用Resource元素上的属性定义任何其他所需参数,配置要使用的对象工厂(如果Tomcat已知),以及用于配置该对象的属性工厂。
这是另一个提示,即有效元素列表不完整。