【发布时间】:2018-07-25 08:56:53
【问题描述】:
上下文
我正在尝试在 Java Enterprise 应用程序(部署在 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 连接池(是否存在这样的事情?)
- 在 Java Enterprise 应用程序中打开 HTTP 连接(即:使用非托管、非事务性资源)是否正确?
- 我还能如何访问仅通过 HTTP 可用的内容? (除了打开连接)
- 开发 JCA 适配器能否解决此问题?
- 这样的 JCA 适配器是否已经存在? (我不可能是唯一一个遇到这个问题的人......)
【问题讨论】:
-
你能把你写的代码提供给我吗?我认为您在执行期间抛出任何异常后释放线程。不监控代码的确切答案是不可能的。
标签: jakarta-ee wildfly jca