Как заставить tomcat связываться с IPv4-адресом?

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

7 ответов

Решение

Многие предложили обновить 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 "

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

Правильный синтаксис для изменения catalina.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

Вместе с другим ответом, используя setenv.sh и CATALINA_OPTS...

Используя Tomcat SSL с APR, единственный способ связать Tomcat с ipv4 - добавить это в конфигурацию коннектора:

address="0.0.0.0"

server.xml выглядит так:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150"
               SSLEnabled="true"
               scheme="https"
               compression="off"
               connectionTimeout="1190"
               address="0.0.0.0"
               >

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

Debian 8 перейдите к использованию вашего любимого редактора в / etc / default / grub; найдите раздел GRUB_CMDLINE_LINUX_DEFAULT= "quiet" **, а затем добавьте ipv6.disable = 1, как показано ниже.

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 тихий"

Сохранить и выйти. В той же директории используйте ваш любимый редактор в /etc/default/tomcat8, затем найдите раздел с JAVA_OPTS=, который будет закомментирован, добавьте следующее ниже этой строки. JAVA_OPTS= "$ JAVA_OPTS -Djava.net.preferIPv4Stack = true -Djava.net.preferIPv4Addresses = true"

Сохранить и выйти

В командной строке введите update-grub, если у вас есть sudo с sudo, перезапустите tomcat8 service tomcat8 restart

Вы должны быть на IPv4 сейчас.

Пожалуйста, в будущих сообщениях укажите полные пути и имена файлов. Благодарю вас

Другие вопросы по тегам