Как получить tomcat для привязки к адресу ipv4?

Недавно я установил tomcat через установочный скрипт из сообщества apache solr typo3 и провел последние 3 дня, пытаясь понять, почему он не будет работать, пока случайно не заметил, что когда я запросил процесс, прослушивающий порт через «lsof -i », Он был связан с протоколом ipv6. Я googled везде, и большинство говорят, что установка адреса 0.0.0.0 в разъеме tomcat разрешает эту проблему, другие говорят, что установка JAVA_OPTS = "- Djava.net.preferIPv4Stack = true" ; Я пробовал первое, что не работает, но последнее я не уверен, куда его поместить. Одно из решений, которое я прочитал где-то, предложил поместить его в setenv.sh, но я не могу найти этот файл в моей установке tomcat. В этот момент я был бы признателен за любую помощь. Версия tomcat – 6.x, а ОС – ubuntu 11.10. благодаря

Хорошо, я наконец решил. Мне было предложено попробовать это и решение Хенка. Ни один из них, похоже, не работал с удаленным виртуальным сервером. Я предполагаю, что, поскольку я нахожусь в общем пространстве ядра, поэтому провайдер предотвращает это. В любом случае я добавил: JAVA_OPTS= $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses к сценарию запуска catalina.sh и, похоже, исправил проблему привязки tomcat к ipv6.

Многие предложили обновить сценарий загрузки catalina.sh . Да, это решение будет работать, но скрипт catalina.sh не предназначен для настройки / обновления. Все изменения должны входить в скрипт настройки, то есть setenv.sh .

ПРИМЕЧАНИЕ. TOMCAT_HOME/bin/setenv.sh по умолчанию не существует, его необходимо создать. Проверьте скрипт catalina.sh и вы увидите, что скрипт запуска проверяет, существует ли setenv.sh и выполняется, если это произойдет.

Поэтому я предлагаю вам создать новый TOMCAT_HOME/bin/setenv.sh с одной строкой:

 JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true " 

Если вы использовали этот установщик: « Apache Solr для TYPO3 », вы можете изменить адрес в файле server.xml .
Значение по умолчанию указывает на localhost, поэтому найдите 127.0.0.1 и измените его на IPv4-адрес, который вы хотите.
Не забудьте перезапустить Tomcat6, чтобы изменения вступили в силу.

ОБНОВЛЕНИЕ, 20120521

См. Мой комментарий ниже о том, как отключить IPv6 на Ubuntu 11.10.

Я успешно проверил это на Virtualbox-VM на моем Mac.
Адрес для порта 8080 соединителя был изменен с 127.0.0.1 до 0.0.0.0 на server.xml .
Затем отключение IPv6 заставляет «tcp6» уйти, поэтому он привязан к IPv4-адресу.

До / с включенным IPv6:

# netstat -anp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 1972/java

После / IPv6 отключено:

# netstat -anp | grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2045/java

Правильный синтаксис для модификации catalina.sh будет:

 JAVA_OPTS=" $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true " 

Хотя, вероятно, не самый предпочтительный метод, я заметил, что отключение IPv6 на уровне ядра убедит Tomcat открыть привязку IPv4.

Interesting Posts

HTTP-proxy для работы с различными encodingми

MySQL: загружать данные infile и игнорировать вкладку в fileе

Директива местоположения не допускается nginx

Самый дешевый хостинг Windows Virtual Server?

Используйте Powershell для добавления элементов в Access Protection в McAfee Enterprise

Настройка почтовых учетных записей без реальных пользователей Linux

Можно ли использовать controller HP P410 на serverе ML150 Gen5? т.е. есть ли кабель, который взаимодействует с клеткой Gen5?

kinit не может подkeyиться

Как проводить периодический мониторинг производительности и безопасности serverа Sql?

Поток между коммутаторами, восходящая линия к serverу?

Кабель Ethernet, не обнаруживающий в centos 7

Использование JkMount в директиве LocationMatch в Apache 2.2

Управление учетными данными безопасности IAM для нескольких контейнеров dockerов

Завершение работы Linux без отkeyения питания

Почему все пользователи LDAP показываются с помощью getent passwd?

Давайте будем гением компьютера.