【问题标题】:Tomcat: Have I messed up my jndi connection set up or what?Tomcat:我搞砸了我的 jndi 连接设置还是什么?
【发布时间】:2012-03-01 07:59:34
【问题描述】:

我使用的是 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 工厂吗?

【问题讨论】:

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


    【解决方案1】:

    但是您没有在context.xml 中使用&lt;Resource&gt;,您使用的是&lt;ResourceLink&gt;,因此&lt;Resource&gt;context.xml 中可能具有的任何属性都无关紧要。 &lt;ResourceLink&gt; 有足够的属性来引用 &lt;Resource&gt;,它在其他地方完全定义,包括它的 factory 属性。

    【讨论】:

    • 我指的是server.xml中的&lt;Resource&gt;属性。这似乎没有factory属性
    • @Jim context.xml 中的相同内容确实具有工厂属性。我会试试看。
    【解决方案2】:

    Tomcat 7 documentation 告诉我们,您的配置对于使用数据源工厂是正确的:

    Tomcat 连接池配置为The Tomcat JDBC documentation 中描述的资源,唯一的区别是您必须指定工厂属性并将值设置为org.apache.tomcat.jdbc.pool.DataSourceFactory

    documentation 进一步提到:

    必须还使用 Resource 元素上的属性定义任何其他需要的参数,以配置要使用的对象工厂(如果 Tomcat 还不知道),以及用于配置该对象的属性工厂。

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

    【讨论】:

    • 在您给出的链接中,引用的是context.xml 中定义的Resource。但我在server.xml 中使用GlobalNamingResources。我使用server.xml 是不是错了?很多例子我在谷歌上看到使用server.xml
    • 我认为全局和本地“&lt;Resource&gt; 声明”之间没有区别。您将全局属性与&lt;ResourceLink&gt; 一起使用,并且期望具有完全相同的属性。否则,您无法在全局范围内声明“完整”资源。
    • 我关心的是:context.xml中的resource作为嵌套组件在doc的链接中定义为具有factory属性。但是resource作为嵌套组件在server.xml(嵌套在globalresources中)好像没有。你是说这个元素在两个xml文件(server.xmlcontext.xml)中都是一样的吗?
    猜你喜欢
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多