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

时间:2013-10-31 19:15:03

标签: java eclipse jpa jboss ejb

Hy先生,先:我的英语不好,但是......来吧:

我在eclipse中有两个项目:

JPA(带模特&dao's) 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)ITS工作。 但我需要在两个项目中分开。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

每个模块都有自己的类加载器,因此类的可见性仅限于每个模块。您需要使用接口创建一个jar并放入EAR的lib目录中。请参阅Class Loading in AS7中的详情,例如:

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

enter image description here

在项目浏览视图中,您会看到:

enter image description here

答案 2 :(得分:0)

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

所以请确保&#34; PessoaFisicaDAO&#34;是带有@Remote或@LocalBean批注的接口

@EJB
private PessoaFisicaDAO dao;