如何在不使用URL的情况下在JNDI DataSource上设置zeroDateTimeBehavior?

时间:2010-07-06 17:05:15

标签: tomcat properties datasource jndi

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配置的DataSource做到这一点?

谢谢,

3 个答案:

答案 0 :(得分:1)

你好,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文件中。

答案 1 :(得分:1)

万一有人需要这个,因为他们使用

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

并且没有可以将 zeroDateTimeBehavior 贴在上面的 URL,请使用:

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 :(得分:0)

http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-configuration-properties.html处的文档声明应该在网址上传递。

你能试试这个吗?

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