相关疑难解决方法(0)

在多线程系统中使用静态java.sql.Connection实例是否安全?

我在Tomcat上运行Web应用程序.我有一个处理所有数据库查询的类.此类包含Connection返回查询结果的对象和方法.

这是连接对象:

private static Connection conn = null;
Run Code Online (Sandbox Code Playgroud)

它只有一个实例(单例).

另外,我有执行查询的方法,例如在db中搜索用户:

public static ResultSet searchUser(String user, String pass) throws SQLException
Run Code Online (Sandbox Code Playgroud)

此方法使用静态Connection对象.我的问题是,我在静态Connection对象线程中的使用是否安全?或者当很多用户调用该searchUser方法时会引起问题吗?

java connection multithreading servlets jdbc

50
推荐指数
1
解决办法
3万
查看次数

何时需要或方便地将Spring或EJB3或它们全部一起使用?

混淆使用JSF2 + Spring + EJB3或它们的任意组合让我感到有些困惑.我知道Spring的一个主要特性是依赖注入,但是我可以使用JSF托管bean @ManagedBean@ManagedPropertyanotations,并获得依赖注入功能.使用EJB3,我更加困惑何时将其与JSF一起使用,或者甚至有理由使用它.

那么,在什么样的情况下使用Spring + JSF2或EJB3 + JSF2是个好主意?

到目前为止,我只使用JSF2创建了一些小型Web应用程序,从不需要使用Spring或EJB3.但是,我在许多地方看到人们正在将所有这些东西放在一起.

jsf spring ejb java-ee service-layer

39
推荐指数
2
解决办法
9689
查看次数

我使用JDBC连接池吗?

我试图确定我是否实际使用JDBC连接池.经过一些研究,实施几乎看起来太容易了.事实上比常规连接更容易,所以我想验证.

这是我的连接类:

public class DatabaseConnection {

Connection conn = null;

public Connection getConnection() {

    BasicDataSource bds = new BasicDataSource();
    bds.setDriverClassName("com.mysql.jdbc.Driver");
    bds.setUrl("jdbc:mysql://localhost:3306/data");
    bds.setUsername("USERNAME");
    bds.setPassword("PASSWORD");

    try{
        System.out.println("Attempting Database Connection");
        conn = bds.getConnection();
        System.out.println("Connected Successfully");
    }catch(SQLException e){
        System.out.println("Caught SQL Exception: " + e);
    }
    return conn;
}

public void closeConnection() throws SQLException {
    conn.close();
}
Run Code Online (Sandbox Code Playgroud)

}

这是真正的连接汇集吗?我在另一个类中使用连接如下:

        //Check data against database.
    DatabaseConnection dbConn = new DatabaseConnection();
    Connection conn;
    ResultSet rs;
    PreparedStatement prepStmt;

    //Query database and check username/pass against table.
    try{
        conn = dbConn.getConnection(); …
Run Code Online (Sandbox Code Playgroud)

mysql connection-pooling jdbc java-ee

29
推荐指数
1
解决办法
3万
查看次数

我应该如何在基于servlet的应用程序中连接到JDBC数据库/数据源?

我有一个外部MySQL服务器,设置和工作正常.我在Eclipse中创建了一个数据库连接,可以在Data Source Explorer选项卡中查看数据库.

现在,我有一个需要访问该数据库的servlet.我该怎么做?有没有办法引用在数据源资源管理器中创建的数据库连接,还是我必须两次定义所有内容?

另外,打开连接的最佳方法是什么?我已经mysql-connector-java-5.1.11-bin.jar包含了该文件,并且我发现了两种有效的方法:

MysqlDataSource d = new MysqlDataSource();
d.setUser("user");
d.setPassword("pass");
d.setServerName("hostname.com");
d.setDatabaseName("db");
Connection c = d.getConnection();
Run Code Online (Sandbox Code Playgroud)

Connection c = DriverManager.getConnection("jdbc:mysql://hostname.com/db","user","pass");
Run Code Online (Sandbox Code Playgroud)

两者都不是最佳的,因为首先,它们都使用硬编码的字符串.这是一个Java EE Web应用程序项目,是否有一个放置连接数据的好地方?或者有没有办法放弃所有这些并只使用数据源资源管理器中的连接?

tomcat servlets datasource jdbc

19
推荐指数
1
解决办法
7万
查看次数