У меня странная ошибка.
В 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