通过创建初始上下文并执行查找,可以使用RMI客户端访问远程对象
|
我正在尝试从Weblogic 10服务器上的EJB查找PublicRepository类。这是一段代码:
/**
* RMI/IIOP clients should use this narrow function
*/
private static Object narrow(Object ref, Class c) {
return PortableRemoteObject.narrow(ref, c);
}
/**
* Lookup the EJBs home in the JNDI tree
*/
private static PublicRepository lookupHome() throws NamingException {
// Lookup the beans home using JNDI
Context ctx = getInitialContext();
try {
Object home = ctx.lookup(\"cea\");
return (PublicRepository) narrow(home, PublicRepository.class);
} catch(NamingException ne) {
System.out.println(\"The client was unable to lookup the EJBHome. Please make sure \");
System.out.println(\"that you have deployed the ejb with the JNDI name \"
+ \"cea\" + \" on the WebLogic server at \" + \"iiop://localhost:7001\");
throw ne;
}
}
private static Context getInitialContext() throws NamingException {
try {
// Get an InitialContext
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,
\"weblogic.jndi.WLInitialContextFactory\");
h.put(Context.PROVIDER_URL, \"iiop://localhost:7001\");
return new InitialContext(h);
} catch(NamingException ne) {
System.out.println(\"We were unable to get a connection to the WebLogic server at \" + \"iiop://localhost:7001\");
System.out.println(\"Please make sure that the server is running.\");
throw ne;
}
}
但是,我得到了Cast Exception:
Exception in thread \"main\" java.lang.ClassCastException
at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(Unknown Source)
at javax.rmi.PortableRemoteObject.narrow(Unknown Source)
at vrd.narrow(vrd.java:67)
at vrd.lookupHome(vrd.java:80)
at vrd.main(vrd.java:34)
Caused by: java.lang.ClassCastException: weblogic.corba.j2ee.naming.ContextImpl
... 5 more
当我使用上述代码检索要在客户端应用程序中使用的特定类时,我是否正确?如何摆脱强制转换异常?
没有找到相关结果
已邀请:
3 个回复
古擅坛犯
懊毁暗
惜堡沁戚