Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Injeção de DataSource sem JPA

Tenho uma situação específica na qual preciso injetar o datasource no DAO, porém, não posso usar JPA por questões de especificação do projeto. Isto é, todo SQL é feito no tapa, mas gostaria de injetar, pelo menos a conexão. Eu sei que existe a anotação @Resource, mas não está funcionando. Estou tentando conforme abaixo

@Stateless
public class ReportDAO {

    @Resource(lookup="java:/DataSourceDS") 
    private DataSource ds;

Criei o datasource no WildFly conforme descrito na aula. Quando faço deploy recebo mensagem:

15:18:26,998 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 2) WFLYCTL0013: Operation ("full-replace-deployment") failed - address: ([]) - failure description: {
    "WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.jboss.datasources.ExampleDS"],
    "WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.naming.context.java.module.manager.manager.DefaultDataSource is missing [jboss.naming.context.java.jboss.datasources.ExampleDS]"]
}

Notem que não faço referência alguma ao datasource ExampleDS.

O que poderia ser?

Um detalhe: não tenho persistence.xml na minha aplicação, é necessário para conseguir injetar o DataSource com @Resource?

2 respostas
solução!

Oi, Fabio. Tudo certo? Você poderia fazer o teste passando o nome e o JNDI que você configurou no wildfly?

@Resource(name="", lookup="") 
    private DataSource ds;

Obrigado João Victor!

Funcionou perfeitamente.

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