Как решить SocketException: Разрешение отклонило: подключение

Я недавно встретился с проблемой, которая дает мне головную боль, и я нуждаюсь в помощи...

Система состоит из двух подсистем, названных A и B, каждый работающий на автономном экземпляре Tomcat и в настоящее время работающий на той же машине. Вызывает сервис B's через Spring httpInvoker (т.е. по HTTP). B система также вызывает сервисы другой системы через HTTP.

Признаки:

  1. система начинает работать и, кажется, работает обычно в течение приблизительно 10-15 дней;

  2. система будет работать сроком на время за исключением:

    org.springframework.remoting.RemoteAccessException: Could not access HTTP invoker remote service at [http://xxx.xxx.xxx.xxx/remoting/call]; 
    

    Вложенная исключительная ситуация

    java. net.SocketException: **Permission denied: connect**
    
  3. когда исключение происходит, система продолжается. Это происходит всегда, не только иногда. (Похоже, что некоторые ресурсы исчерпываются, но уровень ЦП <5%, память <15%, сеть <5%).

  4. когда системный вызов между сбоями A и B, системный вызов B по HTTP к внешнему сервису также перестал работать за тем же исключением.

  5. Перезапуск обоих сервисов Tomcat заставляет целую систему работать правильно.

Так неоднократно следующие шаги 1 - 5, я не нашел корневую причину.

Среда:

  • окна 2 008 R2
  • tomcat7.0.42 x86_64
  • oralce-jdk-1.7.0_40

Какие-либо идеи?

2
задан 28 May 2014 в 04:53
1 ответ

У меня была такая же проблема с RestTemplate. Я изменил инициализацию на использование HttpClient, и это устранило мою проблему.

Вот объявление Spring, которое я использовал:

<code>
    <bean id="httpClient" class="org.apache.http.impl.client.DefaultHttpClient">
        <constructor-arg>
            <bean class="org.apache.http.impl.conn.PoolingClientConnectionManager"/>
        </constructor-arg>
    </bean>

    <bean id="restTemplate" class="org.springframework.web.client.RestTemplate" >
        <constructor-arg>
            <bean class="org.springframework.http.client.HttpComponentsClientHttpRequestFactory">
                <constructor-arg ref="httpClient"/>
            </bean>
        </constructor-arg>
    </bean>
</code>

Это полностью решило проблему (раньше, после нескольких HTTP-запросов (около 14500), у меня была ошибка "подключиться".

1
ответ дан 3 December 2019 в 12:52

Теги

Похожие вопросы