我在测试环境中有一个简单的Spring J2EE web应用程序,它托管在Websphere上。我们有一些存储过程有时花费超过1分钟。在这种情况下,服务器在触发ajax调用的同时返回500 Internal server error page
。如果总响应时间小于1分钟,则工作正常。
当我们在本地tomcat服务器上运行相同的应用程序时,它不会抛出500,而是返回响应,即使我们的代码花费了2分钟以上。但是在Websphere服务器上失败。
我通过在本地tomcat服务器和Websphere测试环境中添加睡眠进行了测试,它在测试环境中失败了。
我还尝试在应用服务器下的web容器设置中添加以下自定义属性:
- ConnectionIdleTimeout (300)
- ConnectionIOTimeOut (300)
- ConnectionKeepAliveTimeout
下面是我得到的html内容:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">↵<html><head>↵<title>500 Internal Server Error</title>↵</head><body>↵<h1>Internal Server Error</h1>↵<p>The server encountered an internal error or↵misconfiguration and was unable to complete↵your request.</p>↵<p>Please contact the server administrator,↵ you@your.address and inform them of the time the error occurred,↵and anything you might have done that may have↵caused the error.</p>↵<p>More information about this error may be available↵in the server error log.</p>↵</body></html>
通过增加plugin-cfg.xml中的ServerIOTimeout来修复这个问题。
ServerIOTimeout表示"插件应该等待应用程序的响应多长时间",以秒为单位。打开套接字后,插件将请求发送到Application Server。在Websphere 7中,它的默认值是60,在某些情况下这个值非常小。重要的一点是,一旦你编辑了plugin-cfg.xml。您需要重新生成插件以使更改生效。另一件事是,即使你在管理控制台中更改它,它也会从plugin-cfg.xml中读取它,如果它存在的话,所以总是直接更改xml文件。
文件位置:-
详细信息,请参考IBM DOCS和这个非常好的博客。