Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 一个关于CORBA中any类型的问题
an350901450





发贴: 4
积分: 0
于 2008-12-30 14:44 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
请教一个问题
我的IDL文件:
module anyM{
interface anyI{
any print();
};
};

module personS
{
struct person{
wstring name;
wstring sex;
};
};

我用的是java 与corba 编译
服务器实现端:
public class AnyIImpl extends anyIPOA {
  public Any print() {
  Any a = org.omg.CORBA.ORB.init().create_any();
person ps =new person();
ps.name="张三";
ps.sex="男";
personHelper.insert(a,ps);

    return a;
  }
}

服务端代码:
public class Server
{
public static void main( String[] args )
{
  org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null);
  try
  {
   org.omg.PortableServer.POA poa =
    org.omg.PortableServer.POAHelper.narrow(orb.resolve_initial_references("RootPOA"));

   poa.the_POAManager().activate();

   org.omg.CORBA.Object o = poa.servant_to_reference(new AnyIImpl());
   if( args.length == 1 )
   {
    // write the object reference to args[0]
    PrintWriter ps = new PrintWriter(new FileOutputStream(new File( args[0] )));
    ps.println( orb.object_to_string( o ) );
    ps.close();
   }
   else
   {
    // register server with naming context
    /*NamingContextExt nc = NamingContextExtHelper.narrow(orb.resolve_initial_references("NameService"));*/
     NamingContextExt nc = NamingContextExtHelper.narrow(orb
.string_to_object("corbaloc::192.168.0.151:5055/NameService"));
nc.bind( nc.to_name("AnyServer.service"), o);

   }
  }
  catch ( Exception e )
  {
   e.printStackTrace();
  }
  orb.run();
}
}
我的客户端:
public class Client
{
public static void main( String[] args )
{
  try
  {  
   org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,null);

   // get hold of the naming service
   /*NamingContextExt nc =
NamingContextExtHelper.narrow(orb.resolve_initial_references("NameService"));*/
   NamingContextExt nc = NamingContextExtHelper.narrow(orb
        .string_to_object("corbaloc::192.168.0.151:5055/NameService"));
   System.out.println("nc: "+nc);

   anyI s =
anyIHelper.narrow(nc.resolve(nc.to_name("AnyServer.service")));
   System.out.println(nc.resolve(nc.to_name("AnyServer.service")));

   // create a new any
   Any a = org.omg.CORBA.ORB.init().create_any();
   System.out.print("Passing a Wstring...");
   person pp=personHelper.extract(s.print());
System.out.println("name: "+pp.name);
System.out.println("sex: "+pp.sex);

// System.out.println(s.print().extract_wstring());
  
//System.out.println("Any.kind: " + a.type().kind().value() );

   orb.shutdown(true);
  }
  catch ( Exception e)
  {
   e.printStackTrace();
  }
}
}

如果我在我的配置文件中用
# are handled properly and cause no harm!
#ORBInitRef.NameService=corbaloc::160.45.110.41:38693/StandardNS/NameServer-POA/_root
#ORBInitRef.NameService=file:/c:/NS_Ref
ORBInitRef.NameService=file:/e:/workspace/any/NS_Ref
。。。。。。。。
上面这种方式 把IOR 写到文件NS_Ref 里面的,这种命名方式不会出错能正常运行
但当我使用
#ORBInitRef.NameService=corbaloc::160.45.110.41:38693/StandardNS/NameServer-POA/_root
#ORBInitRef.NameService=file:/c:/NS_Ref
ORBInitRef.NameService=corbaloc::192.168.0.151:5055/NameService
。。。。。。。
这中IP绑订 命名服务,在启动客户端的时候就报错了,报如下错误
Passing a Wstring...org.omg.CORBA.UNKNOWN: ----------BEGIN server-side stack trace----------
org.omg.CORBA.UNKNOWN: vmcid: SUN minor code: 202 completed: Maybe
  at com.sun.corba.se.impl.logging.ORBUtilSystemException.runtimeexception(ORBUtilSystemException.java:8365)
  at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.convertThrowableToSystemException(CorbaMessageMediatorImpl.java:1918)
  at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleThrowableDuringServerDispatch(CorbaMessageMediatorImpl.java:1868)
  at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleThrowableDuringServerDispatch(CorbaMessageMediatorImpl.java:1821)
  at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:258)
  at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1680)
  at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1540)
  at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:922)
  at com.sun.corba.se.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:181)
  at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:694)
  at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.dispatch(SocketOrChannelConnectionImpl.java:451)
  at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.doWork(SocketOrChannelConnectionImpl.java:1187)
  at com.sun.corba.se.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:417)
Caused by: java.lang.NullPointerException
  at com.sun.corba.se.impl.corba.AnyImpl.write_value(AnyImpl.java:579)
  at com.sun.corba.se.impl.encoding.CDROutputStream_1_0.write_any(CDROutputStream_1_0.java:585)
  at com.sun.corba.se.impl.encoding.CDROutputStream.write_any(CDROutputStream.java:202)
  at anyM.anyIPOA._invoke(anyIPOA.java:43)
  at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:637)
  at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:189)
  ... 8 more

----------END server-side stack trace---------- vmcid: SUN minor code: 202 completed: Maybe
  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
  at com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase.getSystemException(MessageBase.java:902)
  at com.sun.corba.se.impl.protocol.giopmsgheaders.ReplyMessage_1_2.getSystemException(ReplyMessage_1_2.java:99)
  at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.getSystemExceptionReply(CorbaMessageMediatorImpl.java:572)
  at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.processResponse(CorbaClientRequestDispatcherImpl.java:430)
  at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete(CorbaClientRequestDispatcherImpl.java:326)
  at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:129)
  at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)
  at anyM._anyIStub.print(_anyIStub.java:32)
  at anyM.Client.main(Client.java:44)

谁能帮我解决下,谢谢了


an350901450 edited on 2008-12-30 14:50


flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923