我遇到了问题,我的客户要求我在系统维护或宕机时显示一些自定义错误。
当HTTP Server收到503错误时,我没有问题。 问题是当我必须显示相同的维护页面时,我发现404错误。
此错误如下所示,系统架构如下:
- 虚拟机中的HTTP Server v7,具有高可用性负载平衡。 - 在另一个VM中我有WASCE 1和WASCE 2。 - 另一个VM,WASCE 3和WASCE 4。
当HTTP Server收到404错误时,它会显示预定义的Tomcat错误消息
即使尝试修改http服务器的httpd.conf文件也没有任何结果。
它完全忽略了诸如“#ErrorDocument 404 /404maintenance.html”或任何类型的重写规则之类的内容。
我找到了一个教程,解释了修改catalina的web.xml文件并放置ej:myNewError404.html可以修改,因为tomcat默认是到达http服务器。
问题在于,当我这样做时,它会停止向我显示默认的tomcat错误消息,但它会显示一个空白屏幕。 显然我没有在标签位置采取路线。
<error-page>
<error-code>404</error-code>
<location>/myErrorPage404.html</location>
</error-page>
此问题仅在四个WASCE中的任何一个的服务启动时才会发生,但应用程序已停止。
我尝试将文件放在任何地方,但没有结果。如果有人帮忙解决问题,非常感谢。
每个人都很开心!
答案 0 :(得分:0)
您想查看ProxyErrorOverride指令。
http://publib.boulder.ibm.com/httpserv/manual70/mod/mod_proxy.html#proxyerroroverride
答案 1 :(得分:0)
根据本教程,有一种方法可以重定向尝试访问应用程序URL的人员,当他们处于维护状态时。
在VirtualHost中,我做的第一件事就是让我能够拍摄我们在本地拍摄的图像,因为如果你想要显示一个标签,请尝试使用你的应用程序的网址。
然后我设置以下Alias和以下RewriteRule:
收听0.0.0.0:443
public class RoleDao extends GenericDao {
public int createRole() {
try
{
TransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus status = transactionManager.getTransaction(def);
this.methhod1();
this.methhod2();
transactionManager.commit(status);
}
catch (InvalidResultSetAccessException e)
{
transactionManager.rollback(status);
throw new RuntimeException(e);
}
catch (DataAccessException e)
{
transactionManager.rollback(status);
throw new RuntimeException(e);
}
}
public class GenericDao{
public int method1() {
try
{
..........
.........
}
catch (InvalidResultSetAccessException e)
{
throw new RuntimeException(e);
}
catch (DataAccessException e)
{
throw new RuntimeException(e);
}
}
public int method2() {
try
{
.........
.........
}
catch (InvalidResultSetAccessException e)
{
throw new RuntimeException(e);
}
catch (DataAccessException e)
{
throw new RuntimeException(e);
}
}
}
然后我们要做的是在你的http服务器的htdocs文件夹中创建一个名为serverdown.txt的文件,并使用以下规则,我们要告诉你的是检查该文件夹中是否存在该文件,如果是确实存在,它们被重定向到您的自定义维护文件的所有连接。
<VirtualHost *: 443>
Alias "/ images" "C: \ IBM \ HTTPServer \ htdocs \ images"
RewriteRule "/images/(.+)\.png$" "/images/$1.png" [PT]
完成此配置后,以下是使用以下代码创建.bat:
RewriteCond% {DOCUMENT_ROOT} /serverdown.txt -f
RewriteRule ^ (. *) $ /404maintenance.html [PT, NC]
通过这种方式,将.bat添加到httpserver的bin文件夹,打开控制台并编写&#34;维护&#34;,这个bat创建文件serverdown.txt并编写&#34; mantenance off& #34;,删除相同的文件。
我希望你有用。此致!
我的httpd.conf文件:
@ECHO OFF
if "% 1" == "on" (
echo The variable is ON
echo The variable is ON> C: \ IBM \ HTTPServer \ htdocs \ serverdown.txt
) ELSE (
echo The variable is OFF
from C: \ IBM \ HTTPServer \ htdocs \ serverdown.txt