Ho bisogno di una connessione al database nel servizio Web Java implementato come bean di sessione e non sono sicuro di farlo correttamente.Uso corretto del pool di connessione JDBC (Glassfish)
ho creato una classe
public final class SQLUtils {
//.....
private static DataSource m_ds=null;
static
{
try
{
InitialContext ic = new InitialContext();
m_ds = (DataSource) ic.lookup(dbName); //Connection pool and jdbc resource previously created in Glassfish , dbName contains the proper JNDI resource name
}
catch (Exception e)
{
e.printStackTrace();
m_ds = null;
}
}
public static Connection getSQLConnection() throws SQLException
{
return m_ds.getConnection();
}
}
Ogni volta che ho bisogno di una connessione che faccio
Connection cn = null;
try
{
cn = SQLUtils.getSQLConnection();
// use connection
}
finally
{
if (null != cn)
{
try
{
cn.close();
}
catch (SQLException e)
{
}
}
}
E 'ok per usarlo in questo modo, o io DataSource deve essere un membro del chicco?
@Stateless
@WebService
public class TestBean {
private @Resource(name=dbName) DataSource m_ds;
}
Mi dispiace se si tratta di una domanda di nuvola, ma sono piuttosto nuovo di Java. Grazie in anticipo.
+1 per l'eccezione ExceptionInInitializerError che non conoscevo. – ewernli
Preferirei comunque l'iniezione nel bean stesso perché è più facile deridere e testare. – ewernli
Grazie mille per la risposta. – a1ex07