gpt4 book ai didi

java - 正确使用 JDBC 连接池 (Glassfish)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:05:38 25 4
gpt4 key购买 nike

我需要在作为 session bean 实现的 Java Web 服务中建立一个数据库连接,但我不确定我做的是否正确。

我创建了一个类

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();
}
}

每当我需要连接时,我都会这样做

 Connection cn = null;  
try
{
cn = SQLUtils.getSQLConnection();
// use connection
}
finally
{
if (null != cn)
{
try
{
cn.close();
}
catch (SQLException e)
{

}
}
}

可以这样使用吗,还是我DataSource必须是bean的成员?

  @Stateless  
@WebService
public class TestBean {
private @Resource(name=dbName) DataSource m_ds;
}

如果这是一个 nube 问题,我很抱歉,但我是 Java 的新手。提前致谢。

最佳答案

除了 C 风格的格式化、一些不必要的行和有点糟糕的异常处理之外,您可以这样做。

这是我的做法:

public final class SQLUtil {
private static DataSource dataSource;
// ..

static {
try {
dataSource = (DataSource) new InitialContext().lookup(name);
} catch (NamingException e) {
throw new ExceptionInInitializerError(e);
}
}

public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
}

我在这里扔ExceptionInInitializerError这样应用程序将立即停止,这样您就不必在尝试获取连接时面临“无法解释的”NullPointerException

关于java - 正确使用 JDBC 连接池 (Glassfish),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1915992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com