H2支持通过在JDBC Url中添加 AUTO_SERVER=TRUE
参数使用Automatic Mixed Mode访问数据库
在这种模式下
第一个打开数据库的程序将通过文件方式访问数据库
同时作为服务器, 启动一个daemon thread在随机端口号上启用TCP访问
并将IP地址及端口号写入数据库的
.lock.db
文件中后续访问此数据库的程序在发现
.lock.db
文件存在时将读取lock中的地址, 通过TCP方式连接到数据库
当第一个程序退出后, 仍在运行中的程序将决定出一个新的服务器, 供其他程序连接
此设计模式是为了同一主机上的多个程序共享数据库访问而设计的, 当需要通过网络访问时, 使用H2的Server mode仍然是更优的选择
那如果一定要通过网络访问Mixed mode的数据库呢?
- 修改JDBC Url, 带参数
AUTO_SERVER_PORT=端口号
连接数据库 - 读取
.lock.db
, 使用id字段的值作为serverKey
- 使用
jdbc:h2:tcp://<address>:<port>/<serverKey>
通过网络访问数据库
需要注意的是
serverKey
是一个随机密钥, 在每次daemon thread启动时都会更换因此该方法不适用于经常需要远程连接数据库的情景
在偶尔可能需要远程看看数据, 大部分情况下仅由本地程序访问的情况下还是比较合适的
能省掉一个单独跑着的H2 Server, 降低业务服务对外部环境的依赖性
上一篇
下一篇