Назад | Перейти на главную страницу

Java не может разрешить DNS-адрес из AIX: UnknownHostException

У меня странная ошибка.

В AIX я могу подключиться к своему серверу из командной строки (используя ping / telnet)

Но если я попробую использовать java, у меня будет исключение UnkownHostException

Это потому, что Java каким-то образом не может «использовать» DNS, но я не знаю почему. Если я использую IP-адрес, он работает нормально.

Это моя тестовая программа.

    import java.net.*;

    public class Test {
            public static void main( String [] args ) throws Exception  {
                    String host = args[0];
                    int port = Integer.parseInt( args[1] );
                    System.out.println("Connecting to: " + host + " at port: " + port );
                    Socket socket = new Socket( host, port );
                    System.out.println("Connected!");
                    socket.close();
                    System.out.println("Closed!");

            }
     }

Кто-нибудь знает о какой-то конфигурации под AIX, которая запрещает программам (например, java) доступ к информации DNS?

Я (ну, системный администратор) добавил свой адрес в / etc / hosts, но он тоже не работает.

заранее спасибо

Версия Java:

Java(TM) 2 Runtime Environment, Standard Edition (build pap32dev-20080315 (SR7))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 AIX ppc-32 j9vmap3223-20080315 (JIT enabled)

Виновата поддержка IPv6? Попробуйте установить системное свойство java.net.preferIPv4Stack = true.

Посмотрите, что возвращают InetAddress.getAllByName (), InetAddress.getAllByAddress ().

Определенно существуют некоторые долгосрочные проблемы с DNS с Java и AIX, я давно не рассматривал их, но попробуйте использовать полное доменное имя, а не короткое.

Кроме того, похоже, что Java в AIX не использует файл / etc / hosts для разрешения имен, если существует /etc/resolv.conf, бог знает почему.

Я не знаю, использует ли Java DNS иначе, но в AIX, если вы собираетесь использовать файл / etc / hosts, вы должны убедиться, что /etc/netsvc.conf настроен правильно. По умолчанию, если найден /etc/resolv.conf, AIX будет использовать DNS, а затем хосты. Чтобы хосты были первыми, убедитесь, что у вас есть строка в /etc/netsvc.conf, которая говорит что-то вроде hosts = local, bind4