Entrei um problema no Jboss 7 AS / 6 EAP onde o WELD reclamou ainda no deploy da aplicão que existiam ambiguidade em uma injeção, devido a presença de dois produtores capazes de instanciar a mesma classe (no meu caso o FacesContext do JSF). Veja abaixo o erro:
org.jboss.weld.exceptions.DeploymentException: WELD-001409 Ambiguous dependencies for type
[FacesContext] with qualifiers [@Default] at injection point...
|
Para resolver precisei desativar um dos produtores. Isso foi feito criando uma Extension que veta o funcionamento de um produtor, no caso abaixo, do produtor org.apache.myfaces.extensions.cdi.jsf.impl.util.FacesInformationProducer do Apache MyFaces. Veja abaixo:
import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.ProcessAnnotatedType;
import org.apache.myfaces.extensions.cdi.jsf.impl.util.FacesInformationProducer;
public class FacesProducerSolverExtension implements Extension {
public void observe(@Observes ProcessAnnotatedType p){
if(p.getAnnotatedType().getJavaClass()
.equals(FacesInformationProducer.class)){
p.veto();
}
}
}
|
Para que esse extension funcione, ele deve ser registrado no arquivo de texto WEB-INF/classes/META-INF/services/javax.enterprise.inject.spi.Extension no seu WAR que ficará com o seguinte conteúdo:
br.gov.demoiselle.destdemoiselle.cgpolact.cdi.extension.FacesProducerSolverExtension |