我一直在尝试让我的C ++ TAO(v1.6)客户端连接到运行在 JDK1.3上的java tnameserv
。但是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
请帮助我。感谢。
答案 0 :(得分:1)
看起来tnameserv
组件正在抛出非标准SystemException
。 CORBA spec:
供应商可能会定义非标准系统异常,但这些异常 不鼓励例外,因为它们是不可携带的。一个 非标准系统异常,当传递给没有的ORB时 认识到它,应由该ORB作为UNKNOWN标准提交 系统异常。来自的次要代码和完成状态 未识别的例外应保留在UNKNOWN例外中。
但很难说出特定于供应商的次要代码(53550000
)代表什么。 Oracle / Sun似乎没有关于他们的代码的文档,所以我建议打开你的tnameserv上的日志记录,看看它回馈给你的是什么。
我还建议你编写一个快速的Java 1.3 CORBA客户端,它与你的C ++ TAO客户端做同样的事情,看看是否有效。如果是这样,您的TAO C ++客户端就会遇到互操作性问题。如果它不起作用,你至少会看到神秘的SystemException
的细节,它可能会引导你找到解决方案。