Java eclipse中的两个不同项目:(JPA和EJB)在EAR项目中(CDI问题)

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;

首先,我的英语不好,但是。。来吧:

我在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 ->> 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。