0

我们运行的应用程序基于 Struts 2.0。我们中的许多人同时访问此应用程序。每天晚上大约在同一时间,应用程序都会大量出现。如果我们在浏览器上重新加载应用程序,它永远不会移动到登录页面之前。查看服务器的日志,我可以看到最后一条消息是“线程睡眠”。

在做一些研究时,我遇到了 Spring 框架注释的使用。Struts2 也一样吗?如果可能的话,你能否在struts文件中说明用途?

[4/25/12 15:20:19:595 GMT+05:30] 00000029 SystemOut     O 25 Apr 2012 15:20:19,595 DEBUG [Thread-64][GreeceSynchronizer] thread sleep
action [cape.base.lbxoutclearing.ui.action.LoginAction@1f601f6]
[4/25/12 15:20:26:293 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,293 DEBUG [WebContainer : 5][I18nInterceptor] intercept '//doLogin' { 
[4/25/12 15:20:26:293 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,293 DEBUG [WebContainer : 5][I18nInterceptor] requested_locale=null
[4/25/12 15:20:26:293 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,293 DEBUG [WebContainer : 5][I18nInterceptor] before Locale=en_US
[4/25/12 15:20:26:293 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,293 DEBUG [WebContainer : 5][InstantiatingNullHandler] Entering nullPropertyValue [target=[cape.base.lbxoutclearing.ui.action.LoginAction@1f601f6, com.opensymphony.xwork2.DefaultTextProvider@58605860], property=struts]
[4/25/12 15:20:26:294 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,294 DEBUG [WebContainer : 5][FileUploadInterceptor] Bypassing // doLogin
[4/25/12 15:20:26:294 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,294 DEBUG [WebContainer : 5][StaticParametersInterceptor] Setting static parameters {}
[4/25/12 15:20:26:294 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,294 DEBUG [WebContainer : 5][ParametersInterceptor] Setting params password => [ DEMO9 ] changePassword => [ false ] forgotPassword => [  ] username => [ DEMO9 ] 
[4/25/12 15:20:26:294 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,294 DEBUG [WebContainer : 5][XWorkConverter] Property: changePassword
[4/25/12 15:20:26:294 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,294 DEBUG [WebContainer : 5][XWorkConverter] Class: cape.base.lbxoutclearing.ui.action.LoginAction
[4/25/12 15:20:26:294 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,294 DEBUG [WebContainer : 5][XWorkConverter] field-level type converter for property [changePassword] = none found
[4/25/12 15:20:26:294 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,294 DEBUG [WebContainer : 5][XWorkConverter] global-level type converter for property [changePassword] = none found
[4/25/12 15:20:26:294 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,294 DEBUG [WebContainer : 5][XWorkConverter] falling back to default type converter [com.opensymphony.xwork2.util.XWorkBasicConverter@48c648c6]
[4/25/12 15:20:26:294 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,294 DEBUG [WebContainer : 5][CompoundRootAccessor] No object in the CompoundRoot has a publicly accessible property named 'forgotPassword' (no setter could be found).
[4/25/12 15:20:26:294 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,294 DEBUG [WebContainer : 5][CompoundRootAccessor] No object in the CompoundRoot has a publicly accessible property named 'password' (no setter could be found).
[4/25/12 15:20:26:294 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,294 DEBUG [WebContainer : 5][CompoundRootAccessor] No object in the CompoundRoot has a publicly accessible property named 'username' (no setter could be found).
[4/25/12 15:20:26:294 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,294 DEBUG [WebContainer : 5][LoginAction] Validating login
[4/25/12 15:20:26:295 GMT+05:30] 00000030 SystemOut     O 25 Apr 2012 15:20:26,295 DEBUG [WebContainer : 5][LoginAction] 1
[4/25/12 15:20:31:256 GMT+05:30] 00000036 FreePool      E   J2CA0045E: Connection not available while invoking method createOrWaitForConnection for resource lockBoxDSJNDI.
[4/25/12 15:20:31:292 GMT+05:30] 00000036 SystemOut     O 25 Apr 2012 15:20:31,289 ERROR [WebContainer : 8][BaseDAO] Exception in getConnection()
com.ibm.websphere.ce.cm.ConnectionWaitTimeoutException: Connection not available, Timed out waiting for 180007
    at com.ibm.ws.rsadapter.AdapterUtil.toSQLException(AdapterUtil.java:1252)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:444)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:400)
    at cape.base.lbxoutclearing.ui.dao.BaseDAO.getConnection(BaseDAO.java:49)
Caused by: com.ibm.websphere.ce.j2c.ConnectionWaitTimeoutException: Connection not available, Timed out waiting for 180007
    at com.ibm.ejs.j2c.FreePool.createOrWaitForConnection(FreePool.java:1496)
    at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:2273)
    at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:903)
    at com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:603)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:431)
    ... 130 more
4

1 回答 1

3

这与 Struts/Spring 无关。

容器 WAS 说它无法从连接池中获取连接。

在数据源上指定了 Connectiontimeout 时间段。如果在等待那段时间之后,如果 WAS 运行时无法为您的应用程序提供来自池的连接,那么它会抛出此异常。

您必须找出谁在持有池中的连接并确保释放连接。

使用此跟踪字符串 ConnLeakLogic=finest 打开跟踪。发生此异常时,它将转储列出当时正在使用连接的所有线程的状态。这应该是你的起点。

高温高压

芒鲁

于 2012-04-26T00:39:13.437 回答