Установка FlexiServer как CORBA-Сервера
Функция main отдельного Java-приложения реализована в flexi\impl\FlexiServer.java. Его код таков:
import org.omg.CORBA.*;class FlexiServer {
public static void main(String[] args) {
try {
// Инициализируются orb и boa.
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init();
org.omg.CORBA.BOA boa = orb.BOA_init();
// Создаётся серверный объект.
Admin __admin = new Admin(); // Информирует boa, что серверный объект готов.
boa.obj_is_ready(__admin); // Регистрируется имя объекта с именем сервиса.
// Сначала определяется хост имени сервиса, по умолчанию это <localhost>:80.
String _nameServiceHost = null;
if (args.length > 0) {
// Принимается, что первый arg это имя хоста имени
// сервиса. Ожидаемый формат: <hostname>:<port>
_nameServiceHost = args[0];
}
else {
String _localHostName = null;
try {
_localHostName=
java.net.InetAddress.getLocalHost().getHostName();
_nameServiceHost = _localHostName + ":80";
}
catch (java.net.UnknownHostException e) {
System.out.println("Couldn't determine local host;
can't register name.");
}
} String _regURL = "http://" + _nameServiceHost + "/FSA-Admin";
System.out.println("Registering Admin object at URL: " + _regURL); // Регистрируется серверный объект.
netscape.WAI.Naming.register(_regURL, __admin);
System.out.println("Started FSA Admin: " + __admin); boa.impl_is_ready();
} catch (org.omg.CORBA.SystemException e) {
System.err.println(e);
}
}
}
Этот код инициализирует ORB и создаёт экземпляр класса Admin. Затем экземпляр регистрируется как распределённый объект с URL в форме http://host
:port/FSA-Admin. По умолчанию host это имя хоста, на котором запущен FlexiServer, а port равен 80. Вы можете поставить Ваши собственные значения для host:port путём передачи их как аргументов для FlexiServer при его старте. Чтобы использовать локальный хост, но другой номер порта, Вам нужно изменить исходный код и перекомпилировать его. Если код имеет соответствующее имя, он регистрирует объект, используя метод register объекта netscape.WAI.Naming. Дополнительно см. книгу .
Наконец, код печатает сообщение на консоль и ожидает запросы от CORBA-клиентов. В данном случае единственным CORBA-клиентом, который знает о нём, является приложения flexi на языке JavaScript.