JSF Web アプリケーションと、User というマネージド 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
}
私の質問は、そのようなファクトリ クラスを使用して DATABASE CONNECTIONS を提供できるかどうかです。任意のスコープ (リクエストからアプリケーション スコープまで) を持つすべての Bean が、コンテナの実行時にこの 1 つのクラスを共有することが保証されていますか?
更新メソッドの期間中のみ、Bean への接続をリースしたい。Connection オブジェクトでクラス プロパティを注入することで、有効期間が長い (セッションには非常に長い時間がかかる可能性がある) セッション スコープのマネージド Bean という考えは嫌いです。