Java ojdbc能否通过SOCKS代理连接到Oracle数据库?

Java ojdbc能否通过SOCKS代理连接到Oracle数据库?,java,oracle,jdbc,ojdbc,Java,Oracle,Jdbc,Ojdbc,我正试图通过SOCKS代理使用ojdbc驱动程序连接到oracle数据库。我在网上找不到一个明确的答案,关于这是否有效 似乎暗示18.1版本应该添加SOCKS代理支持,但是,使用ojdbc8-18.3,驱动程序似乎不遵守代理设置,最新文档也没有提及 这里有一个类似的代码,我试着编辑数据库细节 System.setPropertysocksProxyHost,myProxy; System.setPropertysocksProxyPort,1080; Class.forNameoracle.jd

我正试图通过SOCKS代理使用ojdbc驱动程序连接到oracle数据库。我在网上找不到一个明确的答案,关于这是否有效

似乎暗示18.1版本应该添加SOCKS代理支持,但是,使用ojdbc8-18.3,驱动程序似乎不遵守代理设置,最新文档也没有提及

这里有一个类似的代码,我试着编辑数据库细节

System.setPropertysocksProxyHost,myProxy; System.setPropertysocksProxyPort,1080; Class.forNameoracle.jdbc.driver.OracleDriver; 尝试 Connection con=DriverManager.getConnection jdbc:oracle:thin:@myServer:1521/myid,myUser,myPwd ; { 语句stmt=con.createStatement; ResultSet rs=stmt.executeQuery从my_表中选择*; 惠勒,下一个 System.out.printlnrs.getString1++rs.getString2++rs.getInt3; ​ } 捕获异常e { System.out.printlne; } 在本例中,连接成功,但当我使用Wireshark检查传出流量时,我可以看到连接是直接建立的。我可以通过将代理设置更改为

System.setPropertysocksproxyHost,不应解析; System.setPropertysocksproxyPort,1080; …并观察连接是否仍在进行,数据是否已返回

使用Microsoft SQL Server驱动程序执行相同操作时,我看到以下错误:

SQLServerException:到主机端口1433的TCP/IP连接失败。错误:无法连接到SOCKS代理:shouldnotresolve

这显然是特定于SQL Server的,但我希望看到类似于Oracle的情况

似乎暗示18.1版本应该添加SOCKS代理支持

我不明白你是怎么知道的,因为上面说:

不,Oracle JDBC驱动程序不支持SOCKS5代理。在即将发布的18.1版瘦驱动程序中,将支持HTTPS代理和websocket

最新的文档没有提到它

当然是的,请参阅。 具体地说是第节

似乎暗示18.1版本应该添加SOCKS代理支持

我不明白你是怎么知道的,因为上面说:

不,Oracle JDBC驱动程序不支持SOCKS5代理。在即将发布的18.1版瘦驱动程序中,将支持HTTPS代理和websocket

最新的文档没有提到它

当然是的,请参阅。
特别是第节。

要在oracle JDBC驱动程序中启用socks代理支持,需要将-Doracle.JDBC.javaNetNio=false传递给JVM,或在代码中相应地设置属性。

要在oracle JDBC驱动程序中启用socks代理支持,您需要将-Doracle.jdbc.javaNetNio=false传递给JVM,或者在代码中相应地设置属性。

这是正确的解决方案。我们有自己的SOCKS代理,通过它我们将所有流量从客户端路由到服务器。对于OracleJDBC18,这不再起作用,因为他们切换到nio库。使用这个-D选项将切换回旧的实现。这是正确的解决方案。我们有自己的SOCKS代理,通过它我们将所有流量从客户端路由到服务器。对于OracleJDBC18,这不再起作用,因为他们切换到nio库。使用这个-D选项将切换回旧的实现。