EJB java.lang.ClassCastException

时间:2015-06-29 12:02:43

标签: java java-ee jpa ejb classloader

我将使用Eclipse和Glassfish作为Java EE的第一步。我创建了三个eclipse项目(JPA项目,EJB项目,Web项目)。我已经使用本地接口TestBeanLocal创建了一个本地EJB bean TestBean:

@Stateless
@LocalBean
class TestBean implements TestBeanLocal {
  @Override
  public void doSomething(List<JPAEntity> myEntities) {
    for(JPAEntity a : myEntities) {

    }
  }
}

和使用EJB的ManagedBean:

@MangagedBean
public class MyBean {
    @EJB
    private TestBeanLocal testBean;

    @PostConstruct
    private void init() {
       //load JPAEntity from Database
       List<JPAEntity> myEntities = ....
       testBean.doSomething(myEntities);
    }
}

我的问题是我在TestBean的for循环中得到了ClassCastException。

java.lang.ClassCastException: us.mypackage.jpa.JPAEntity cannot be cast to us.mypackage.jpa.JPAEntity

我发现另一个stackoverflow问题,说这个错误消息是因为两个不同的类加载器。我怎样才能解决这个问题?我可以告诉EJB使用我的webproject使用的同一个类加载器吗?

1 个答案:

答案 0 :(得分:0)

似乎实体罐位于战争和耳中 尝试从war库中删除实体jar 战争应该看到耳库文件 HTH