可能是什么这个java.net.ConnectException的根本原因,以及如何解决它?

问题描述 投票:0回答:2

上下文

我试图打开一个Java企业应用程序(部署在Wildfly 8.2应用程序服务器上)的HTTP连接到一个网站。我用一个相当标准的工具来做到这一点 - 在Jsoup库。在大多数情况下,打开连接没有问题,我可以阅读和分析网站内容(深加工)。

但是,如果一旦打开失败(超时) - 再也不会成功,直到应用程序的完整重启。任何试图打开同一个网站的连接将再次失败,同样的异常。至于如果应用程序存储在网站的无法访问状态,并坚持这一假设,而无需再次尝试。 (我相当有信心,认为即使网站是访问,应用程序仍然一次又一次地抛出这个异常)。

例外

Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method) [rt.jar:1.8.0_31]
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) [rt.jar:1.8.0_31]
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) [rt.jar:1.8.0_31]
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source) [rt.jar:1.8.0_31]
    at java.net.PlainSocketImpl.connect(Unknown Source) [rt.jar:1.8.0_31]
    at java.net.SocksSocketImpl.connect(Unknown Source) [rt.jar:1.8.0_31]
    at java.net.Socket.connect(Unknown Source) [rt.jar:1.8.0_31]
    at sun.net.NetworkClient.doConnect(Unknown Source) [rt.jar:1.8.0_31]
    at sun.net.www.http.HttpClient.openServer(Unknown Source) [rt.jar:1.8.0_31]
    at sun.net.www.http.HttpClient.openServer(Unknown Source) [rt.jar:1.8.0_31]
    at sun.net.www.http.HttpClient.<init>(Unknown Source) [rt.jar:1.8.0_31]
    at sun.net.www.http.HttpClient.New(Unknown Source) [rt.jar:1.8.0_31]
    at sun.net.www.http.HttpClient.New(Unknown Source) [rt.jar:1.8.0_31]
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) [rt.jar:1.8.0_31]
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source) [rt.jar:1.8.0_31]
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) [rt.jar:1.8.0_31]
    at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) [rt.jar:1.8.0_31]
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:449) [jsoup-1.8.1.jar:]
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:434) [jsoup-1.8.1.jar:]
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:181) [jsoup-1.8.1.jar:]
    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:170) [jsoup-1.8.1.jar:]

问题

  • 可这是一个Wildfly错误?
  • 可这个问题是应用程序服务器内部解决了吗?例如,调整配置参数,设置一个HTTP连接池(没有这样的东西存在吗?)
  • 它是正确的,在所有打开HTTP连接(即:使用非管理,非事务性资源)在Java企业应用程序?
  • 我还能怎么访问只能通过HTTP的东西吗? (除了打开连接)
  • 可以开发一个JCA适配器解决这个问题?
  • 请问这样的JCA适配器已经存在? (我不能是唯一一个与这个问题...)
java-ee wildfly jca
2个回答
1
投票

你可能击中DNS兑现JDK问题不和无关与wildfly本身。

尝试设置networkaddress.cache.ttl或networkaddress.cache.negative.ttl系统属性来控制DNS缓存的行为。

有关的更多细节。这看qazxsw POI


0
投票

事实证明,即(在这种特定情况下)该网络配置错误。不仅JVM,其他几个项目经验的网络问题。

© www.soinside.com 2019 - 2024. All rights reserved.