代码之家  ›  专栏  ›  技术社区  ›  javamonkey79

从另一个ear交叉引用实体

  •  0
  • javamonkey79  · 技术社区  · 15 年前

    @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的类,这也是有意义的。

    短暂性脑缺血发作

    2 回复  |  直到 15 年前
        1
  •  0
  •   SOA Nerd    15 年前

    如果我没看错的话,你有一只耳朵在你想在另一只耳朵里使用ejb的地方。您应该能够从第一个客户机jar创建一个客户机jar,并将其包含在第二个客户机jar中。这样,第二个ear就可以使用客户机jar而不获取ClassNotFoundExceptions。

        2
  •  0
  •   javamonkey79    15 年前

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