从另一个耳朵交叉引用实体

时间:2010-01-18 18:10:19

标签: java ejb-3.0 ejb

我基本上拥有的是这个(我的真实域代码的模糊示例):

在CarDaoEar:

@Entity
public class Car {
//...
}

@Stateless
public class CarDao implements CarDaoRemote {
   @PersistenceContext( unitName = "carPersistenceUnit" )
   private EntityManger em;

   public void storeCar( Car car ) {
      em.persist( car );
   }

   public Car findCar( Car car ) {
     return em.find( Car.class, car.getID );
   }
}

@Remote
public interface CarDaoRemote {
   public void storeCar( Car car );

   public Car findCar( Car car );
}

在CarInventoryTimerEar中:

@Stateless
public class CarInventoryTimer {

   @EJB
   private CarDaoRemote _carDaoRemote;

   // do some stuff with _carDaoRemote...

}

所以问题是,如果我打包实体&使用CarInventoryTimerEar的dao bean然后app服务器抱怨我正在尝试再次部署实体 - 我理解这一点。但是,如果我没有包含类,我会得到一个ClassNotFoundException - 这也是有道理的。

我确信我不是第一个做类似事情的人 - 所以对你们所有的EJB专家来说,我做错了什么?我如何使这项工作?

TIA

2 个答案:

答案 0 :(得分:0)

如果我正确地读你,你就有一只耳朵跑在你想要在另一只耳朵里使用EJB的地方。您应该能够创建第一个可以包含在第二个中的客户端jar。这样第二只耳朵可以使用客户端jar而不是ClassNotFoundExceptions。

答案 1 :(得分:0)

我的解决方案(我不喜欢)包括Car& CarDaoRemote class& “代理”项目中的接口没有所有注释。然后我将CarInventoryTimerEar直接依赖于代理项目而不是dao项目。

我希望这有助于其他人。