java - Tomcat 上下文中的 MySQL JDBC 连接 URL 参数

标签 java mysql jdbc connection-string

有人可以向我指出一些资源,了解附加在这个 JDBC URL 之后的参数列表的实际含义吗?

谢谢!

<Context>
<Resource 
name="jdbc/DB" auth="Container" type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
username="user" password="password" 
maxActive="20" 
maxIdle="5" 
url="jdbc:mysql://192.168.0.10:3306,192.168.0.11:3306/testDB?
    autoReconnect=true&amp
    failOverReadOnly=false&amp
    maxReconnects=2&amp
    initialTimeout=2&amp
    connectTimeout=2000&amp 
    socketTimeout=2000&amp
    useLocalSessionState=true&amp
    paranoid=true&amp"
/>
</Context>

最佳答案

连接/认证

connectTimeout=2000表示最多等待2秒建立连接。默认不超时。

socketTimeout=2000表示网络套接字操作最多等待2秒。

性能扩展

useLocalSessionState=true 告诉驱动程序引用由 Connection.setAutoCommit() 和 Connection.setTransactionIsolation() 设置的自动提交和事务隔离的内部值以及协议(protocol)维护的事务状态,而不是查询数据库或盲目地向数据库发送命令以进行 commit() 或 rollback() 方法调用。

偏执=true 采取措施防止在错误消息中暴露敏感信息,并尽可能清除保存敏感数据的数据结构。

高可用性和集群。

autoReconnect=true 告诉驱动程序尝试重新建立陈旧和/或死连接。驱动程序将对属于当前事务的过时或死连接发出的任何查询抛出异常,但将在新事务中对该连接发出下一个查询之前尝试重新连接。 不推荐启用此功能,因为当应用程序未正确处理 SQLExceptions 时,它会产生与 session 状态和数据一致性相关的副作用,并且仅在您无法配置应用程序时使用正确处理死连接和陈旧连接导致的 SQLExceptions。或者,作为最后一个选项,研究将 MySQL 服务器变量“wait_timeout”设置为较高的值,而不是默认的 8 小时。

以下内容仅在自动重新连接模式打开时适用。

failOverReadOnly=false 表示在故障转移时不将连接设为只读。

ma​​xReconnects=2 尝试重新连接的最大次数,默认为“3”。

initialTimeout=2 重新连接尝试之间等待的初始时间。默认 2

参见 http://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html

关于java - Tomcat 上下文中的 MySQL JDBC 连接 URL 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7755306/

相关文章:

mysql - 如何将我的 MEAN 应用程序转换为使用 mySQL

mysql - ConstraintViolationException 未显示约束名称 MySQL

java - java.sql.SQLException :[Microsoft][ODBC Driver Manager] Invalid descriptor index 异常

java - 在 Linux 机器上指定包位置的最佳方法

Java SE框架和架构?

java - 如何收听 JTextArea

java - 在oracle数据库中持久化的同时处理并发请求?

java - 正则表达式 - 匹配不包含字符串的模式

php - 如何在MySql数据库中存储大量记录?

java - Web 应用程序中嵌入式 Derby 的 JDBC 连接 URL