私はこのステートレスセッションBeanについて特にこの質問をします。 DataSource
に@Resource
注釈を簡単に挿入できることはわかっていました。しかし、私はConnection
を入手する適切な方法は何か分かりません。それは、Beanの各メソッド、または@PostConstruct
で注釈付けされたメソッドにありますか?また、Connection
の閉鎖のために。各メソッド呼び出しのfinallyブロック内で閉じるか、@PreDestroy
で注釈を付けたメソッドで閉じる必要がありますか?EJB 3(SLSB)でJDBC接続を適切に処理する方法
には、例えば、Connection
のインスタンス変数を作成することが安全です:
@Stateless
public class MyBean {
@Resource private DataSource ds;
private Connection conn;
@PostConstruct
public void onCreate() {
conn = ds.getConnection(); // within try catch block
}
@PreDestroy
public void onDestroy() {
conn.close() // within try catch block
}
}
または私はこのようにそれぞれの方法でローカルに作成する必要があります。インターネットで
@Stateless
public class MyBean {
@Resource private DataSource ds;
public void method1() {
Connection conn = null;
// get and close connection...
}
public void method2() {
Connection conn = null;
// get and close connection...
}
}
一部の人々このようにして、他の人はそうします。リクエストトラフィックが多いアプリケーションでは、どのような方法で実装するのが適切ですか? BeanインスタンスがEJBプールに返されると、Connection
はオープンされたままになるか、それともデータベースプールに返されますか?
注:アプリケーションはネイティブJDBC APIを使用しています。 JPA、JDOなどはありません。アプリケーションサーバーはWildflyです。