Java eclipse中的两个不同项目:(JPA和EJB)在EAR项目中(CDI问题)
首先,我的英语不好,但是。。来吧: 我在eclipse中有两个项目: JPA(带型号和dao) EJB(使用我的web服务) 和一个EAR项目(JPA+EJB)。我的设置:JBoss 7.1 AS 我的问题是:Java eclipse中的两个不同项目:(JPA和EJB)在EAR项目中(CDI问题),java,eclipse,jpa,jboss,ejb,Java,Eclipse,Jpa,Jboss,Ejb,首先,我的英语不好,但是。。来吧: 我在eclipse中有两个项目: JPA(带型号和dao) EJB(使用我的web服务) 和一个EAR项目(JPA+EJB)。我的设置:JBoss 7.1 AS 我的问题是: @Stateless @WebService --> THIS IS IN EBJ PROJECT public class PessoaFisicaWS implements Service { @EJB private PessoaFisicaDAO dao;
@Stateless
@WebService --> THIS IS IN EBJ PROJECT
public class PessoaFisicaWS implements Service {
@EJB
private PessoaFisicaDAO dao;
}
这是我的刀
@Stateless ->> THIS IS IN MY JPA PROJECT
public class JPAPessoaFisicaDAO extends JPAAbstractDAO<PessoaFisicaBean>
implements PessoaFisicaDAO {
public PessoaFisicaBean getPessoaFisicaByCPF(String cpf) {
TypedQuery<PessoaFisicaBean> query = manager.createQuery(
"SELECT p from PessoaFisicaBean p where p.cpf = :cpf",
PessoaFisicaBean.class);
query.setParameter("cpf", cpf);
return query.getSingleResult();
}
// with others impl
}
@Stateless->这在我的JPA项目中
公共类JPAPessoaFisicaDAO扩展了JPAAbstractDAO
实现PessoaFisicaDAO{
公共PessoaFisicaBean getPessoaFisicaByCPF(字符串cpf){
TypedQuery=manager.createQuery(
“从PessoaFisicaBean p中选择p,其中p.cpf=:cpf”,
PessoaFisicaBean.class);
query.setParameter(“cpf”,cpf);
返回query.getSingleResult();
}
//与其他人
}
嗯
EJB项目在类路径中添加JPA项目。嗯
没有错误。但在部署中:
原因:org.jboss.as.server.deployment.DeploymentUnitProcessingException:JBAS014544:未找到绑定pacote.pessoafiscaws/dao的“br.com.processo.dao.PessoaFisicaDAO”类型接口的EJB
有什么想法吗
编辑:
当我在我的EJB项目(WebService的同一个包)中添加(DAO和您的impl)时,它就工作了。
但是我需要在两个项目中分别使用。尝试从
dao
中删除此注释@EJB
,因为这不是一个EJB。每个模块都有自己的类加载器,因此类的可见性仅限于每个模块。您需要使用接口创建一个jar,并将其放入EAR的lib
目录中。请参阅中的更多信息,例如:
您需要为存储业务接口创建一个标准java项目。部署程序集:
在ProjectExplorer视图中,您可以看到:
这很简单。错误是告诉您引用接口而不是实现 所以请确保“PessoaFisicaDAO”是带有@Remote或@LocalBean注释的接口
@EJB
private PessoaFisicaDAO dao;
嗨,保罗。。谢谢你的回复。但这是一个网络服务。PS->i edit my first post..i add anotation@Stateless to public class JPAPessoaFisicaDAO | i edit my first post与您问题中的异常无关,但此注释也应删除。创建一个类并将这个注释放在那里,然后在
ejbjar.xml
中注册ejb。