Tomcat:我搞砸了我的jndi连接设置还是什么?

时间:2012-03-01 07:59:34

标签: java java-ee web-applications tomcat jdbc

我正在使用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工厂吗?

2 个答案:

答案 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已知),以及用于配置该对象的属性工厂。

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