Spec-Zone .ru
спецификации, руководства, описания, API
|
У CORBA есть два типа исключений: стандартные системные исключения, которые полностью определяются OMG и пользовательскими исключениями, которые определяются отдельным прикладным программистом. Исключения CORBA немного отличаются от объектов исключения Java, но те различия в значительной степени обрабатываются в отображении от IDL до Java.
Темы в этом разделе включают:
Чтобы определить исключение в IDL, интерфейсный разработчик использует ключевое слово повышений. Это подобно спецификации бросков в Java. Когда Вы используете ключевое слово исключения в IDL, Вы создаете определяемое пользователем исключение. Стандартные системные исключения нуждаются не (и не может) быть определенным этот путь.
Все операции IDL могут выдать системные исключения когда вызвано. Интерфейсный разработчик не должен определить ничего, чтобы позволить операциям в интерфейсе выдать системные исключения - возможность является автоматической.
Это имеет смысл, потому что независимо от того, насколько тривиальный реализация работы, потенциал вызова работы, прибывающего от клиента, который находится в другом процессе, и возможно (вероятно), на другой машине, означает, что целый диапазон ошибок возможен.
Поэтому, клиент CORBA должен всегда ловить системные исключения CORBA. Кроме того разработчики не могут положиться на компилятор Java, чтобы уведомить их относительно системного исключения, которое они должны поймать, потому что системные исключения CORBA являются потомками java.lang.RuntimeException.
У всех системных исключений CORBA есть та же самая структура:
exception <SystemExceptionName> { // descriptive of error unsigned long minor; // more detail about error CompletionStatus completed; // yes, no, maybe }
Системные исключения являются подтипами java.lang.RuntimeException через org.omg.CORBA.SystemException:
java.lang.Exception
java.lang.RuntimeException
org.omg.CORBA.SystemException
BAD_PARAM
//etc.
У всех системных исключений CORBA есть незначительное поле кода, число, которое обеспечивает дополнительную информацию о природе отказа, который вызвал исключение. Незначительные значения кода не определяются OMG; каждый поставщик ШАРА определяет соответствующие незначительные коды для той реализации. Для значения незначительных кодов, брошенных ШАРОМ Java, см. Незначительные значения кода.
У всех системных исключений CORBA есть поле состояния завершения, указывая на состояние работы, которая выдавала исключение. Коды завершения:
Пользовательские исключения CORBA являются подтипами java.lang.Exception через org.omg.CORBA.UserException:
java.lang.Exception
org.omg.CORBA.UserException
Stocks.BadSymbol
//etc.
Каждое определяемое пользователем исключение, определенное в IDL, приводит к сгенерированному классу исключений Java. Эти исключения полностью определяются и реализуются программистом
Системные исключения у всех есть поле, незначительное, который позволяет поставщикам CORBA обеспечивать дополнительную информацию о причине исключения. Для списка стандартного OMG незначительные исключения кода (OMGVMCID) см. веб-сайт
Часть наиболее распространенного Sun незначительные исключения кода является следующим:
java.net.SocketException
, обычно один из BindException
, ConnectException
, или NoRouteToHostException
. Некоторые вещи проверить:
-ORBInitialHost
и -ORBInitialPort
значения, устанавливаемые правильно для службы именования? Если Вы не уверены в том, каковы настройки должны быть, считайте Запуск документа и Остановку ORBD.Unable to create the listener thread on the specific port. Either the post is taken or there was an error creating the daemon thread
. Это обычно указывает, что порт, на который Вы пытаетесь выполнить службу именования, используется другим процессом. Если Вы работаете на Солярисе, Вы могли бы обнаружить, работает ли что-то на этом порту, используя следующую терминальную быструю команду: netstat | grep port_number
corba.INSSubcontract.getINSReference
.wchar
или wstring
в GIOP 1.0, который не является законным в спецификации.org.omg.CORBA.Object
, но что определенный экземпляр никогда не соединялся с ШАРОМ. При использовании POA Вы должны зарегистрировать объект в POA сначала. Если Вы нуждаетесь в большей информации о том, как зарегистрировать объект в POA, сошлитесь на документ POA или учебное руководство.null
был дан a write
метод такой как write_string
, write_octet_array
, и т.д.. Невозможно возвратить Java null
как результат метода Java.Unable to determine local hostname using InetAddress.getLocalHost().getHostName()
. Использование ШАРА InetAddress.getLocalHost().getHostName()
создать ссылку на службу имен для поиска и/или привязки ссылок. Это также использует InetAddress.getLocalHost().getHostName()
на серверной стороне, чтобы создать ссылки удаленного объекта (то есть, IORs), которые содержат имя/порт сервера (а не dotted-decimal/port пара).
Избегать звонка getHostName
, можно установить следующие свойства (отошлите к Запуску и Остановке ORBD, если Вы не уверены, как сделать это):
com.sun.CORBA.ORBServerHost
к имени DNS или точечно-десятичному адресу сервера, если ШАР действует как сервер.com.sun.CORBA.ORBInitialHost
к имени DNS или точечно-десятичному адресу сервера имени.ОТМЕТЬТЕ: Эти свойства являются собственными и подвергаются удалению или изменению.
Если ни одно из этих предложений не работает на Вас, или если Вы встречаетесь с различным Sun незначительное исключение кода, повесили объявление к форуму разработчика в
Запрашивая значение незначительного кода, включайте следующую информацию: