ユーザー数が急増したとき(ユーザー数が200以上の場合)、私はhibernate framework.Applicationでエンタープライズアプリケーションを開発しました。次のメソッドを試しましたが、それでも問題は解決しません。Hibernate Webアプリケーション
1)C3PO接続プーリングは、(以前は接続プーリングを使用しない)
2)
3)値100の前に(300に接続プールのサイズを休止増加)
のOpenSession
にgetCurrentSession方法を変更しましたhibernate.cfg.xmlファイルは connection.pool_size = 300このメソッドを使用して呼び出されます -
@Override
公衆リストgetLovServiceSqlParam(文字列のクエリ、[]オブジェクトobj){
// TODO Auto-generated method stub
Session session = null;
if (this.getHibernateTemplate() != null && query != null
&& query.length() > 0) {
try
{
session = this.getHibernateTemplate().getSessionFactory().openSession();
SQLQuery query1 = session.createSQLQuery(query);
for(int i=0;i<obj.length;i++)
{
query1.setParameter(i, obj[i]);
}
result = query1.list();
session.close();
}
catch (DataAccessException e) {
e.printStackTrace();
throw e;
}
finally
{
if (session != null && session.isOpen()) {
session.close();
}
}
}
return result;
}
スレッド分析は複雑すぎます。アプリケーションがハングした場合、getNamedQueryメソッドはアクションクラスからまったく呼び出されません。 getNamedQueryメソッドより前のSysoutsはログに出力されていますが、メソッド内の他のsysoutsは全く出力されません。つまり、getNamedQueryは実行されず、結果はレンダリングされません –