【问题标题】:How to set zeroDateTimeBehavior on JNDI DataSource without using URL?如何在不使用 URL 的情况下在 JNDI DataSource 上设置 zeroDateTimeBehavior?
【发布时间】:2011-03-12 10:27:26
【问题描述】:

this stackoverflow question 中,海报暗示您可以将zeroDateTimeBehavior="convertToNull" 设置为<Resource> 标记上的属性。

有人知道这是否可行吗?我看过的所有文档都说你只能在数据库连接 url 上添加这个属性。

我实际上是在寻找一种方法来在 Spring 上下文中设置 DataSource 上的此属性,这样我们就不必四处走动并更新我们所有的各种环境,或者在有人需要时冒丢失属性的风险更改连接网址。

一个 Spring 配置的 DataSource 让它变得非常简单:

<bean id="propsDataSource" class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
  <property name="url" value="${connection.url}"/>
  <property name="user" value="${connection.username}"/>
  <property name="password" value="${connection.password}"/>
  <property name="zeroDateTimeBehavior" value="convertToNull"/>
 </bean>

有谁知道如何通过 JNDI 配置的数据源做到这一点?

谢谢,

【问题讨论】:

    标签: tomcat properties datasource jndi


    【解决方案1】:

    如果有人需要这个,因为他们使用

    spring.cloud.gcp.sql.instance-connection-name=someProject:someRegion:someInstance
    

    并且没有可将zeroDateTimeBehavior 拍到的网址,请使用:

    spring.cloud.gcp.sql.instance-connection-name=someProject:someRegion:someInstance&zeroDateTimeBehavior=convertToNull
    

    这是可行的,因为在内部该参数被附加在

    jdbc:mysql://google/somaDatabase?socketFactory=com.google.cloud.sql.mysql.SocketFactory&cloudSqlInstance=
    

    因此期望的结果:

    jdbc:mysql://google/somaDatabase?socketFactory=com.google.cloud.sql.mysql.SocketFactory&cloudSqlInstance=someProject:someRegion:someInstance&zeroDateTimeBehavior=convertToNull
    

    【讨论】:

      【解决方案2】:

      你好,和 JoseK 的回答一样

      但我必须这样说:

      <Resource 
          name="jdbc/TamaJNDI"
          auth="Container" 
          driverClassName="com.mysql.jdbc.Driver" 
          maxActive="15" 
          maxIdle="3" 
          name="jdbc/TamaJNDI" 
          password="*******" 
          type="javax.sql.DataSource" 
          url="jdbc:mysql://localhost:3306/OBRAS_CONTROL?zeroDateTimeBehavior=convertToNull" 
          username="TAMAWEB"/>
      

      在我的 Tomcat context.xml 文件中。

      【讨论】:

        【解决方案3】:

        http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-configuration-properties.html 的文档声明它应该通过 URL 传递。

        如果这对你有用,你可以试试吗?

        <ResourceParams name="jdbc/DataSourceName">
                            <parameter>
                                 <name>zeroDateTimeBehavior</name>
                                 <value>convertToNull</value>
                             </parameter>
        </ResourceParams> 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-12
          • 2017-12-21
          • 2012-04-23
          • 2011-10-09
          • 2023-04-05
          • 2013-03-16
          • 1970-01-01
          • 2019-04-13
          相关资源
          最近更新 更多