Java 我可以为JDBC连接指定*源*IP地址吗?

Java 我可以为JDBC连接指定*源*IP地址吗?,java,postgresql,jdbc,ip-address,Java,Postgresql,Jdbc,Ip Address,我有一个用JDBC驱动程序连接到数据库的Java应用程序。它恰好是一个Postgres实例,但我正在寻找一个通用的解决方案,如果它存在的话 运行应用程序的服务器有多个IP地址,都在同一子网中。JDBC连接是使用服务器的“主”IP建立的 我可以使用辅助IP地址与数据库建立传出连接 是否有一种方法可以通过编程指定用于连接JDBC的源IP地址 上下文:我们希望在不接触数据库的情况下移动应用程序,因为数据库有规则限制它将从中接受连接的IP地址 我所看到的唯一的黑客行为是建立SSL连接,并从自定义端口返

我有一个用JDBC驱动程序连接到数据库的Java应用程序。它恰好是一个Postgres实例,但我正在寻找一个通用的解决方案,如果它存在的话

运行应用程序的服务器有多个IP地址,都在同一子网中。JDBC连接是使用服务器的“主”IP建立的

我可以使用辅助IP地址与数据库建立传出连接

是否有一种方法可以通过编程指定用于连接JDBC的源IP地址


上下文:我们希望在不接触数据库的情况下移动应用程序,因为数据库有规则限制它将从中接受连接的IP地址


我所看到的唯一的黑客行为是建立SSL连接,并从自定义端口返回绑定到辅助IP的新套接字。

一些谷歌搜索表明,这取决于特定的JDBC驱动程序

对于MySQL,它是通过URL上的属性完成的:

jdbc:mysql://localhost:3306/sakila?localSocketAddress=123.33.33.33
(见附件)

对于Postgres,最好的选择似乎是
socketFactory
URL属性-只需创建普通的旧套接字,而不是SSL套接字


(请参阅)

在PostgreSQL JDBC驱动程序上配置localSocketAddress的以下PR添加功能:

有一个
ClientHostname
属性可通过
java.sql.Connection.setClientInfo()
设置,这在某些情况下不起作用吗?值得一看@Aaron,但我担心这是为了帮助数据库完成它的任务,没有帮我找到它。我需要玩防火墙的把戏,而不是数据库。是的,这肯定只是JDBC元数据,我高度怀疑它会改变网络级别的事情。我认为这确实是主机路由问题。主机应该使用可用的最佳接口来创建套接字。确实如此,但在本例中,我需要次优接口;)我正在使用Postgres,但这正是我想要的。Postgres允许以相同的方式指定SocketFactory。所以我想有一种方法,但它将是特定于数据库的。。。