【发布时间】:2014-09-30 14:41:41
【问题描述】:
我正在尝试将 Morphia 用作我使用 Java EE 创建的 Web 服务的一部分。
我阅读了有关他们的 DAO 支持的 morphia 文档,其中说:
在 web 应用环境中,我们可能会使用依赖注入框架(如 Guice 或 Spring)将依赖注入到 DAO 中,然后将 DAO 注入到控制器中,因此控制器永远不会直接处理 gritty详情。
因此,我有一个标有 @Stateless 注释的 EJB(以便我可以在需要时注入)扩展 BasicDAO morhpia 提供如下:
@Stateless
public class PlayerDAO extends BasicDAO<Player, ObjectId>{
@EJB
ConnectionFactory factory;
public PlayerDAO(){};
public PlayerDAO(Morphia morphia, MongoClient mongo){
super(mongo, morphia, "testdb");
}
}
我的问题是我需要提供接受Morphia 和MongoClient 参数并调用super 构造函数的构造函数,这意味着我还需要提供一个无参数构造函数来满足Java EE 的要求.
当我添加这个构造函数时,NetBeans 显示错误:
公共 PlayerDAO(){};
构造函数 BasicDAO.BasicDAO(Datastore) 不适用
(实际参数列表和形式参数列表的长度不同)
构造函数 BasicDAO.BasicDAO(MongoClient,Morphia,String) 不适用
(实际参数列表和形式参数列表的长度不同)
构造函数 BasicDAO.BasicDAO(Class,Datastore) 不适用
(实际参数列表和形式参数列表的长度不同)
构造函数 BasicDAO.BasicDAO(Class,MongoClient,Morphia,String) 不适用
(实际参数列表和形式参数列表的长度不同)
有没有办法绕过这种行为,或者我应该采取不同的方法来将 MongoDB 用作 java ee Web 服务的一部分?
【问题讨论】:
标签: java mongodb jakarta-ee ejb morphia