java - 即使服务器已启动,如何解决 java net ConnectException 连接被拒绝连接

标签 java sockets httpurlconnection

我正在使用 Httpurlconnection 将请求从 jboss 服务器发送到我的设备。该设备是由cgi 构建的。

当服务器一次从多个线程向设备发送请求时,某些线程收到异常 java.net.ConnectException: 连接被拒绝。但设备在一定延迟后向服务器发送响应。我已将 httpurlconnection 超时设置为 30 秒(3000 毫秒)。

但是只有当多个线程同时发送时才会出现错误。

有谁知道请指导我解决问题。

java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:519)
    at java.net.Socket.connect(Socket.java:469)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
    at sun.net.www.http.HttpClient.New(HttpClient.java:306)
    at sun.net.www.http.HttpClient.New(HttpClient.java:323)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:852)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:793)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:718)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1041)

最佳答案

如果单个线程每次都连接良好,但某些并发运行的线程出现此异常,则这很可能是由于可用连接数量有限。您可以更改设备上可用的并发连接数吗?如果没有,那么您可以尝试限制尝试建立连接的线程数。

编辑:如果您无法修改“设备”应用程序或配置它进行调试,请尝试查看尝试连接到它的线程的确切行为。在客户端(本例中是您的 jboss 服务器)上使用调试器,或记录来自显示连接和释放时间的线程的调试信息,以查看当多个线程尝试同时连接时是否总是发生异常(与其他线程连接或超时之前完成连接的线程相反)。

如果事实证明确实是连接限制导致了问题,您可以尝试创建一个在线程之间共享的单例连接对象。当多个线程尝试连接时,这将严重阻碍 jboss 应用程序。如果这是 Not Acceptable ,您将不得不提出一个新的解决方案(例如,多个设备、编写您自己的应用程序等)。

关于java - 即使服务器已启动,如何解决 java net ConnectException 连接被拒绝连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20242841/

相关文章:

java - 如何在 .jsp 页面中创建 Web 服务客户端?

node.js - 如何以最少的延迟发送 Websocket 消息?

Python - 确定ip是否是代理

javascript - Socket.IO仅发送给一个客户端,而不发送给另一个客户端

java - HttpURLConnection 最大吞吐量

java - 将特定的 cUrl 请求转换为 Java/使用 Java

java - Firebase 值未更新

java - 包含整数值的 2 个 ArrayList 的交集结果

java - HttpUrlConnection:Cookie 显示在 CookieStore 中,但不显示在 POST header 中

java - 为什么我无法设置 Java http User-Agent?