【发布时间】:2016-02-06 10:34:18
【问题描述】:
我将 Spring Data JPA 与 Hibernate 作为持久性提供程序与远程 MySQL5 服务器一起用于定期复制内部数据子集的作业。该作业(即石英调度的 Java 应用程序)每天运行一次,大约需要 . 30 秒完成同步)。出于安全原因,我们不想为来自外部(即 localhost 以外)的直接连接打开远程服务器。
我已经看到使用 Jsch 以编程方式设置 ssh 隧道的示例,但找不到任何有关如何将 Jsch 与 spring 数据集成的资源。我看到的一个问题是我的某些 spring bean(即 org.apache.commons.configuration.DatabaseConfiguration)是在应用程序启动时创建的,并且已经需要访问数据源。
我可以在应用程序之外打开 ssh 隧道,但它会一直打开,但我想避免这种情况,因为我只需要每天打开 30 秒。
编辑:
经过一番研究,我发现了几种获取 ssh 隧道的方法
A) 实现我自己的数据源(我扩展了 org.springframework.jdbc.datasource.DriverManagerDataSource),然后使用 PostContruct 和 Predestroy 来设置/关闭带有 Jsch 的 ssh 隧道
--> 问题:ssh 隧道在应用程序的生命周期内保持打开状态,这不是我想要的
B) 实现我自己的驱动程序(我扩展了 com.mysql.jdbc.Driver)并覆盖“connect”以在连接之前创建 ssh 隧道
--> 问题:我无法关闭 ssh 隧道连接
欢迎提出更多建议
【问题讨论】:
标签: java hibernate ssh spring-data jsch