我在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工作。 但我需要在两个项目中分开。
答案 0 :(得分:0)
尝试从@EJB
中删除此注释dao
,因为这不是EJB。
答案 1 :(得分:0)
每个模块都有自己的类加载器,因此类的可见性仅限于每个模块。您需要使用接口创建一个jar并放入EAR的lib
目录中。请参阅Class Loading in AS7中的详情,例如:
您需要创建一个标准的Java项目来存储业务接口。部署程序集:
在项目浏览视图中,您会看到:
答案 2 :(得分:0)
这很简单。该错误告诉您引用接口而不是实现。
所以请确保&#34; PessoaFisicaDAO&#34;是带有@Remote或@LocalBean批注的接口
@EJB
private PessoaFisicaDAO dao;