Pessoal segue minha arquitetura:
projetos no Eclipse:
setup:
Java 7
JBoss AS 7
Agora o problema:
Eu tenho o seguinte EJB/WebService
[code]@Stateless
@WebService
public class PessoaFisicaWS implements Service {
@EJB
private PessoaFisicaDAO dao;
@WebMethod(operationName = "adicionarFisica")
public boolean addPessoaFisica(@WebParam(name = "nome") String nome,
@WebParam(name = "cpf") String cpf,
@WebParam(name = "conjugue") String nomeConjugue,
@WebParam(name = "pai") String nomePai,
@WebParam(name = "mae") String nomeMae,
@WebParam(name = "rg") String numeroRegistroGeral) {
try {
PessoaFisicaBean fisica = new PessoaFisicaBean();
fisica.setNome(nome);
fisica.setCpf(cpf);
fisica.setNomeConjugue(nomeConjugue);
fisica.setNomePai(nomePai);
fisica.setNomeMae(nomeMae);
fisica.setNumeroRegistroGeral(numeroRegistroGeral);
dao.add(fisica);
System.out.println("RENAN FALOU!");
return true;
} catch (Exception exception) {
return false;
}
}
@WebMethod(operationName = "removerFisica")
public boolean removePessoaFisica(@WebParam(name = "cpf") String cpf) {
try {
PessoaFisicaBean bean = getPessoa(cpf);
dao.delete(bean);
return true;
} catch (Exception exception) {
return false;
}
}
private PessoaFisicaBean getPessoa(String cpf) throws Exception {
return dao.getPessoaFisicaByCPF(cpf);
}
@WebMethod(operationName = "atualizarFisica")
public boolean updatePessoaFisica(@WebParam(name = "nome") String nome,
@WebParam(name = "cpf") String cpf,
@WebParam(name = "conjugue") String nomeConjugue,
@WebParam(name = "pai") String nomePai,
@WebParam(name = "mae") String nomeMae,
@WebParam(name = "rg") String numeroRegistroGeral) {
try {
PessoaFisicaBean fisica = findPessoaFisica(cpf);
fisica.setNome(nome);
fisica.setCpf(cpf);
fisica.setNomeConjugue(nomeConjugue);
fisica.setNomePai(nomePai);
fisica.setNomeMae(nomeMae);
fisica.setNumeroRegistroGeral(numeroRegistroGeral);
dao.update(fisica);
return true;
} catch (Exception exception) {
return false;
}
}
@WebMethod(operationName = "procurarFisica")
public PessoaFisicaBean findPessoaFisica(@WebParam(name = "cpf") String cpf) {
try {
PessoaBean bean = getPessoa(cpf);
PessoaFisicaBean fisica = dao.get(bean.getId());
return fisica;
} catch (Exception exception) {
return null;
}
}
@Override
@WebMethod(operationName = "getPessoasFisica")
public List<PessoaFisicaBean> getListOfPessoaFisica() {
return dao.getAll();
}
}[/code]
e agora minha camada de persistencia (tudo isso aqui ta no projeto JPA.
[code]public interface DAO {
public void delete(T t) throws Exception;
public void update(T t) throws Exception;
public void add(T t) throws Exception;
public void refresh(T t);
public T get(Long id) throws Exception;
public void deleteById(Long id) throws Exception;
public void createOrUpdate(T t);
public List<T> getAll();
}[/code]
[code]public interface PessoaFisicaDAO extends DAO {
public PessoaFisicaBean getPessoaFisicaByCPF(String cpf);
}[/code]
implemetacões:
[code]public abstract class JPAAbstractDAO implements DAO {
@PersistenceContext
protected EntityManager manager;
@Override
public void delete(T t) throws Exception {
manager.remove(t);
}
@Override
public void add(T t) throws Exception {
manager.persist(t);
}
@Override
public void update(T t) throws Exception {
manager.merge(t);
}
@Override
public void refresh(T t) {
manager.refresh(t);
}
}[/code]
[code]@Stateless
public class JPAPessoaFisicaDAO extends JPAAbstractDAO
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();
}
@Override
public PessoaFisicaBean get(Long id) throws Exception {
return manager.find(PessoaFisicaBean.class, id);
}
@Override
public List<PessoaFisicaBean> getAll() {
List<PessoaFisicaBean> results = manager.createQuery(
"SELECT p from " + PessoaFisicaBean.class.getSimpleName()
+ " p").getResultList();
return results;
}
@Override
public void deleteById(Long id) throws Exception {
PessoaFisicaBean t = get(id);
manager.remove(t);
}
@Override
public void createOrUpdate(PessoaFisicaBean t) {
PessoaFisicaBean bean = getPessoaFisicaByCPF(t.getCpf());
if (bean != null) {
manager.merge(t);
} else {
manager.persist(t);
}
}
}[/code]
Tudo isso vai empacotado num EAR. E quando eu vou fazer o deploy no JBoss o seguinte erro aparece:
[quote]15:46:44,951 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC00001: Failed to start service jboss.deployment.subunit.“projectoEAR.ear”.“processoEJB.jar”.INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.subunit.“projectoEAR.ear”.“processoEJB.jar”.INSTALL: Failed to process phase INSTALL of subdeployment “processoEJB.jar” of deployment “projectoEAR.ear”
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_21]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_21]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011058: Failed to install component PessoaFisicaWS
at org.jboss.as.ee.component.deployers.ComponentInstallProcessor.deploy(ComponentInstallProcessor.java:100)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
… 5 more
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS014544: No EJB found with interface of type ‘br.com.processo.dao.PessoaFisicaDAO’ for binding pacote.PessoaFisicaWS/dao
at org.jboss.as.ejb3.deployment.processors.EjbInjectionSource.getResourceValue(EjbInjectionSource.java:88)
at org.jboss.as.ee.component.deployers.ComponentInstallProcessor.processBindings(ComponentInstallProcessor.java:245)
at org.jboss.as.ee.component.deployers.ComponentInstallProcessor.access$000(ComponentInstallProcessor.java:74)
at org.jboss.as.ee.component.deployers.ComponentInstallProcessor$1.handle(ComponentInstallProcessor.java:199)
at org.jboss.as.ee.component.ClassDescriptionTraversal.run(ClassDescriptionTraversal.java:54)
at org.jboss.as.ee.component.deployers.ComponentInstallProcessor.deployComponent(ComponentInstallProcessor.java:195)
at org.jboss.as.ee.component.deployers.ComponentInstallProcessor.deploy(ComponentInstallProcessor.java:93)
… 6 more[/quote]