Java.net.SocketException: сброс соединения только на TomcatJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java.net.SocketException: сброс соединения только на Tomcat

Сообщение Anonymous »

Я знаю, что об этом спрашивали раньше, и я попробовал просмотреть как минимум 30 решений по stackoverflow, если не больше, но пока ничего не помогло.

У меня есть сервер Tomcat, который запрашивает REST API для получения и хранения данных. Это сделано для того, чтобы избежать необходимости запрашивать данные у удаленного API каждый раз, когда мое приложение хочет загрузить данные. Данные меняются только время от времени, и отсюда и эти усилия.
У меня есть простой код для подключения

final URL url = new URL("https://remote.site.com/api/request?apikey=");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
connection.connect();
final InputStream inputStream = connection.getInputStream();
final InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
final Gson gson = new Gson();
MyJSONResponse myJSONResponse = gson.fromJson(inputStreamReader, MyJSONResponse.class);


Когда я запускаю этот код с сервера Tomcat7 на своем MacBook, он работает отлично. Я получаю JSON, и все в порядке. Итак, я запустил это изнутри сервера Tomcat7 на своем Ubuntu и почти сразу получил исключение SocketException.

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

HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();


что для меня не имеет смысла.
Для дальнейшего тестирования я создал программу с одним классом, содержащую только эти строки кода и распечатывающую входной поток, который я получаю от удаленного API, и запустил ее на своем компьютере с Ubuntu, и она работает отлично. Так что с Ubuntu и ее подключением к Интернету все в порядке. Кажется, сервер Tomcat здесь что-то путает.
Я уже 4-5 часов пытаюсь сделать несколько вещей: сбросить соединение, не закрывать его в блоке Final и другие вещи, но, похоже, ничего не работает.
Любая помощь будет оценена по достоинству.
Спасибо

Изменить:
Добавление журналов для тайм-аута:

*** Init called
May 22, 2016 11:23:21 PM org.apache.http.impl.execchain.RetryExec execute
INFO: I/O exception (java.net.SocketException) caught when processing request to {s}->https://www.data.gov.in:443: Connection reset
May 22, 2016 11:23:21 PM org.apache.http.impl.execchain.RetryExec execute
INFO: Retrying request to {s}->https://www.data.gov.in:443
May 22, 2016 11:23:22 PM org.apache.http.impl.execchain.RetryExec execute
INFO: I/O exception (java.net.SocketException) caught when processing request to {s}->https://www.data.gov.in:443: Connection reset
May 22, 2016 11:23:22 PM org.apache.http.impl.execchain.RetryExec execute
INFO: Retrying request to {s}->https://www.data.gov.in:443
May 22, 2016 11:23:24 PM org.apache.http.impl.execchain.RetryExec execute
INFO: I/O exception (java.net.SocketException) caught when processing request to {s}->https://www.data.gov.in:443: Connection reset
May 22, 2016 11:23:24 PM org.apache.http.impl.execchain.RetryExec execute
INFO: Retrying request to {s}->https://www.data.gov.in:443
java.net.SocketException: C o n n e c t i o n r e s e t < b r / > a t j a v a . n e t . S o c k e t I n p u t S t r e a m . r e a d ( S o c k e t I n p u t S t r e a m . j a v a : 1 9 6 ) < b r / > a t j a v a . n e t . S o c k e t I n p u t S t r e a m . r e a d ( S o c k e t I n p u t S t r e a m . j a v a : 1 2 2 ) < b r / > a t s u n . s e c u r i t y . s s l . I n p u t R e c o r d . r e a d F u l l y ( I n p u t R e c o r d . j a v a : 4 4 2 ) < b r / > a t s u n . s e c u r i t y . s s l . I n p u t R e c o r d . r e a d ( I n p u t R e c o r d . j a v a : 4 8 0 ) < b r / > a t s u n . s e c u r i t y . s s l . S S L S o c k e t I m p l . r e a d R e c o r d ( S S L S o c k e t I m p l . j a v a : 9 4 6 ) < b r / > a t s u n . s e c u r i t y . s s l . S S L S o c k e t I m p l . p e r f o r m I n i t i a l H a n d s h a k e ( S S L S o c k e t I m p l . j a v a : 1 3 4 4 ) < b r / > a t s u n . s e c u r i t y . s s l . S S L S o c k e t I m p l . s t a r t H a n d s h a k e ( S S L S o c k e t I m p l . j a v a : 1 3 7 1 ) < b r / > a t s u n . s e c u r i t y . s s l . S S L S o c k e t I m p l . s t a r t H a n d s h a k e ( S S L S o c k e t I m p l . j a v a : 1 3 5 5 ) < b r / > a t o r g . a p a c h e . h t t p . c o n n . s s l . S S L C o n n e c t i o n S o c k e t F a c t o r y . c r e a t e L a y e r e d S o c k e t ( S S L C o n n e c t i o n S o c k e t F a c t o r y . j a v a : 3 9 4 ) < b r / > a t o r g . a p a c h e . h t t p . c o n n . s s l . S S L C o n n e c t i o n S o c k e t F a c t o r y . c o n n e c t S o c k e t ( S S L C o n n e c t i o n S o c k e t F a c t o r y . j a v a : 3 5 3 ) < b r / > a t o r g . a p a c h e . h t t p . i m p l . c o n n . D e f a u l t H t t p C l i e n t C o n n e c t i o n O p e r a t o r . c o n n e c t ( D e f a u l t H t t p C l i e n t C o n n e c t i o n O p e r a t o r . j a v a : 1 3 4 ) < b r / > a t o r g . a p a c h e . h t t p . i m p l . c o n n . P o o l i n g H t t p C l i e n t C o n n e c t i o n M a n a g e r . c o n n e c t ( P o o l i n g H t t p C l i e n t C o n n e c t i o n M a n a g e r . j a v a : 3 5 3 ) < b r / > a t o r g . a p a c h e . h t t p . i m p l . e x e c c h a i n . M a i n C l i e n t E x e c . e s t a b l i s h R o u t e ( M a i n C l i e n t E x e c . j a v a : 3 8 0 ) < b r / > a t o r g . a p a c h e . h t t p . i m p l . e x e c c h a i n . M a i n C l i e n t E x e c . e x e c u t e ( M a inClientExec.java:236)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
at com.soulpatch.jersey.DataFetcher.init(DataFetcher.java:47)
at com.soulpatch.jersey.DataFetcher.getBloodBanks(DataFetcher.java:86)
at com.soulpatch.jersey.resources.BloodBanksResource.getBloodBanks(BloodBanksResource.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)


Подробнее здесь: https://stackoverflow.com/questions/373 ... omcat-only
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»