Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 本地关闭错误意味着使用jetty http客户端发送https调用是什么?_Java_Jetty - Fatal编程技术网

Java 本地关闭错误意味着使用jetty http客户端发送https调用是什么?

Java 本地关闭错误意味着使用jetty http客户端发送https调用是什么?,java,jetty,Java,Jetty,在使用jetty http客户端通过ssl进行http调用时,同时使用客户端证书和服务器身份验证,我遇到以下错误 java.io.EOFException: local close at org.eclipse.jetty.client.HttpConnection.close(HttpConnection.java:651) at org.eclipse.jetty.client.HttpConnection.handle(HttpConnection.java:361) at org.ecl

在使用jetty http客户端通过ssl进行http调用时,同时使用客户端证书和服务器身份验证,我遇到以下错误

java.io.EOFException: local close
at org.eclipse.jetty.client.HttpConnection.close(HttpConnection.java:651)
at org.eclipse.jetty.client.HttpConnection.handle(HttpConnection.java:361)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:535)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:529)
at java.lang.Thread.run(Thread.java:680)
针对添加完整错误的评论:

FAILED: testNucleusOnline
java.util.concurrent.ExecutionException: Request failed exchange status:9 HTTP:0
at com.XXX.XXXX.IAbstractOperation.get(IAbstractOperation.java:26)
at com.XXX.XXXX.IAbstractOperation.get(IAbstractOperation.java:14)
at com.XXX.XXXX.XXXX.XXXXX.XXXXX(XXXXXX.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:74)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:673)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:846)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1170)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.runWorkers(TestRunner.java:1147)
at org.testng.TestRunner.privateRun(TestRunner.java:749)
at org.testng.TestRunner.run(TestRunner.java:600)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:317)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:312)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:274)
at org.testng.SuiteRunner.run(SuiteRunner.java:223)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1039)
at org.testng.TestNG.runSuitesLocally(TestNG.java:964)
at org.testng.TestNG.run(TestNG.java:900)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:110)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:205)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:174)
并用一些隐藏的代码:

    IAbstractOperation iAbstract = new IAbstractOperation();
    iAbstract.setURL(availabilityUrl);
    iAbstract.setMethod("GET");


    if (iAbstract.startsWith("https:")) {
        iAbstract.setScheme(HttpSchemes.HTTPS_BUFFER);
    }

    httpClient.send(iAbstract);
    return iAbstract;

基本上,这意味着会话在SSL交换的中间已经被关闭。代码如下:

 public void close() throws IOException
 {
     //if there is a live, unfinished exchange, set its status to be
     //excepted and wake up anyone waiting on waitForDone()

     if (_exchange != null && !_exchange.isDone())
     {
         switch (_exchange.getStatus())
         {
             case HttpExchange.STATUS_CANCELLED:
             case HttpExchange.STATUS_CANCELLING:
             case HttpExchange.STATUS_COMPLETED:
             case HttpExchange.STATUS_EXCEPTED:
             case HttpExchange.STATUS_EXPIRED:
                 break;
             default:
                 _exchange.setStatus(HttpExchange.STATUS_EXCEPTED);
                 _exchange.getEventListener().onException(new EOFException("local close"));
         }
     } 
     _endp.close();
 }

我的解释是,很可能在SSL握手完成之前关闭连接。我在stacktrace上看不到您的代码,因此我有点不清楚这是在哪里发生的(客户端还是服务器端)。

如果您将连接代码放在这里,会有所帮助。