星期二, 五月 20, 2008

EJB 的java.lang.ClassCastException错误

Jboss发布EJB成功后,再java 类中后调用出现错误:
一下代码行引起了错误:
PortableRemoteObject.narrow(objref, JControllerHome.class);
objRef是通过lookup找到的JNDI引用。
JControllerHome.class是stateless session bean

错误:

java.lang.ClassCastException: $Proxy59 cannot be cast to org.omg.CORBA.Object
at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:212)
at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137)

原因,当前Java Class有两个.class文件分别放在不用的目录下,JBOSS 4.2x系列的classloader对class安全载入验证严格,引起了这种问题。

解决方法:删除掉一个不需要的.class的文件,就可以了