Тайм-аут Java-сервиса GlassFish - PullRequest
       21

Тайм-аут Java-сервиса GlassFish

0 голосов
/ 18 февраля 2019

Я устанавливаю новый сервер GlassFish 4.1.1 с одним развернутым веб-сервисом Java.У веб-службы есть один веб-метод, который получает JSON в качестве входного параметра и в результате также возвращает JSON.Для сериализации / десериализации объектов Java в / из JSON я использую библиотеку Gson.Веб-метод вызывает другой веб-сервис, и один запуск выполняется приблизительно через 2-3 минуты.Я вызываю этот веб-сервис, например, 6-10 раз в цикле, поэтому веб-метод ждет примерно 16-30 минут, чтобы вернуть значение.Проблема заключается в тайм-ауте, но я не знаю, где и как установить его для моей проблемы.

Я пытаюсь вызвать этот веб-сервис Java из проекта Visual Studio C #, где я добавил веб-ссылку, где яопределил URL веб-ссылки веб-службы.Я также установил время, в течение которого клиент веб-службы XML должен ждать ответа на синхронный запрос веб-службы XML.Я установил его на 10 часов, как показано ниже.

static string CallEARSjDE(string json)
{
    EARSWebReference.EARSWebService EARSWS = new EARSWebReference.EARSWebService();
    EARSWS.Timeout = 36000000;    // 10 hours

    return EARSWS.EARSjDE(json);
}

Я также установил таймаут для запроса веб-службы, который я делаю в веб-методе Java.Я установил его на 1 час.

Gson gson = new Gson();
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(1 * 3600000).build();   // timeout set to 1 hour
HttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();
HttpPost post = new HttpPost(this.ServiceURL);
StringEntity postingString = new StringEntity(gson.toJson(problemLCSRequest));
post.setEntity(postingString);
post.setHeader("Content-type", "application/json");
HttpResponse response = httpClient.execute(post);
HttpEntity entity = response.getEntity();
String responseString = EntityUtils.toString(entity, "UTF-8");

ProblemLCSResponse responseJson = gson.fromJson(responseString, ProblemLCSResponse.class);

Помимо этих двух тайм-аутов, я также установил тайм-аут в консоли администратора GlassFish.Я сделал это в разделе «Конфигурации» → «Настройка сервера» → «Контейнер веб», где я установил тайм-аут сеанса на 36 000 секунд (10 часов).

Например, когда я вызываю веб-сервис внутри веб-метода 6 раз, я получаюжелаемый ответ.Но когда я звоню в веб-сервис более 6 раз, он вызывает исключение, показанное ниже.Я думаю, что причина этого исключения заключается в тайм-ауте, но я не знаю, какая из них вызывает и где я могу его изменить.

Предупреждение: StandardWrapperValve [EARSWebService]: Servlet.service ()для сервлета EARSWebService сгенерировал исключение java.nio.channels.ClosedByInterruptException в java.nio.channels.spi.AbstractInterruptibleChannel.end (AbstractInterruptibleChannel.java:202) в sun.nio.ch.ScketcketChannelImpl.wj: atj..glassfish.grizzly.nio.transport.TCPNIOUtils.flushByteBuffer (TCPNIOUtils.java:149) при org.glassfish.grizzly.nio.transport.TCPNIOUtils.writeCompositeBuffer (TCPNIOUtils.java:87) при org.glassfish.grizzly.nio.transport.TCPNIOAsyncQueueWriter.write0 (TCPNIOAsyncQueueWriter.java:129) в org.glassfish.grizzly.nio.transport.TCPNIOAsyncQueueWriter.write0 (TCPNIOAsyncQueueWriter.java:10ritW.WeW.WeW.WeW.WeW.WeW.WNW.WNW.WNW.WNW.WiW.Wy.Wy.Wy.Wy.W.W.W.W.W.W.W.W.) на org.glassfish.grizzly.nio.AbstractNIOAsyncQueueWriter.напишите (AbstractNIOAsyncQueueWriter.java:169) по адресу org.glassfish.grizzly.nio.AbstractNIOAsyncQueueWriter.write (AbstractNIOAsyncQueueWriter.java:71) по адресу org.glassfish.grizzly.nio.transport.TCPNIg_transport.TCPNIWF.glassfish.grizzly.filterchain.DefaultFilterChain.java:283) по адресу org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart (DefaultFilterChain.java:200) по адресу org.glassfish.grizzly.filterchain.DefaultFilterChain.execute (DefaultFilj.g.g.g.g.gl.gl.gif.gl) at.gifg.gl.gif.gl.gif.gif.gl.dll).filterchain.org.glassfish.grizzly.filterchain.flushBinaryBuffers (OutputBuffer.java:1016)в org.glassfish.grizzly.http.io.OutputBuffer.flushAllBuffers (OutputBuffer.java:987) в org.glassfish.grizzly.http.io.OutputBuffer.flush (OutputBuffer.java:738) в org.apcon.catalina.OutputBuffer.doFlush (OutputBuffer.java:291) в org.apache.catalina.connector.OutputBuffer.flush (OutputBuffer.java:275) в org.apache.catalina.connector.CoyoteOutputStream.flush (CoyoteOutput)java.io.FilterOutputStream.flush (FilterOutputStream.java:140) на com.ctc.wstx.io.UTF8Writer.flush (UTF8Writer.java:103) на com.ctc.wstx.sw.BufferingXmlWriter.flush (BufferingjavaWer.225) на com.ctc.wstx.sw.BaseStreamWriter.flush (BaseStreamWriter.java:259) на com.sun.xml.ws.util.xml.XMLStreamWriterFilter.flush (XMLStreamWriterFilter.java:71) на com.sun.xml.ws.streaming.XMLStreamWriterUtil.getOutputStream (XMLStreamWriterUtil.java:103) при com.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo (JAXBMessage.java:403) при com.sun.xml.ws.message.AbstractMessageImpl.writeTo (AbstractMessageImpl.java: 192) в com.sun.xml.ws.api.message.MessageWrapper.writeTo (MessageWrapper.java:226) в com.sun.xml.ws.encoding.StreamSOAPCodec.encode (StreamSOAPCodec.java:144) в com.sun.xml.ws.encoding.SOAPBindingCodec.encode (SOAPBindingCodec.java:242) в com.sun.xml.ws.transport.http.HttpAdapter.encodePacket (HttpAdapter.java:636) в com.sun.xml.ws.transport.http.HttpAdapter.access $ 100 (HttpAdapter.java:108) на com.sun.xml.ws.transport.http.HttpAdapter $ HttpToolkit.handle (HttpAdapter.java:878) на com.sun.xml.ws.transport.http.HttpAdapter.handle (HttpAdapter.java:422) в com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle (ServletAdapter.java:169) в org.glassfish.webservices.JAXWSServlet.doPJAXWSServlet.java:169) в javax.servlet.http.HttpServlet.service (HttpServlet.java:707) в javax.servlet.http.HttpServlet.service (HttpServlet.java:790) в хранилище данных org.tac..service (StandardWrapper.java:1682) в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java: 318) в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:160) в org.apache.catalina.core.StandardPipeline.doInvoke (StandardPipeline.java:734) в org.apache.catcore.StandardPipeline.invoke (StandardPipeline.java:673) на com.sun.enterprise.web.WebPipeline.invoke (WebPipeline.java:99) на org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:174)в org.apache.catalina.connector.CoyoteAdapter.doService (CoyoteAdapter.java:416) в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:283) в com.sun.enterprise.v3.services.impl.ContainerMapper $ HttpHandlerCallable.call (ContainerMapper.java:459) в com.sun.enterprise.v3.services.impl.ContainerMapper.service (ContainerMapper.java:167) в org.glassfish.grizzly.http.server.httpHander(HttpHandler.java:206) в org.glassfish.grizzly.http.server.HttpHandler.doHandle (HttpHandler.java:180) в org.glassfish.grizzly.http.server.HttpServerFilter.handleRead (HttpServerter.java:235) в org.glassfish.grizzly.filterchain.ExecutorResolver $ 9.execute (ExecutorResolver.java:119) в org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter (DefaultFilterChain.javag283).grizzly.filterchain.DefaultFilterChain.executeChainPart (DefaultFilterChain.java:200) в org.glassfish.grizzly.filterchain.DefaultFilterChain.execute (DefaultFilterChain.java:132) в org.glassfish.grizzhajha.Filter.Filter.Filter.Filter.Filter.Filter.Filter.Filter.Filter.Filter.Filter.Filter.Filter.FilterFilter.Filter.FilterFilter.Filter.FilterFilter.Filter.FilterFilter.FilterFilter.Filter.FilterFilter.Filter.FilterFilter.FilterFilter.Filter.FilterFilter.Filter.FilterFilter.Filter.FilterFilter.Filter.FilterFilter.Filter.FilterFilter.Filter.Filter.Filter.Filters111) на org.glassfish.grizzly.ProcessorExecutor.execute (ProcessorExecutor.java:77) на org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent (TCPNIOTransport.java:536)по адресу org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent (AbstractIOStrategy.java:112) по адресу org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0 (WorkerThreadIOStrategy.java:117) по адресу org.glassstreadII$ 100 (WorkerThreadIOStrategy.java:56) в org.glassfish.grizzly.strategies.WorkerThreadIOStrategy $ WorkerThreadRunnable.run (WorkerThreadIOStrategy.java:137) в org.glassfish.grizzly.threadpool.AbstractThreaderWol.ool $ ($)в org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.run (AbstractThreadPool.java:571) в java.lang.Thread.run (Thread.java:748)

1 Ответ

0 голосов
/ 19 февраля 2019

Наконец, я нашел правильный тайм-аут для установки.Мне пришлось перейти в админ-панель, и внутри Configurations → server-config → Network Config я должен был установить Время ожидания HTTP-запроса http-listener-1.

...