私はポスト/取得要求を処理するメインサーブレットを持っています。
私は、接続プール(のGlassFish v3のではjdbc/mysqlの)を使用していますし、私のサーブレットのコードは次のとおりです。
jdbcデータソースv/sを渡してConnectionオブジェクトを渡す - サーブレットからJavaクラスへ
public class Controller extends HttpServlet {
private DataSource datasource;
@Override
public void init() throws ServletException {
super.init();
try {
//Database Connection pooling:
InitialContext ctx = new InitialContext();
datasource = (DataSource)ctx.lookup("jdbc/MySQLPool");
}
catch (Exception e) {
e.printStackTrace();
}
}
private Connection getConnection() throws SQLException {
return datasource.getConnection();
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Connection connection=null;
try {
connection = datasource.getConnection();
Object obj= cmdFactory.getInstance().getCommand(Cmd).execute(connection);
}
等...と最終的に私は接続を閉じ、ブロック内のサーブレットの終わりに
これで、アプリケーションの下位レイヤーを介して他の(サーブレット以外の)Javaクラスで使用されるように、最後の行のパラメータとして「接続」オブジェクトを渡しています。これは間違っていますか?むしろデータソースオブジェクトを渡す方が良いでしょうか(そして、特定のクラスではdatasource.getConnection()を実行します)?または他のJavaクラスでこの接続を取得するために使用できる"getServletContext()。getAttr(database)"のようなものがありますか?
私はそれを忘れていたので私を思い出させるためにあなたが絶対に正しいです漏れに関するええとええ! – shadesco
質問:どのように近似したり計算したりするのですか?特定のWebアプリケーションの接続プールサイズはどのようにする必要がありますか?私は接続プーリングを使用しているのですが、glassfishのデフォルトパラメータを使用したのは初めてです – shadesco
同時ユーザー数、データベースが実際にサポートしている接続数、スレッドプール内のスレッド数によって異なります。予想される同時ユーザー数でアプリケーションをロードテストし、最適な数が何であるかを確認する必要があります。そして、現実があなたの期待と一致するかどうかを検証しなければなりません。 –