我有一个JSF Web应用程序和一个名为User:
的Managed Bean示例@ManagedBean
@SessionScoped
public class User {
private String name, surname;
public String getName() {
return name;
}
public void setName(String name) {
updateName(name);
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
private void updateName(String name){
Connection connection = ConnectionFactory.getConnection();
//Update name via Connection
}
}
然后我有一个Example类ConnectionFactory。
public class ConnectionFactory {
private static Queue<Connection> connections;
static {
//initialize connections
}
public static Connection getConnection() {
return connections.poll();
}
//Other methods related to connection pooling, this is really just an example class
}
我的问题是,这样的工厂类可以用来提供数据库连接吗?是否保证每个具有任何范围的bean(从请求到应用程序范围)都将在容器运行时共享这一个类?
我只想在更新方法的持续时间内将连接租用到bean。我不喜欢具有长生命周期的会话作用域托管bean的想法(会话可能需要很长时间)使用Connection对象注入类属性。
答案 0 :(得分:0)
如果正确实现singleton pattern然后是 - 所有bean将使用相同的对象(在同一JVM的范围内)。
但是我认为你正在重新发明轮子并建议使用标准connection pool。通过这种方式,您可以使用应用程序服务器配置工具来监视和管理诸如最大数量的开放数据库连接等内容。