Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / проблема localhost localhost.localdomain и им подобных под Linux / 19 сообщений из 19, страница 1 из 1
05.09.2007, 16:14:40
    #34778358
VoDA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
Добрый день, коллеги.

Уже второй раз получаю грабли в самом простом для прохода месте... как оказывается на Linux Java зачем то при некоторых операциях пытается провести преобразование localhost -> IP. А если не получается, то к сожалению приложение падает совсем с другой ошибкой, и нет никакого намека на эту ... ЕРЕСЬ.

Может вы подскажете в каких случаях происходит это пребразование при работе web приложения.

Проблемные случаи у себя (OS RHEL 5 & Ubuntu 7.10):
1. MySQL Connector/J
2. Spring Webflow

Лечение прописать в /etc/hosts следующее:
127.0.0.1 localhost localhost.localdomain <machine_name>.localhost <machine_name>.<machine_domain>
...
Рейтинг: 0 / 0
05.09.2007, 16:40:18
    #34778492
VoDA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
Вопрос в общем: из за чего подобный бред происходит и в каких еще случаях подобные проблемы происходили?
...
Рейтинг: 0 / 0
05.09.2007, 17:20:25
    #34778700
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
VoDAВопрос в общем: из за чего подобный бред происходит?
MySQL Connector/J это JDBC-драйвер 4-го типа, где то в его настройках Вы написали "jdbc:mysql://localhost/имяБД", вот теперь вопрос откуда система узнает что такое localhost? вот тут и понадобится библиотека resolv которая определит по имени ip-адрес. Resolv считает из /etc/hosts прописанные там имена и вернет драйверу ip-адрес 127.0.0.1. Можно было в настройках драйвера написать: "jdbc:mysql://127.0.0.1/имяБД" и проблема с резолвом имен исчезла бы, но возможно возникла бы проблема с правами в БД MySQL :)
...
Рейтинг: 0 / 0
06.09.2007, 11:11:52
    #34780194
mors78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
А чем не нравится прописание localhost в hosts?
...
Рейтинг: 0 / 0
07.09.2007, 16:43:21
    #34785115
VoDA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
mors78А чем не нравится прописание localhost в hosts?
ПРоблема в том, что пришлось написать:


127.0.0.1 localhost localhost.localdomain <machine_name>.localhost <machine_name>.<machine_domain>

А это не только локал-хост + при любом боевом / тестовом деплое на свежий сервер это нужно проверять...
Плюс сам эксепшен шел просто обалденный... только гугление помогло понять в чем глюк. А если ты у заказчика и нет Интернета??? А если в деплой-тиме забыли про подобную "особенность".

может попортить много крови, хотя ИМХО это рудимент.
...
Рейтинг: 0 / 0
07.09.2007, 16:55:11
    #34785167
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
VoDAможет попортить много крови, хотя ИМХО это рудимент.
- что "рудимент"? система DNS?
...
Рейтинг: 0 / 0
11.09.2007, 14:35:21
    #34791355
VoDA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
Kachalov VoDAможет попортить много крови, хотя ИМХО это рудимент.
- что "рудимент"? система DNS?
является ли адекватным транслирование localhost в 127.0.0.1 ?

ИМХО localhost - это ВСЕГДА 127.0.0.1
...
Рейтинг: 0 / 0
11.09.2007, 15:53:05
    #34791708
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
VoDAИМХО localhost - это ВСЕГДА 127.0.0.1

- скажите об этом разработчикам операционных систем :) а если Ваше IMHO возникло на основе общения с ОС Windows, поищите там файл C:\WINDOWS\system32\drivers\etc\hosts, удалите из него единственную не закомментированную строчку и Вы поймете что "localhost" не вечен :)

- почитайте про систему DNS, это расширяет кругозор и позволяет понять имя вторично, а ip-адрес первичен. Если система DNS не работает (а кто сказал что она обязательно должна поддерживаться на уровне ОС?) или неправильно настроена (ваш случай), то и "localhost" для системы ничего не значит.
...
Рейтинг: 0 / 0
11.09.2007, 18:10:17
    #34792331
VoDA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
Kachalov VoDAИМХО localhost - это ВСЕГДА 127.0.0.1

- скажите об этом разработчикам операционных систем :) а если Ваше IMHO возникло на основе общения с ОС Windows, поищите там файл C:\WINDOWS\system32\drivers\etc\hosts, удалите из него единственную не закомментированную строчку и Вы поймете что "localhost" не вечен :)

- почитайте про систему DNS, это расширяет кругозор и позволяет понять имя вторично, а ip-адрес первичен. Если система DNS не работает (а кто сказал что она обязательно должна поддерживаться на уровне ОС?) или неправильно настроена (ваш случай), то и "localhost" для системы ничего не значит.Да знаю я про hosts in Windows. Сам им пользуюсь для разного рода хаков.

К примеру я могу назвать переменную почти как хочу... но при этом не могу назвать ее int. Почему? потому что зарезервированное слово.
При этом я использую зарезервированное слово localhost, который всегда должен указывать на мою машину, и для этого случая можно даже не использовать DNS для этого.

Есть ли примеры когда localhost не 127.0.0.1 (не обратная петля) и это адекватно и нужно?
...
Рейтинг: 0 / 0
11.09.2007, 22:00:34
    #34792813
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
VoDAЕсть ли примеры когда localhost не 127.0.0.1 (не обратная петля) и это адекватно и нужно?
- нет, так как localhost это зарезервированное доменное имя и иное его использование было бы не правильным
...
Рейтинг: 0 / 0
12.09.2007, 14:47:52
    #34794598
VoDA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
Kachalov вот теперь вопрос откуда система узнает что такое localhost ? вот тут и понадобится библиотека resolv которая определит по имени ip-адрес. Resolv считает из /etc/hosts прописанные там имена и вернет драйверу ip-адрес 127.0.0.1. Можно было в настройках драйвера написать: "jdbc:mysql://127.0.0.1/имяБД" и проблема с резолвом имен исчезла бы, но возможно возникла бы проблема с правами в БД MySQL :)

Kachalov VoDAЕсть ли примеры когда localhost не 127.0.0.1 (не обратная петля) и это адекватно и нужно?
- нет, так как localhost это зарезервированное доменное имя и иное его использование было бы не правильным
Мне так тоже казалось, теперь вы развеяли мои сомнения по поводу зарезервированности localhost.
Но если localhost зарезервированное доменное имя - но нафига его ресолвить???
...
Рейтинг: 0 / 0
12.09.2007, 15:58:18
    #34794924
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
VoDAНо если localhost зарезервированное доменное имя - но нафига его ресолвить???
- зарезервированное это не значит что обязательное к использованию. ОС не обязана реализовывать сетевые функции и не обязана осуществлять DNS преобразования, но если она это делает, то имя localhost можно использовать только для целей указанных в RFC. А что касается Вашего случая - не валите с больной головы на здоровую! Вы неправильно настроили /etc/hosts и пытаетесь предъявить претензии к разработчикам ОС.
...
Рейтинг: 0 / 0
13.09.2007, 15:09:55
    #34797992
VoDA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
Kachalovзарезервированное это не значит что обязательное к использованию. ОС не обязана реализовывать сетевые функции и не обязана осуществлять DNS преобразования, но если она это делает, то имя localhost можно использовать только для целей указанных в RFC. А что касается Вашего случая - не валите с больной головы на здоровую! Вы неправильно настроили /etc/hosts и пытаетесь предъявить претензии к разработчикам ОС.
Для меня загадка почему в принципе JVM / Java пытается зарезервированное слово ресолвить. :'(

И почему при наличии записи в /etc/hosts
127.0.0.1 localhost

У меня падает приложение... :(

PS я правильно внес запись в hosts?
...
Рейтинг: 0 / 0
13.09.2007, 15:37:46
    #34798130
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
VoDAДля меня загадка почему в принципе JVM / Java пытается зарезервированное слово ресолвить. :'(
- причем ту Java? Вы подставили доменное имя "localhost" и JVM обратилась к нативным функциям ОС для резолва имени. Уже устал говорить что зарезервированное это не значит обязательно поддерживаемое. Пример: слово "goto" зарезервировано в Java, но не используется.

VoDA
И почему при наличии записи в /etc/hosts
127.0.0.1 localhost
У меня падает приложение... :(

- мне очень жаль, но возможно файл hosts у Вас вообще не читается, так как его использование зависит от настроек /etc/host.conf ( FAQ )
...
Рейтинг: 0 / 0
14.09.2007, 12:30:13
    #34800453
VoDA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
Kachalov
VoDA
И почему при наличии записи в /etc/hosts
127.0.0.1 localhost
У меня падает приложение... :(

- мне очень жаль, но возможно файл hosts у Вас вообще не читается, так как его использование зависит от настроек /etc/host.conf ( FAQ )
Читается, читается :)

Проблема в том, что при записи "jdbc:mysql:// localhost /имяБД" в JDBC
при /etc/hosts 127.0.0.1 localhost система падает со странным воплем

для работы /etc/hosts должен выглядеть так:
127.0.0.1 localhost localhost.localdomain

Если же вы редактировали имя машины (а как иначе работать в корпоративной среде), то /etc/hosts должен выглядеть так:
127.0.0.1 localhost localhost.localdomain <machine_name>.localdomain

Что характерно для Windows нет такой проблемы, т.е. то же самое приложение работает с hosts
127.0.0.1 localhost

PS Kachalov я с уважением отношусь к вашим постам, но вы похоже не поняли в чем моя притензия. Она заключается в том, что в некоторых случаях работа приложения различается, т.е. получается недо-кроссплатформенность.
...
Рейтинг: 0 / 0
14.09.2007, 13:04:01
    #34800646
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
VoDAпри /etc/hosts 127.0.0.1 localhost система падает со странным воплем
- вопль в студию
...
Рейтинг: 0 / 0
14.09.2007, 18:37:29
    #34801988
VoDA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
Kachalov VoDAпри /etc/hosts 127.0.0.1 localhost система падает со странным воплем
- вопль в студию
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
java.net.SocketException: java.net.ConnectException: Connection refused
	at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java: 156 )
	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java: 284 )
	at com.mysql.jdbc.Connection.createNewIO(Connection.java: 2555 )
	at com.mysql.jdbc.Connection.<init>(Connection.java: 1485 )
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java: 266 )
	at java.sql.DriverManager.getConnection(DriverManager.java: 525 )
	at java.sql.DriverManager.getConnection(DriverManager.java: 171 )
	at com.tacitknowledge.util.migration.jdbc.util.SqlUtil.getConnection(SqlUtil.java: 127 )
	at com.tacitknowledge.util.migration.jdbc.util.NonPooledDataSource.getConnection(NonPooledDataSource.java: 86 )
	at com.tacitknowledge.util.migration.jdbc.util.NonPooledDataSource.getConnection(NonPooledDataSource.java: 76 )
	at com.tacitknowledge.util.migration.jdbc.DataSourceMigrationContext.getConnection(DataSourceMigrationContext.java: 63 )
	at com.tacitknowledge.util.migration.jdbc.JdbcMigrationLauncher.setJdbcMigrationContext(JdbcMigrationLauncher.java: 228 )
	at com.technoetic.xplanner.upgrade.XPlannerMigrationLauncherFactory.configureFromXPlannerProperties(XPlannerMigrationLauncherFactory.java: 43 )
	at com.technoetic.xplanner.upgrade.XPlannerMigrationLauncherFactory.createMigrationLauncher(XPlannerMigrationLauncherFactory.java: 34 )
	at com.technoetic.xplanner.filters.XPlannerMigrationLauncher.getLauncher(XPlannerMigrationLauncher.java: 47 )
	at com.technoetic.xplanner.filters.XPlannerMigrationLauncher.contextInitialized(XPlannerMigrationLauncher.java: 64 )
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java: 3763 )
	at org.apache.catalina.core.StandardContext.start(StandardContext.java: 4211 )
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java: 759 )
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java: 739 )
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java: 524 )
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java: 904 )
	at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java: 867 )
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java: 474 )
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java: 1122 )
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java: 310 )
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java: 119 )
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java: 1021 )
	at org.apache.catalina.core.StandardHost.start(StandardHost.java: 718 )
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java: 1013 )
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java: 442 )
	at org.apache.catalina.core.StandardService.start(StandardService.java: 450 )
	at org.apache.catalina.core.StandardServer.start(StandardServer.java: 709 )
	at org.apache.catalina.startup.Catalina.start(Catalina.java: 551 )
	at sun.reflect.NativeMethodAccessorImpl.invoke0( Native  Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39 )
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25 )
	at java.lang.reflect.Method.invoke(Method.java: 585 )
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java: 294 )
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java: 432 )
Как мне узнать из ЭТОГО, что на самом деле программа правильная... нужно только поправить hosts
...
Рейтинг: 0 / 0
14.09.2007, 19:10:45
    #34802063
VoDA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
На всякий случай.
описаны похожие проблемы:
http://sourceforge.net/forum/message.php?msg_id=3134194
http://sourceforge.net/forum/message.php?msg_id=3150857
...
Рейтинг: 0 / 0
14.09.2007, 20:15:37
    #34802145
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема localhost localhost.localdomain и им подобных под Linux
VoDAКак мне узнать из ЭТОГО, что на самом деле программа правильная... нужно только поправить hosts
java.net.ConnectException: Connection refused - проблема с сетевым соединением, варианты: неверный хост, неверный порт (кстати порт указываете? а то по дефолту Connector/J использует 3306, а конкретного хостера/админа настройки порта для MySQL могут отличиться и переносимость опять же потеряется), сокет закрыт файрволом, и еще один случай (не Ваш, но ошибка та же) - БД закрыла соединение из-за того что сработал connection timeout (характерная проблема при использовании пулов). Так что в программе нужен какой то диалог говорящий о необходимости посмотреть сетевые настройки.

Соответственно методика поиска проблемы:
1. ping localhost
2. netstat -a
3. telnet >o localhost 3306
4. проверка настроек пула (если соединение рвется через некоторое время)

Если Вы уверены что БД всегда будет находиться на той же машине что и приложение, лучше зашейте в код ip-адрес: "jbdc:mysql://127.0.0.1:порт/ИмяБД" тем самым Вы избегаете проблем с резолвом имен в DNS.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / проблема localhost localhost.localdomain и им подобных под Linux / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]