java CORBA中的坏参数
当我用Java编写客户机-服务器聊天程序时,遇到了坏参数错误。第一个代码段是服务器java CORBA中的坏参数,java,client,corba,Java,Client,Corba,当我用Java编写客户机-服务器聊天程序时,遇到了坏参数错误。第一个代码段是服务器 //Server.java try { ORB orb = ORB.init(args, null); POA poa = POAHelper.narrow(orb .resolve_initial_references("RootPOA")); poa.the_POAManager().activate();
//Server.java
try {
ORB orb = ORB.init(args, null);
POA poa = POAHelper.narrow(orb
.resolve_initial_references("RootPOA"));
poa.the_POAManager().activate();
ServerImpl s = new ServerImpl(port);
System.out.println(port);
org.omg.CORBA.Object obj = poa.servant_to_reference(s);
Server r = ServerHelper.narrow(obj);
// get reference to root naming context
org.omg.CORBA.Object ns = orb
.resolve_initial_references("NameService");
NamingContextExt nc = NamingContextExtHelper.narrow(ns);
// bind the Object Reference in Naming
String name = "Chat";
NameComponent path[] = nc.to_name(name);
nc.rebind(path, r);
System.out.println("Waiting for clients ... ");
orb.run();
} catch (Exception e) {
e.printStackTrace();
}
这是我的客户
//Client.java
try {
ORB orb = ORB.init(args, null);
// get reference to root naming context
org.omg.CORBA.Object ns = orb
.resolve_initial_references("NameService");
NamingContextExt nc = NamingContextExtHelper.narrow(ns);
// lookup name
String name = "Chat";
org.omg.CORBA.Object obj = nc.resolve_str(name);
Client c = ClientHelper.narrow(obj);
} catch (Exception e) {
//System.err.println(e.getMessage());
e.printStackTrace();
}
我已经启动了我的orbd和Server.java。除了客户,一切都很好。错误为org.omg.BAD_PARAM vmcid 0x0次要代码:0已完成:否,发生在行Client c=ClientHelper.窄(obj)处
我已经和这个bug斗争了3天了。有什么解决办法吗?谢谢你,我真的很感谢你的帮助 问题在于,您正在将
服务器
对象绑定到服务器代码中的名称服务中,但是您的客户端代码试图将其缩小为客户端
类型。这些类型不兼容
改为更改客户端代码以执行此操作:
Server s = ServerHelper.narrow(obj);
客户端和服务器不需要两个单独的IDL接口。只需创建一个服务器实现的对象,并让客户端调用它。问题是您正在将
服务器
对象绑定到服务器代码中的名称服务中,但客户端代码试图将其缩小为客户端
类型。这些类型不兼容
改为更改客户端代码以执行此操作:
Server s = ServerHelper.narrow(obj);
客户端和服务器不需要两个单独的IDL接口。只需创建一个服务器实现的,并让客户端调用它