我在通过JNDI调用Pojo中的EJB时遇到了ClassCastException。我使用Oracle Weblogic Server 10.3.6(EJB 3.0)。
我的结构:
我的本地界面:
package mypackage;
@Local
public Interface MyBeanInterface {}
我的EJB-Class:
package mypackage;
@Stateless(name = "MyBean")
public class MyBeanImpl implements MyBeanInterface {}
我的客户端(不是EJB):
MyBeanInterface bean = (MyBeanInterface) new InitialContext().lookup("java:comp/env/ejb/MyBean");
我的web.xml
<ejb-local-ref>
<ejb-ref-name>ejb/MyBean</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local>mypackage.MyBeanInterface</local>
</ejb-local-ref>
我的例外:
Lookup本身有效。我得到一个参考。但是当我想使用(MyBeanInterface)进行强制转换时,我收到以下错误:
无法将“class mypackage.MyBeanInterface_whjkp6_MyBeanImpl(由weblogic.utils.classloaders.GenericClassLoader(id = 28136))的实例加载”的实例强制转换为“interface mypackage.MyBeanInterface”的实例(由weblogic.utils实例加载。 classloaders.GenericClassLoader(ID = 28144))
我该怎么办?
答案 0 :(得分:0)
似乎这些类是由不同的类加载器加载的。可能的选择是:
1)确保类由相同的类加载器加载
2)使用反射
3)序列化然后反序列化
参见: