java - 如何从远程无状态 session bean 实现接口(interface)?

标签 java jakarta-ee netbeans glassfish-3

我正在编写一个项目,并尝试应用多层架构。 现在我有 2 个 EJB、业务和持久性以及一个共享 jar。由于功能要求,持久性必须是可替换的。我制作了一个名为 IPersistence 的接口(interface)。 然后,我在持久性 EJB 中创建了一个名为“persistence”的远程 session bean,并将远程接口(interface)放入共享库中。现在,我需要使用业务注入(inject)来调用 IPersitence。我怎样才能做到这一点?也许整个想法都是错误的。我需要一些建议。

谢谢!

最佳答案

这是一个简单的示例,其中您有一个汽车存储库/DAO,它通过不暴露其是否存储在数据库、文件、XML 等中的方式从业务逻辑中抽象出持久性。然后,业务类注入(inject)一个实例,以便能够- 在本例中 - 保存到数据库。但是,您可以创建其他类来实现 CarRepository,并提供其他方法来在应用程序中保存数据,而无需触及代码的其他部分。

持久层

存储库/DAO 接口(interface)

@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
}

关于java - 如何从远程无状态 session bean 实现接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11170896/

相关文章:

java - UFT-启动Java应用程序

java - System.getProperty ("line.separator"之间的区别;和 "\n"?

java - 当我什至没有部署 Web 应用程序时,为什么会看到 HttpResponseCode '200'?

java - ServiceLoader + EJB注入(inject)

eclipse - Ubuntu + Eclipse 4.2 - 深色主题 - 如何使侧边栏背景变暗?

java - 如何为 Cobol copybook 生成 java~jrecord 代码

java - 每个 DAO 中的 EntityManager 配置

java - org.apache.lucene.index.IndexNotFoundException : no segments* file found in org. apache.lucene.store.RAMDirectory

java - 我使用Netbeans 8.2和mysql查询浏览器1.1.20.build成功,错误说源代码不兼容

java - 如何让Java应用程序尽可能小?