3
respostas

Erro ao implementar interfaces

Quando eu tento implementar um EJB que implemente uma interface, por exemplo:

@Stateless
public class MeuEJB implements IMeuEJB {

    @PersistenceContext
    private EntityManager em;

     @Override
      public void myMethod(){}

}

Ocorre a seguinte exception no deploy: Failed to start service Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type TesteJPA with qualifiers @Default at injection point [UnbackedAnnotatedField] @Inject com.davidlaurentino.nia.rest.HelloWorld.testeJPA at com.davidlaurentino.nia.rest.HelloWorld.testeJPA

Pesquisando na documentação da Oracle, entendi que para implementar uma interface eu preciso declará-la local, dessa forma: @Stateless @Local(IMeuEJB.class) public class MeuEJB implements IMeuEJB { ...

Não sei se entendi direito, mas tentei desta forma mas persiste o mesmo erro. Já tentei rodar com o Wildfly 9 e 10, sem sucesso. Se eu declaro o bean sem implementar nenhuma interface, ex:

@Stateless public class MeuEJB { }

Tudo funciona corretamente e consigo injetar o EJB. Isso pode ser um problema com o servidor, é alguma limitação do EJB que impede a implementação de interfaces ou estou fazendo algo errado? Agradeço qualquer ajuda.

3 respostas

Desconsiderem a exception relatada acima, o correto seria:

Failed to start service Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type MeuEJB with qualifiers @Default at injection point [UnbackedAnnotatedField] @Inject com.davidlaurentino.nia.rest.HelloWorld.meuEJB at com.davidlaurentino.nia.rest.HelloWorld.meuEJB

Oi David,

tem como colocar a classe HelloWorld? parece que está dando problema nela.

abs

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software