【问题标题】:How can implement an Interface from a Remote stateless session bean?如何从远程无状态会话 bean 实现接口?
【发布时间】:2012-06-24 01:13:55
【问题描述】:
我正在编写一个项目并尝试应用多层架构。
现在我有 2 个 EJB、业务和持久性以及一个共享 jar。由于功能要求,持久性必须是可替换的。我制作了一个名为 IPersistence 的接口。
然后,我在持久性 EJB 中创建了一个名为“持久性”的远程会话 bean,并将远程接口放入共享库中。现在,我需要使用来自业务的注入来调用 IPersitence。我怎样才能做到这一点?也许整个想法是错误的。我需要一些建议。
谢谢!
【问题讨论】:
标签:
java
jakarta-ee
netbeans
glassfish-3
【解决方案1】:
这是一个简单的例子,你有一个汽车存储库/DAO,它通过不公开它是否存储在数据库、文件、XML 等中来从业务逻辑中抽象出持久性。然后业务类注入一个实例以便能够to - 在这种情况下 - 保存到数据库。但是,您可以创建实现 CarRepository 的其他类,并提供其他方法在您的应用程序中保存数据,而无需触及代码的其他部分。
持久层
存储库/DAO 接口
@Local
public interface CarRepository {
List<Car> findAllCars();
// Many other methods
}
存储库(领域驱动设计)或数据访问对象
@Stateless
public class CarSqlRepository implements CarRepository {
@PersistenceContext(unitName = "MyUnit")
private EntityManager entityManager;
public List<Car> findAllCars() {
}
// Many other methods
}
服务/业务层
@Stateless
public class CarService {
@Inject
private CarRepository carRepository;
public List<Car> findAllCars() {
return carRepository.findAllCars();
}
// Many other methods
}