有没有懂corba的呢?
用c++和Java分别做corba的客户端和服务器端,但是把一个结构体插入到any类型中发送,在接收端不能提取出来(用java的equal或equialent判断不相等,但是如果直接用extract却可以得到里面的数据,用c++的“>>=”提取符号就不能成功
传送的是下面的StructuredEvent结构体
idl编译成Java用的是idlj.exe
编译成c++ 用的是omniorb4.1.0
望高手指教
idl定义:
module Test{
struct TimeOfDay
{
short hour;
short minute;
short second;
};
typedef sequence<TimeOfDay> TimeOfDaySeq;
typedef string Istring;
typedef Istring PropertyName;
typedef any PropertyValue;
struct Property
{
PropertyName name;
PropertyValue value;
};
typedef sequence<Property> PropertySeq;
typedef PropertySeq OptionalHeaderFields;
typedef PropertySeq FilterableEventBody;
struct EventType
{
string domain_name;
string type_name;
};
typedef sequence<EventType> EventTypeSeq;
struct FixedEventHeader
{
EventType event_type;
string event_name;
};
struct EventHeader
{
FixedEventHeader fixed_header;
OptionalHeaderFields variable_header;
};
struct StructuredEvent {
EventHeader header;
FilterableEventBody filterable_data;
any remainder_of_body;
};
typedef sequence<StructuredEvent> EventBatch;
interface Time{
void Push(in TimeOfDaySeq seq);
void NewPush(in any a);
};
};