【发布时间】:2016-09-30 11:01:36
【问题描述】:
我在通过 JNDI 在 Pojo 中调用 EJB 时遇到 ClassCastException。我使用 Oracle Weblogic Server 10.3.6 (EJB 3.0)。
我的结构:
-
app.ear
- 库
- 接口.jar
- MyBeanInterface.java
- 接口.jar
- ejb.jar
- MyBeanImpl.java
- webapp.war
- Client.java
- WEB-INF
- web.xml
- 库
我的本地界面:
package mypackage;
@Local
public Interface MyBeanInterface {}
我的 EJB 类:
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>
我的例外:
查找本身有效。我得到一个参考。但是当我想使用 (MyBeanInterface) 进行投射时,出现以下错误:
无法将“class mypackage.MyBeanInterface_whjkp6_MyBeanImpl(由 weblogic.utils.classloaders.GenericClassLoader(id=28136) 的实例加载)”的实例强制转换为“interface mypackage.MyBeanInterface(由 weblogic.utils 的实例加载。 classloaders.GenericClassLoader(id=28144))
我能做什么?
【问题讨论】: