21 августа 2010 11:02 пп
Отключение ipv6 для JavaVM
Недавно я столкнулся с проблемой, есть у меня Jabber сервер, и он работает на Java. Я добавил в него внешний компонент, и решил перезапустить, после чего он по непонятным для меня причинам стал слушать только на ipv6. Ниже я опишу как устранить такое поведение у Java приложений.
После перезапуска jabber сервера в выводе netstat он выглядел примерно так
Код:
# netstat -pnl|grep java
tcp6 0 0 :::7777 :::* LISTEN 6611/java
tcp6 0 0 :::9090 :::* LISTEN 6611/java
tcp6 0 0 :::9091 :::* LISTEN 6611/java
tcp6 0 0 :::5222 :::* LISTEN 6611/java
tcp6 0 0 :::5223 :::* LISTEN 6611/java
tcp6 0 0 :::5229 :::* LISTEN 6611/java
tcp6 0 0 :::7443 :::* LISTEN 6611/java
tcp6 0 0 :::5269 :::* LISTEN 6611/java
tcp6 0 0 :::5275 :::* LISTEN 6611/java
tcp6 0 0 :::7070 :::* LISTEN 6611/java
udp6 0 0 :::10020 :::* 6611/java
Для нормального запуска Java приложений на ipv4 необходимо добавить к команде запуска ключ
Код:
-Djava.net.preferIPv4Stack=true
В моем случае это был Jabber сервер Openfire, крутится он на Ubuntu, в следствие чего имеет конфиг файл в директории /etc/default, куда можно добавить параметры для запуска по умолчанию, в других случаях можно просто добавить вышеприведенный пример в ваш стартовый скрипт для Java приложения.
После запуска с указанием ключа -Djava.net.preferIPv4Stack=true
netstat для Java выглядел так
Код:
#netstat -pnl|grep java
tcp 0 0 0.0.0.0:7777 0.0.0.0:* LISTEN 7162/java
tcp 0 0 0.0.0.0:9090 0.0.0.0:* LISTEN 7162/java
tcp 0 0 0.0.0.0:9091 0.0.0.0:* LISTEN 7162/java
tcp 0 0 0.0.0.0:5222 0.0.0.0:* LISTEN 7162/java
tcp 0 0 0.0.0.0:5223 0.0.0.0:* LISTEN 7162/java
tcp 0 0 0.0.0.0:5229 0.0.0.0:* LISTEN 7162/java
tcp 0 0 0.0.0.0:7443 0.0.0.0:* LISTEN 7162/java
tcp 0 0 0.0.0.0:5269 0.0.0.0:* LISTEN 7162/java
tcp 0 0 0.0.0.0:5275 0.0.0.0:* LISTEN 7162/java
tcp 0 0 0.0.0.0:7070 0.0.0.0:* LISTEN 7162/java
udp 0 0 0.0.0.0:10020 0.0.0.0:* 7162/java
На этом собственно все, надеюсь эта заметка пригодится вам.
8 комментариев »
8 комментариев to “Отключение ipv6 для JavaVM”
Leave a Reply
You must be logged in to post a comment.
[…] This post was mentioned on Twitter by iliastahirov, Максим Степанов. Максим Степанов said: New blog post: Отключение ipv6 для JavaVM —http://tinyurl.com/2abs26b […]
У меня что-то все остается по старому, делаю так:
/etc/init.d/openfire start -Djava.net.preferIPv4Stack=true
netstat -pnl|grep java
tcp 0 0 :::7777 :::* LISTEN 7834/java
tcp 0 0 :::9090 :::* LISTEN 7834/java
tcp 0 0 :::5222 :::* LISTEN 7834/java
tcp 0 0 :::5229 :::* LISTEN 7834/java
tcp 0 0 :::5269 :::* LISTEN 7834/java
Не правильно делаете, надо добавить в конец файла /etc/default/openfire строку
DAEMON_OPTS=»-Djava.net.preferIPv4Stack=true»
Странно, парсер попортил кавычки…
у меня там нет такого файла, я его вручную создал, но все без изменений 🙁
у меня ОС SUSE ставил я OpenFire из YaST`a
Не пользовался ей, возможно там опции запуска в другом файле
Решил свою проблему так:
Добавил строку «blacklist ipv6» в файл /etc/modprobe.d/blacklist
После ребута получил такой ответ:
netstat -pnl|grep java
tcp 0 0 0.0.0.0:7777 0.0.0.0:* LISTEN 4914/java
tcp 0 0 0.0.0.0:9090 0.0.0.0:* LISTEN 4914/java
tcp 0 0 0.0.0.0:5222 0.0.0.0:* LISTEN 4914/java
tcp 0 0 0.0.0.0:5229 0.0.0.0:* LISTEN 4914/java
tcp 0 0 0.0.0.0:5269 0.0.0.0:* LISTEN 4914/java