我基本上拥有的是这个(我的真实域代码的模糊示例):
@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 );
}
@Stateless
public class CarInventoryTimer {
@EJB
private CarDaoRemote _carDaoRemote;
// do some stuff with _carDaoRemote...
}
所以问题是,如果我打包实体&使用CarInventoryTimerEar的dao bean然后app服务器抱怨我正在尝试再次部署实体 - 我理解这一点。但是,如果我没有包含类,我会得到一个ClassNotFoundException - 这也是有道理的。
我确信我不是第一个做类似事情的人 - 所以对你们所有的EJB专家来说,我做错了什么?我如何使这项工作?
TIA
答案 0 :(得分:0)
如果我正确地读你,你就有一只耳朵跑在你想要在另一只耳朵里使用EJB的地方。您应该能够创建第一个可以包含在第二个中的客户端jar。这样第二只耳朵可以使用客户端jar而不是ClassNotFoundExceptions。
答案 1 :(得分:0)
我的解决方案(我不喜欢)包括Car& CarDaoRemote class& “代理”项目中的接口没有所有注释。然后我将CarInventoryTimerEar直接依赖于代理项目而不是dao项目。
我希望这有助于其他人。