[FECHADO] Como recuperar uma conexão (objeto Connection) de uma datasource criado no Glassfish?

Bom dia Pessoal!

Alguém sabe como faço para recuperar um objeto Connection de uma Datasource criada no glassfish v2?

Encontrei na net um procedimento que utiliza o método lookup da classe InitialContext, mas estou obtendo uma javax.naming.NameNotFoundException ao executar o método lookup (initialContext.lookup(“java:comp/env/jdbc/SisbenDS”).

Quando faço uma conexão direto via JDBC, consigo obter uma conexão sem problemas, mas através desse procedimento que utiliza o método lookup o sistema lança a exceção do NameNotFound. Será que estou esquecendo de alguma coisa? alguém poderia me dar uma luz? :idea:

Erro:

javax.naming.NameNotFoundException: SisbenDS not found
        at com.sun.enterprise.naming.TransientContext.doLookup(TransientContext.java:216)
        at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:188)

web.xml

<web-app ... >

  ...

    <resource-ref>
        <res-ref-name>jdbc/SisbenDS</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>

 ...

</web-app>

sun-resources.xml

<resources>
    <!--Desenvolvimento  -->
   
    <jdbc-resource enabled="true" jndi-name="SisbenDS" object-type="user" pool-name="jtds_sqlPool_sisben"/>
    <jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="net.sourceforge.jtds.jdbcx.JtdsDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="jtds_sqlPool_sisben" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.DataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
        <property name="serverName" value="ssp111"/>
        <property name="portNumber" value="1433"/>
        <property name="databaseName" value="dbsisben_des"/>
        <property name="User" value="****"/>
        <property name="Password" value="**"/>
        <property name="URL" value="jdbc:jtds:sqlserver://ssp111:1433/dbsisben_des"/>
        <property name="driverClass" value="net.sourceforge.jtds.jdbc.Driver"/>
        <property name="schema" value="dbo"/>
    </jdbc-connection-pool>   
</resources>

Método do Servlet que lança a exceção:


    public javax.sql.DataSource getDataSource() {
        InitialContext initialContext;
        try {
            initialContext = new InitialContext();

            DataSource datasource = (DataSource) initialContext.lookup("java:comp/env/jdbc/SisbenDS");
            return datasource;
        } catch (NamingException e) {
            e.printStackTrace();
        }
        return null;
    }

Agradeço antecipadamente qualquer ajuda.

Abraço
Wellington

Uau… Continuo tentando e sem sucesso… Editei o tópico para tentar deixar a dúvida mais clara…

Boa tarde pessoal!

Depois de quase 2 dias inteiros quebrando a cabeça, eis que surge a solução:

Usar apenas o nome do DataSource no lookup:
DataSource datasource = (DataSource) initialContext.lookup(“SisbenDS”);

Fica aí a solução para caso algum dia alguém enfrente algo parecido.

Abraços
Wellington M. Anastácio