Ich brauche eine Datenbankverbindung im Java-Webdienst, die als Session-Bean implementiert ist, und ich bin mir nicht sicher, ob ich es richtig mache.Korrekte Verwendung des JDBC-Verbindungspools (Glassfish)
habe ich eine Klasse
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();
}
}
Jedes Mal, wenn ich eine Verbindung benötige ich
tunConnection cn = null;
try
{
cn = SQLUtils.getSQLConnection();
// use connection
}
finally
{
if (null != cn)
{
try
{
cn.close();
}
catch (SQLException e)
{
}
}
}
Ist es in Ordnung, es auf diese Weise zu verwenden, oder ich Datasource muss ein Mitglied der Bohne sein?
@Stateless
@WebService
public class TestBean {
private @Resource(name=dbName) DataSource m_ds;
}
Es tut mir leid, wenn es eine nube Frage ist, aber ich bin ziemlich neu in Java. Danke im Voraus.
+1 für die ExceptionInInitializerError, die ich nicht kannte. – ewernli
Ich würde jedoch die Injektion in der Bohne selbst bevorzugen, weil es einfacher ist zu verspotten und zu testen. – ewernli
Vielen Dank für Ihre Antwort. – a1ex07