我有一个Azure Java Web应用程序,想通过JDBC将其连接到某些VNET中的Oracle数据库。该webapp通过VPN指向站点连接到VNET。 创建连接失败。 因此,我查看了日志并发现:
Caused by: java.net.SocketException: Permission denied: connect at sun.nio.ch.Net.connect0(Native Method) ~[?:1.8.0_144] at sun.nio.ch.Net.connect(Net.java:454) ~[?:1.8.0_144] at sun.nio.ch.Net.connect(Net.java:446) ~[?:1.8.0_144] at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:648) ~[?:1.8.0_144] at java.nio.channels.SocketChannel.open(SocketChannel.java:189) ~[?:1.8.0_144] at oracle.net.nt.TimeoutSocketChannel.<init>(TimeoutSocketChannel.java:81) ~[ojdbc8.jar:12.2.0.1.0] at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:169) ~[ojdbc8.jar:12.2.0.1.0]
因此,似乎有一个正在运行的Security Manager阻止了网络访问。
我正在使用Oracle瘦JDBC驱动程序,因此不涉及本机Lib。 该webapp是64位Windows。 Java是版本8。我正在使用最新的Tomcat 8.0版本。
如何配置或关闭它?是否可以在WAR文件中进行配置? 我认为不可能编辑catalina.policy文件,这是Azure Webapp。
这似乎取决于IP地址,如果IP地址在公共互联网中,则建立连接。 但是,使用VNET中数据库的10. 。。*非公共IP会引发java.net.SocketException。 可以将某些网络错误(例如“无法路由到主机”或“连接被拒绝”)转换为此SocketException吗?
答案 0 :(得分:1)
所以我自己解决了。
在“指向站点”配置中,选中了“ IKEv2 VPN”复选框。 必须取消选中。也许这被记录在某处。
我如何到达那里: 我发现了有关Internet上“同步” Azure VPN网关的信息。
似乎必须同步VPN网关。 在Web应用程序的“虚拟网络集成”选项卡上,这是不可能的。 但是也可以在webapp的“服务计划”上配置网络。 还有一个“网络”部分,然后还有另一个“ VNET集成”部分。 选择您的VNET,然后获得另一个“虚拟网络集成”选项卡。
但是这次还有一个“同步网络”按钮。按下。当。。。的时候 检查了“ IKEv2 VPN”选项,出现错误,指出配置错误。