Pessoal segue minha arquitetura:
[img]https://www.filepicker.io/api/file/tUMhw14dSbiLa2g4KeSZ[/img]
projetos no Eclipse:
[img]http://s23.postimg.org/pjc75dfjd/img.jpg[/img]
setup:
Java 7
JBoss AS 7
Agora o problema:
Eu tenho o seguinte EJB/WebService
@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();
}
}
e agora minha camada de persistencia (tudo isso aqui ta no projeto JPA.
public interface DAO<T> {
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();
}
public interface PessoaFisicaDAO extends DAO<PessoaFisicaBean> {
public PessoaFisicaBean getPessoaFisicaByCPF(String cpf);
}
implemetacões:
public abstract class JPAAbstractDAO<T> implements DAO<T> {
@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);
}
}
@Stateless
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();
}
@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);
}
}
}
Tudo isso vai empacotado num EAR. E quando eu vou fazer o deploy no JBoss o seguinte erro aparece:
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

