0

我一直在尝试让我的 C++ TAO (v1.6) 客户端连接到在JDK1.3tnameserv上运行的java。但 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

请帮我解决这个问题。谢谢。

4

1 回答 1

1

看起来该tnameserv组件正在抛出一个非标准的SystemException. CORBA 规范总是不鼓励这样做:

供应商可能会定义非标准系统异常,但不鼓励使用这些异常,因为它们是不可移植的。一个非标准系统异常,当传递给一个不能识别它的 ORB 时,应由该 ORB 呈现为一个 UNKNOWN 标准系统异常。来自未识别异常的次要代码和完成状态应保存在 UNKNOWN 异常中。

但是,很难说出特定于供应商的次要代码 ( 53550000) 代表什么。Oracle/Sun 似乎没有关于他们的代码的文档,所以我建议打开你的 tnameserv 上的日志,看看它给你带来了什么。

我还建议您编写一个快速的 Java 1.3 CORBA 客户端,它与您的 C++ TAO 客户端执行相同的操作,看看是否可行。如果是这样,您的 TAO C++ 客户端遇到了互操作性问题。如果它不起作用,你至少会看到神秘的细节,SystemException它可能会引导你找到解决方案。

于 2011-09-06T02:25:36.180 回答