2015-07-07 4 views
-1

я следующее исключение:WELD-001409 Неоднозначные зависимости для типа [SeamTransaction]

9:12:29,190 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-10) MSC000001: Failed to start service jboss.deployment.unit."SisneGym-ear.ear".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."SisneGym-ear.ear".WeldStartService: Failed to start service 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1936) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_67] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_67] 
    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_67] 
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001409 Ambiguous dependencies for type [SeamTransaction] with qualifiers [@DefaultTransaction] at injection point [[field] @Inject @DefaultTransaction private org.jboss.seam.faces.transaction.TransactionPhaseListener.transaction]. Possible dependencies [[Managed Bean [class org.jboss.seam.transaction.HibernateTransaction] with qualifiers [@Any @DefaultTransaction], Managed Bean [class org.jboss.seam.transaction.EntityTransaction] with qualifiers [@Any @DefaultTransaction], Managed Bean [class org.jboss.seam.transaction.DefaultSeamTransaction] with qualifiers [@Any @DefaultTransaction]]] 
    at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:318) 
    at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:284) 
    at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:147) 
    at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:167) 
    at org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:386) 
    at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:371) 
    at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:379) 
    at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:64) 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1980) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1] 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1913) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1] 
    ... 3 more 

19:12:29,228 INFO [org.jboss.as.server] (Controller Boot Thread) JBAS018559: Implementado "postgresql-9.3-1103.jdbc4.jar" (runtime-name : "postgresql-9.3-1103.jdbc4.jar") 
19:12:29,228 INFO [org.jboss.as.server] (ServerService Thread Pool -- 26) JBAS018559: Implementado "SisneGym-ear.ear" (runtime-name : "SisneGym-ear.ear") 
19:12:29,230 INFO [org.jboss.as.controller] (Controller Boot Thread) JBAS014774: Reporte del estatus del servicio 
JBAS014777: Servicios que no lograron iniciar:  service jboss.deployment.unit."SisneGym-ear.ear".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."SisneGym-ear.ear".WeldStartService: Failed to start service 

Я использую EJB 3.1, JPA 2.0 на JBoss EAP 6.3.3.GA Структура proyect является:

PrincipalProyect (pom) 
    Proyect-Api(jar) 
    Proyect-EJB(jar) 
    Proyect-Web(war) 

1.-

Типовая библиотека Код здесь:

@Named 
@Dependent 
public abstract class GenericDAOImpl<E, ID extends Serializable, F> implements GenericDAO<E, ID, F> { 

private final Class<E> persistentClass; 

protected EntityManager entityManager; 

protected CriteriaBuilder cb; 

protected GenericDAOImpl(Class<E> persistentClass) { 
    this.persistentClass = persistentClass; 
} 

public Class<E> getPersistentClass() { 
    return persistentClass; 
} 

public EntityManager getEntityManager() { 
    return entityManager; 
} 

public CriteriaBuilder getCb() { 
    return cb; 
} 

public E save(E entity) { 
    entityManager.persist(entity); 
    entityManager.flush(); 

    return entity; 
} 

public E update(E entity) { 
    entityManager.merge(entity); 
    entityManager.flush(); 

    return entity; 
} 

public void remove(E entity) { 
    entityManager.remove(entityManager.merge(entity)); 
    entityManager.flush(); 
} 

public E findById(ID id) { 
    return entityManager.find(persistentClass, id); 
} 

@SuppressWarnings("unchecked") 
public List<E> findAll() { 
    return entityManager.createQuery(
      "select e from " + persistentClass.getName() + " e") 
      .getResultList(); 
} 

public List<E> findByCriteria(F filter) {  
    if (filter != null) { 
     CriteriaQuery<E> criteria = this.getQuery(filter); 
     TypedQuery<E> query = entityManager.createQuery(criteria); 

     return query.getResultList(); 
    } else { 
     return this.findAll(); 
    } 
} 

public List<E> findByCriteriaPagination(F filter, int first, int pageSize) { 
    TypedQuery<E> query = null; 

    if (filter != null) { 
     CriteriaQuery<E> criteria = this.getQuery(filter); 
     query = entityManager.createQuery(criteria);    
    } else { 
     query = entityManager.createQuery(
      "select e from " + persistentClass.getName() + " e", persistentClass); 
    } 

    if (pageSize >= 0) { 
     query.setMaxResults(pageSize); 
    } 

    if (first >= 0) { 
     query.setFirstResult(first); 
    } 

    return query.getResultList(); 
} 

public Long count() { 
    return (Long) entityManager.createQuery(
      "select count(e) from " + persistentClass.getName() + " e") 
      .getSingleResult(); 
} 

public Long countWithFilter(F filter) { 
    CriteriaQuery<Long> cq = this.cb.createQuery(Long.class); 
    Root<E> root = cq.from(persistentClass); 

    GenericQuery query = this.getConditions(filter, cq, root); 

    cq.select(this.cb.count(root)); 

    if (query.getConditions() != null) cq.where(query.getConditions()); 

    return entityManager.createQuery(cq).getSingleResult(); 
} 

protected abstract <T> GenericQuery getConditions(F filter, CriteriaQuery<T> cq, Root<E> root); 

private CriteriaQuery<E> getQuery(F filter) { 
    CriteriaQuery<E> cq = this.cb.createQuery(persistentClass); 
    Root<E> root = cq.from(persistentClass); 
    cq.select(root); 

    GenericQuery query = this.getConditions(filter, cq, root); 

    if (query.getConditions() != null) 
     cq.where(query.getConditions()); 

    if (query.getOrderBy() != null) 
     if (query.getOrderBy().size() > 0) 
      cq.orderBy(query.getOrderBy()); 

    return cq; 
} 

protected abstract CriteriaQuery<E> createFilter(F filter); 
} 

2.-

public interface GenericDAO<E, ID extends Serializable, F> { 

public E save(E entity); 

public E update(E entity); 

public void remove(E entity); 

public E findById(ID id); 

public List<E> findAll(); 

public List<E> findByCriteria(F filter); 

public List<E> findByCriteriaPagination(F filter, int first, int pageSize); 

public Long count(); 

public Long countWithFilter(F filter); 

} 

3.-

public interface ClienteDAO extends GenericDAO<Cliente, Long, FiltroCliente> { 

public Cliente allocateLockerToClient(Cliente client, Casillero locker) throws SisneGymPersistenceException; 
public ReservaEvaluacionFisica reservePhysicalEvaluation(ReservaEvaluacionFisica reserve)throws SisneGymPersistenceException; 

} 

4.-

@Stateless 
public abstract class BaseDAOImpl<E, ID extends Serializable, F> extends GenericDAOImpl<E, ID, F> { 

@PersistenceContext(name = "SisneGym-pu") 
private EntityManager em; 

protected BaseDAOImpl(Class<E> persistentClass) { 
    super(persistentClass); 
} 

@Produces 
public EntityManager getEntityManager() { 
    return em; 
} 

@PostConstruct 
void configuration() { 
    super.entityManager = this.em; 
} 
} 

5.-

@Stateless 
@DaoServiceType 
public class ClienteDAOImpl extends BaseDAOImpl<Cliente, Long, FiltroCliente> implements ClienteDAO { 


@Override 
public Cliente allocateLockerToClient(Cliente client, Casillero locker) 
     throws SisneGymPersistenceException { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public ReservaEvaluacionFisica reservePhysicalEvaluation(
     ReservaEvaluacionFisica reserve) 
     throws SisneGymPersistenceException { 
    // TODO Auto-generated method stub 
    return null; 
} 

public ClienteDAOImpl() { 
    super(Cliente.class); 
} 

@Override 
protected <T> GenericQuery getConditions(FiltroCliente filter, 
     CriteriaQuery<T> cq, Root<Cliente> root) { 
    return null; 
} 

@Override 
protected CriteriaQuery<Cliente> createFilter(FiltroCliente filter) { 
    return null; 
} 
} 

6.-

@Qualifier 
@Target({ TYPE, METHOD, PARAMETER, FIELD }) 
@Retention(RUNTIME) 
@Documented 
public @interface DaoServiceType { 

} 

Инжектируйте DAO объект на EJB

7.-

@Stateless(name = "evaluacionSessionBean") 
@Named(value = "evaluacionService") 
public class EvaluacionSessionBeanImpl implements EvaluacionSessionLocal, EvaluacionSessionRemote { 


@Inject 
private Logger log; 

@Inject 
@DaoServiceType 
ClienteDAO clienteDAO; 

public EvaluacionSessionBeanImpl(){ 
    super(); 
} 

@Override 
public void createFichaEvaluacion(FichaEvaluacion fichaEvaluacion) { 
    log.info("lalla"); 
    try { 
     clienteDAO.allocateLockerToClient(null, null); 
    } catch (SisneGymPersistenceException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    //fichaEvaluacionFisicaDAO.save(fichaEvaluacion); 
} 

@Override 
public void updateFichaEvaluacion(FichaEvaluacion fichaEvaluacion) { 

} 

.... 

Пожалуйста, любая идея, чтобы решить эту проблему? спасибо

Carlos

ответ

1

Вы должны удалить все Seam зависимости от вашего проекта. Seam 3 был прекращен почти 3 года назад в пользу Apache DeltaSpike.

Большинство функций, которые были в Seam, теперь находятся в Deltaspike

Смежные вопросы