Невозможно подключиться к java 1.3 NamingService с использованием C++ TAO Client.
Я пытался подключить мой клиент C++ TAO (v1.6) к Javatnameserv
работает наJDK1.3.
Но клиент C++ TAO не может разрешить службу имен. Это бросает следующее исключение:
system exception, ID 'IDL:omg.org/CORBA/UNKNOWN:1.0'
Unknown vendor minor code id (53550000), minor code = 53550004, completed = MAYBE
TAO (4144|5228) Completed initializing the process-wide service context
TAO (4144|5228) Default ORB services initialization begins
TAO (4144|5228) Default ORB services initialization completed
TAO (4144|5228) We are the default ORB ...
TAO (4144|5228) Initializing the orb-specific services
TAO (4144|5228) Default_Resource_Factory - codeset manager=004AE5C0
TAO (4144|5228) - Codeset_Manager_i::init_ccs, Loaded Codeset translator , ncs = 00010001 tcs = 05010001
TAO (4144|5228) - UTF16_BOM_Translator: forceBE 0
TAO (4144|5228) Loaded default protocol
TAO (4144|5228) created new ORB <>
TAO (4144|5228) - Transport_Cache_Manager::find_i, no idle transport is available
TAO (4144|5228) - Transport_Cache_Manager::fill_set_i, current_size = 0, cache_maximum = 512
TAO (4144|5228) - IIOP_Connector::begin_connection, to which should block
TAO (4144|5228) - Transport_Connector::wait_for_connection_completion, going to wait for connection completion on transport[10603568]
TAO (4144|5228) - Leader_Follower[10603568]::wait_for_event, (leader) enter reactor event loop
TAO (4144|5228) - IIOP_Connection_Handler::open, The local addr is <127.0.0.1:54768>
TAO (4144|5228) - IIOP_Connection_Handler::open, IIOP connection to peer <127.0.0.1:2323> on 512
TAO (4144|5228) - Leader_Follower[10603568]::wait_for_event, (leader) exit reactor event loop
TAO (4144|5228) - Transport_Connector::wait_for_connection_completion, transport [512], wait done result = 1
TAO (4144|5228) - IIOP_Connector::make_connection, new connected connection to on Transport[512]
TAO (4144|5228) - Transport_Cache_Manager::bind_i, Transport[512]; hash 2130708756
TAO (4144|5228) - Transport_Cache_Manager::bind_i, cache size is [1]
TAO (4144|5228) - Transport[512]::register_handler
TAO (4144|5228) - Transport_Connector::connect, opening Transport[512] in TAO_CLIENT_ROLE
TAO (4144|5228) - Codeset_Manager_i::set_tcs, No codeset component in profile
TAO (4144|5228) - Muxed_TMS[512]::request_id, <1>
TAO (4144|5228) - Codeset_Manager_i::generate_service_context, using tcs_c = 00010001, tcs_w = 00010109
TAO (4144|5228) - GIOP_Message_Base::dump_msg, send GIOP v1.0 msg, 108 data bytes, my endian, Type Request[1]
TAO (4144|5228) - Transport[512]::drain_queue_helper, sending 1 buffers
TAO (4144|5228) - Transport[512]::drain_queue_helper, buffer 0/1 has 120 bytes
TAO - Transport[512]::drain_queue_helper (0/120) - HEXDUMP 120 bytes
47 49 4f 50 01 00 01 00 6c 00 00 00 01 00 00 00 GIOP....l.......
01 00 00 00 0c 00 00 00 01 00 4a 00 01 00 01 00 ..........J.....
09 01 01 00 01 00 00 00 01 00 00 00 0b 00 00 00 ................
4e 61 6d 65 53 65 72 76 69 63 65 00 06 00 00 00 NameService.....
5f 69 73 5f 61 00 00 00 00 00 00 00 28 00 00 00 _is_a.......(...
49 44 4c 3a 6f 6d 67 2e 6f 72 67 2f 43 6f 73 4e IDL:omg.org/CosN
61 6d 69 6e 67 2f 4e 61 6d 69 6e 67 43 6f 6e 74 aming/NamingCont
65 78 74 3a 31 2e 30 00 ext:1.0.
TAO (4144|5228) - Transport[512]::drain_queue_helper, end of data
TAO (4144|5228) - Transport[512]::cleanup_queue, byte_count = 120
TAO (4144|5228) - Transport[512]::cleanup_queue, after transfer, bc = 0, all_sent = 1, ml = 0
TAO (4144|5228) - Transport[512]::drain_queue_helper, byte_count = 120, head_is_empty = 1
TAO (4144|5228) - Transport[512]::drain_queue_i, helper retval = 1
TAO (4144|5228) - Transport[512]::make_idle
TAO (4144|5228) - Leader_Follower[512]::wait_for_event, (leader) enter reactor event loop
TAO (4144|5228) - Transport[512]::handle_input
TAO (4144|5228) - Transport[512]::process_queue_head, 0 enqueued
TAO (4144|5228) - Transport[512]::handle_input_parse_data, enter
TAO (4144|5228) - Transport[512]::handle_input_parse_data, read 236 bytes
TAO (4144|5228) - GIOP_Message_Base::dump_msg, recv GIOP v1.0 msg, 224 data bytes, other endian, Type Reply[6]
TAO (4144|5228) - Leader_Follower[512]::wait_for_event, (leader) exit reactor event loop
TAO (4144|5228) - Synch_Twoway_Invocation::handle_system_exception
TAO (4144|5228) - Synch_Twoway_Invocation::handle_system_exception, about to raise
(4144|5228) EXCEPTION, Exception caught:
system exception, ID 'IDL:omg.org/CORBA/UNKNOWN:1.0'
Unknown vendor minor code id (53550000), minor code = 53550004, completed = MAYBE
Destroying ORB <>
TAO (4144|5228) - Connection_Handler[512]::close_connection_eh, purging entry from cache
TAO (4144|5228) - Transport[512]::cleanup_queue_i, cleaning up complete queue
TAO (4144|5228) - Transport[512]::cleanup_queue_i, discarded 0 messages, 0 bytes
TAO (4144|5228) - Connection_Handler[512]::close_connection_eh, removing from the reactor
TAO (4144|5228) - Connection_Handler[512]::close_connection_eh, cancel all timers
TAO (4144|5228) - Transport[512]::cleanup_queue_i, cleaning up complete queue
TAO (4144|5228) - Transport[512]::cleanup_queue_i, discarded 0 messages, 0 bytes
TAO (4144|5228) - Connection_Handler[512]::close_connection_eh
TAO (4144|5228) - Transport[512]::cleanup_queue_i, cleaning up complete queue
TAO (4144|5228) - Transport[512]::cleanup_queue_i, discarded 0 messages, 0 bytes
Пожалуйста, помогите мне с этим. Благодарю.
1 ответ
Похоже, tnameserv
компонент выбрасывает нестандартный SystemException
, Это всегда не одобрялось спецификацией CORBA:
Поставщики могут определять нестандартные системные исключения, но эти исключения не приветствуются, поскольку они не переносимы. Нестандартное системное исключение при передаче в ORB, который его не распознает, должно быть представлено этим ORB как НЕИЗВЕСТНОЕ системное исключение. Дополнительный код и статус завершения из нераспознанного исключения должны быть сохранены в НЕИЗВЕСТНОМ исключении.
Сложно сказать, что это за мелкий код конкретного производителя (53550000
) представляет, хотя. Похоже, что Oracle/Sun не имеет документации по их кодам, поэтому я бы посоветовал включить регистрацию на вашем tnameserv, чтобы увидеть, что он вам возвращает.
Я бы также предложил вам написать быстрый клиент Java 1.3 CORBA, который делает то же самое, что и ваш клиент CAO TAO, и посмотреть, работает ли он. Если это так, ваш клиент TAO C++ сталкивается с проблемой совместимости. Если это не сработает, вы хотя бы увидите детали загадочного SystemException
и это может привести вас к решению.