有人可以向我指出一些资源,了解附加在这个 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&
failOverReadOnly=false&
maxReconnects=2&
initialTimeout=2&
connectTimeout=2000&
socketTimeout=2000&
useLocalSessionState=true&
paranoid=true&"
/>
</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 表示在故障转移时不将连接设为只读。
maxReconnects=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/