本地服务器上的SocketException

如何解决本地服务器上的SocketException

我的本​​地设置有问题。该项目使用Java编写的GUI,该GUI通过Http隧道连接到后端部分。该服务器是Wildfly 19,并且可以正常启动。 每种设置似乎都是正确的,每个必要的文件都在其位置,但是在调用Http隧道类时出现“套接字已关闭”异常。该代码不会错误关闭套接字,并且对其他所有人都有效,因此在我的本地计算机上一定有错误的配置。

这是来自GUI的日志:

javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.172 CEST|Logger.java:765|WRITE: TLS12 handshake,length = 250
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.301 CEST|Logger.java:765|READ: TLSv1.2 handshake,length = 4644
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.302 CEST|Logger.java:765|READ: TLSv1.2 handshake,length = 4644
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.324 CEST|Logger.java:765|WRITE: TLS12 handshake,length = 70
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.340 CEST|Logger.java:765|WRITE: TLS12 handshake,length = 24
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.393 CEST|Logger.java:765|READ: TLSv1.2 change_cipher_spec,length = 1
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.393 CEST|Logger.java:765|READ: TLSv1.2 change_cipher_spec,length = 1
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.394 CEST|Logger.java:765|READ: TLSv1.2 handshake,length = 40
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.395 CEST|Logger.java:765|READ: TLSv1.2 handshake,length = 40
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.415 CEST|Logger.java:765|WRITE: TLS12 application_data,length = 231
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.492 CEST|Logger.java:765|READ: TLSv1.2 application_data,length = 159
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.493 CEST|Logger.java:765|READ: TLSv1.2 application_data,length = 159
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.500 CEST|Logger.java:765|READ: TLSv1.2 application_data,length = 29
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.500 CEST|Logger.java:765|READ: TLSv1.2 application_data,length = 29
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.503 CEST|Logger.java:765|duplex close of SSLSocket
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.505 CEST|Logger.java:765|WRITE: TLS12 alert(close_notify),length = 10
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.506 CEST|Logger.java:765|close the underlying socket
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.506 CEST|Logger.java:765|close the SSL connection (initiative)
javax.net.ssl|FINE|01|main|2020-10-13 13:50:20.507 CEST|Logger.java:765|close inbound of SSLSocket
javax.net.ssl|WARNING|01|main|2020-10-13 13:50:20.509 CEST|Logger.java:765|SSLSocket duplex close Failed (
"throwable" : {
  java.net.socketException: Socket is closed
    at java.net.socket.shutdownInput(Socket.java:1539)
    at sun.security.ssl.BaseSSLSocketImpl.shutdownInput(BaseSSLSocketImpl.java:216)
    at sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:661)
    at sun.security.ssl.SSLSocketImpl.bruteForceCloseInput(SSLSocketImpl.java:609)
    at sun.security.ssl.SSLSocketImpl.duplexCloSEOutput(SSLSocketImpl.java:569)
    at sun.security.ssl.SSLSocketImpl.close(SSLSocketImpl.java:482)
    at sun.net.www.http.HttpClient.closeServer(HttpClient.java:1057)
    at sun.net.www.protocol.https.HttpsClient.closeIdleConnection(HttpsClient.java:669)
    at sun.net.www.protocol.http.HttpURLConnection.disconnect(HttpURLConnection.java:2951)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.disconnect(HttpsURLConnectionImpl.java:279)
    at com.mycompany.myteam.remoting.RemotingClientHTTPS.callUserAuthSupportServlet(RemotingClientHTTPS.java:368)
    at com.mycompany.myteam.remoting.RemotingClientHTTPS.connect(RemotingClientHTTPS.java:188)
    at com.mycompany.myteam.ui.platform.dialogs.LoginDialog.okpressed(LoginDialog.java:146)
    at org.eclipse.jface.dialogs.Dialog.buttonpressed(Dialog.java:466)
    at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:619)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.display.sendEvent(display.java:4362)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113)
    at org.eclipse.swt.widgets.display.runDeferredEvents(display.java:4180)
    at org.eclipse.swt.widgets.display.readAnddispatch(display.java:3769)
    at org.eclipse.jface.window.Window.runEventLoop(Window.java:827)
    at org.eclipse.jface.window.Window.open(Window.java:803)

这在我启动GUI时显示在开头。但是,它连接到数据库并成功执行查询。写操作给我各种错误,可能都是由于套接字被关闭导致的。

我不知道什么原因关闭了插座,为什么。它肯定不在代码中,因为它适用于其他人。

尝试用Wireshark分析它是否值得?还有其他想法吗?

谢谢。

编辑: 这是代码的相关部分,但这不是由代码引起的:

@Override
    public synchronized void connect(final String user,final String pwd) throws LoginFailedException {
        if (holder != null) {
            log.error("Client is already initialised");
        } else {
            try {
                namingHelper = new NamingHelper(properties);

                log.debug("Initialise remote client for user " + user);

                // register Authenticator for this session
                UserAuthenticator userAuthenticator = new UserAuthenticator (pwd);
                Authenticator.setDefaultuserAuthenticator 

                StubHolder stubs = new StubHolder();

                fillHolder(stubs);

                String[] authAttrs = callUserAuthSupportServlet(user,false).split("\n");
                log.debug("Authentication attributes: " + Arrays.toString(authAttrs));

                RemotingClient.setAuthenticationAttribute(authAttrs[0]);

                if ( authAttrs.length > 1 && authAttrs[1].equals("(mail={0})") && authAttrs[2].equals("mail")){
                    userAuthenticator.setCheckMaxLogins(true);
                    checkUserValidityByEmail(stubs,user);
                }
                else{
                    userAuthenticator.setCheckMaxLogins(false);
                    checkUserValidity(stubs,RemotingClient.getAuthenticationAttribute());
                }

                holder = stubs;

                log.debug("Completed,clientInfo: " + stubs.clientInfo);
            } catch (LoginFailedException e) {
                throw e;
            } catch (Exception e) {
                if ( (e.getCause() != null && e.getCause() instanceof BogusCredentialMarkerException) || e instanceof BogusCredentialMarkerException ){
                    throw new LoginFailedException();
                }
                throw new TechnicalException(e.getMessage(),e);
            }
        }
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?