0

嗨伙计们,首先:我的英语不好,但是..来吧:

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

}

这是我的 DAO Impl

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

好的

EJB 项目在您的类路径中添加JPA 项目。好的

没有错误。但是在部署中:

原因:org.jboss.as.server.deployment.DeploymentUnitProcessingException:JBAS014544:没有找到类型为“br.com.processo.dao.PessoaFisicaDAO”接口的 EJB,用于绑定 pacote.PessoaFisicaWS/dao

任何想法?

编辑

当我在我的 EJB 项目(WebService 的相同包)中添加(DAO 和您的 impl)时,它的工作原理。但我需要在两个项目中分开。

4

3 回答 3

0

这很简单。该错误告诉您引用接口而不是实现。

因此,请确保“PessoaFisicaDAO”是带有@Remote 或@LocalBean 注释的接口

@EJB
private PessoaFisicaDAO dao;
于 2014-10-30T20:04:56.943 回答
0

尝试从中删除此注释@EJBdao因为这不是 EJB。

于 2013-10-31T19:23:03.203 回答
0

每个模块都有自己的类加载器,因此类的可见性仅限于每个模块。您需要使用接口创建一个 jar,并将其放入libEAR 目录中。在 AS7中的类加载中查看更多信息,例如:

您需要创建一个标准的 java 项目来存储业务接口。部署程序集:

在此处输入图像描述

在项目资源管理器视图中,您会看到:

在此处输入图像描述

于 2013-10-31T19:23:46.753 回答