Перекрестная ссылка на сущность из другого уха - PullRequest
0 голосов
/ 18 января 2010

То, что я в основном имею, это (обфусцированный пример моего реального кода домена):

В 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...

}

Итакпроблема в том, что если я упаковываю компонент Entity & dao с CarInventoryTimerEar, то сервер приложений жалуется, что я пытаюсь развернуть объект снова - я понимаю это.Однако, если я не включаю классы, я получаю ClassNotFoundException - это также имеет смысл.

Я уверен, что я не первый, кто делает что-то похожее на это - так что всем вам, экспертам EJB, что я делаю не так?Как мне сделать эту работу?

TIA

Ответы [ 2 ]

0 голосов
/ 18 января 2010

Мое решение (которое мне не нравится) - включить класс и интерфейс Car & CarDaoRemote в прокси-проект, лишенный всех аннотаций. Затем CarInventoryTimerEar зависит от проекта прокси, а не от проекта dao.

Надеюсь, это поможет кому-то еще.

0 голосов
/ 18 января 2010

Если я правильно читаю, у вас одно ухо работает, и вы хотите использовать EJB в другом. Вы должны быть в состоянии создать клиентскую банку из первой, которую вы можете включить в свою вторую. Таким образом, второе ухо может использовать клиентскую флягу и не получать ClassNotFoundExceptions.

...