CORBA 名前空間上にオブジェクト階層を構築したいので、このチュートリアルを試しました
http://docs.oracle.com/javase/7/docs/technotes/guides/idl/jidlNaming.html
NameClient.java のコンパイルに成功し、localhost で orbd を起動して、テストを実行しました。次の例外で失敗しました。
java.lang.ClassCastException: org.omg.CosNaming._NamingContextStub cannot be cast to org.omg.CosNaming.NamingContextExt
at NameClient.main(NameClient.java:24)
NameClient クラスのソース コード:
import java.util.Properties;
import org.omg.CORBA.*;
import org.omg.CosNaming.*;
public class NameClient
{
public static void main(String args[])
{
try {
Properties props = new Properties();
props.put("org.omg.CORBA.ORBInitialPort", "1050");
props.put("org.omg.CORBA.ORBInitialHost", "localhost");
ORB orb = ORB.init(args, props);
NamingContextExt ctx =
NamingContextExtHelper.narrow(orb.resolve_initial_references(
"NameService"));
org.omg.CORBA.Object objref = ctx;
NameComponent name1[] = ctx.to_name("plans");
ctx.rebind(name1, objref);
System.out.println("plans rebind successful!");
NameComponent name2[] = ctx.to_name("Personal");
NamingContextExt ctx2 = (NamingContextExt)ctx.bind_new_context(name2);
System.out.println("New naming context, Personal, added!");
NameComponent name3[] = ctx.to_name("schedule");
ctx2.rebind(name3, objref);
System.out.println("schedule rebind successful!");
NameComponent name4[] = ctx.to_name("calendar");
ctx2.rebind(name4, objref);
System.out.println("calendar rebind successful!");
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
}
この例はうまくいくはずではありませんか? このエラーを渡す方法はありますか?
助けてくれてありがとう。