javax.xml.ws.WebServiceException: java.net.SocketException: неожиданный конец файла с сервера - PullRequest
1 голос
/ 28 июня 2011

Мы разрабатываем приложение для академического курса по архитектуре программного обеспечения, и мы должны использовать Java EE для его реализации.

По сути, мы должны реализовать распределенную игру Hearts (вы знаете игру для Windows? Я так думаю).

Мы хотим использовать SOAP, чтобы клиент мог взаимодействовать с сервером (в нашем случае - Glassfish), но чтобы избежать опроса, нам нужно реализовать конечную точку веб-службы как @ WebServiceProvider.

Такой тип endopoit может реализовывать интерфейс asyncProvider, который позволяет нам отменить запрос мыла и ответ мыла.Но здесь у нас есть две большие проблемы:

  • Первая: Glassfish (без каких-либо дополнительных настроек) может использовать набор из 5 потоков в http-thread-pool.После первых пяти запросов мы имеем «заблокированный» сервлет endopoint.Это правильный режим для работы asyncProvider?После завершения вызова мы ожидали, что поток сервлета был освобожден для обработки еще одного входящего запроса, но, очевидно, он не работает таким образом.Это не настоящий "асинхронный" менеджмент запроса.Мы не правы?

  • Второе: мы уверены, что проблема, которую мы вводим, строго коррелирует с первой.Делая десять запросов с размером пула потоков 5, мы имеем такой сценарий: первые пять запросов хорошо обрабатываются, и через 20 секунд они корректно отправляются клиенту.С шестого до последнего у нас есть какая-то ошибка: на стороне сервера все в порядке, но на стороне клиента, и только иногда у нас есть такие исключения:

java.util.concurrent.ExecutionException: javax.xml.ws.WebServiceException: java.net.SocketException: неожиданный конец файла с сервера

at com.sun.xml.ws.util.CompletedFuture.get(CompletedFuture.java:72)

at client.Client$1.handleResponse(Client.java:79)

at com.sun.xml.ws.client.AsyncResponseImpl.set(AsyncResponseImpl.java:125)

at com.sun.xml.ws.client.sei.AsyncMethodHandler$SEIAsyncInvoker$1.onCompletion(AsyncMethodHandler.java:202)

at com.sun.xml.ws.client.Stub$1.onCompletion(Stub.java:397)

at com.sun.xml.ws.api.pipe.Fiber.completionCheck(Fiber.java:503)

at com.sun.xml.ws.api.pipe.Fiber.run(Fiber.java:423)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:662)

Причина: javax.xml.ws.WebServiceException: java.net.SocketException: Неожиданный конец файла с сервера

at com.sun.xml.ws.transport.http.client.HttpClientTransport.readResponseCodeAndMessage(HttpClientTransport.java:214)

at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:162)

at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:93)

at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:105)

at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:629)

at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:588)

at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:573)

at com.sun.xml.ws.api.pipe.Fiber.run(Fiber.java:422)

... 3 more

Причина: java.net.SocketException: Неожиданный конец файла с сервера

at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:769)

at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632)

at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:766)

at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632)

at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1195)

at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)

at com.sun.xml.ws.transport.http.client.HttpClientTransport.readResponseCodeAndMessage(HttpClientTransport.java:210)

... 10 more

Мы хотим подчеркнуть, что содержимое мылаОтвет проверен и правильно сформирован после проверки его без каких-либо исключений на стороне сервера.

Если мы отправим номер запроса меньше размера пула http-thread, у нас не возникнет проблем.

Любое предложение для нас?

...