corba书上的例子的疑问。
现在是要解决server端的问题,编译都没能通过.程序如下:
// TestServer
import org.omg.CORBA.*; // Step 1
import org.omg.CosNaming.*;
public class TestServer {
public static void main(String args[]) {
try {
// Initialize the ORB
ORB orb = ORB.init(args, null); // Step 2
// Create the Test object
TestObject impl = new TestObject(); // Step 3
// Connect to the Naming Service
org.omg.CORBA.Object contextObj = // Step 4
orb.resolve_initial_references("NameService");
NamingContext rootContext = NamingContextHelper.narrow(contextObj);
// Insert the Test object reference in the Naming Service
NameComponent name = new NameComponent("Test", ""); // Step 5
NameComponent path[] = {
name
};
// Show that the server is doing something
System.out.println("TestServer started;" +
"waiting for client contact...");
rootContext.rebind(path, impl);
// Wait for incoming requests
java.lang.Object sync = new java.lang.Object(); // Step 6
synchronized (sync) {
sync.wait();
}
} catch (Exception e) {
System.err.println("Exception : " + e);
e.printStackTrace(System.err);
}
}
}
编译错误提示如下:
D:\corba\TestServer.java:30: rebind(org.omg.CosNaming.NameComponent[],org.omg.CORBA.Object) in org.omg.CosNaming.NamingContextOperations cannot be applied to (org.omg.CosNaming.NameComponent[],TestObject)
rootContext.rebind(path, impl);
问题点数:20、回复次数:10Top
1 楼100geOK(OKOK)回复于 2003-07-04 11:49:35 得分 0
集中点就是在步骤5内的绑定上,我查了相关的NamingContext,NameComponent根本没有
rebind()方法,还有就是在书上所提到的生成的服务器框架应该为_TestImplBase.java
可是现在生成的框架是TestPOA.java,是不是JDK版本后面对框架的改动?请教各位了,刚
接触CORBA。。。Top
2 楼100geOK(OKOK)回复于 2003-07-04 14:47:03 得分 0
upTop
3 楼100geOK(OKOK)回复于 2003-07-08 09:00:44 得分 0
怎么没人来回答啊,郁闷~~~~~~~Top
4 楼xiaofeng_cxy(萧风)回复于 2003-07-08 09:12:44 得分 13
我也碰到这样的问题
不过我是idl2j生成java接口文件时用了一个参数
-oldImplBase 就可以生成_TestImplBase的接口文件了。。
1.4以后生成就是***POA这样的文件,可是接口类型又和书上所说的不一样了,
所以你的rebind这个方法就会出错了。。Top
5 楼100geOK(OKOK)回复于 2003-07-08 12:04:26 得分 0
那该怎么解决呢?请明示啊Top
6 楼100geOK(OKOK)回复于 2003-07-08 15:26:54 得分 0
upupTop
7 楼100geOK(OKOK)回复于 2003-07-09 08:45:02 得分 0
高人哪去了,快来救命啊~~Top
8 楼cyicecream(为了升仙(星)到处UP)回复于 2003-07-11 08:50:16 得分 2
dingTop
9 楼ITMSC()回复于 2003-07-12 15:42:10 得分 5
需要知道你的TestObject定义是什么样的?
如果TestObject是从TestObject继承的。那么,可能少了如下几步。
..._var obj = impl._this();
rootContext.rebind(path, obj);
可能的话,把你的impl头文件发上来看看。
Top
10 楼tcby2000()回复于 2003-07-14 17:13:03 得分 0
楼主,如果你是用JDK1。4的话,我想可能的原因就是上面xiaofeng_cxy(萧风)说的那样。我按他说的重新编译了一下就可以了。非常高兴,问了很多人,都没解决。今天偶然来这里看看,想不到竟然有收获。Top




