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