WebSphere 更新应用后请求静态资源出现 503 错误

系统环境:WebSphere 6.1.0.25 Network Deployment, 有集群,前端用IBM Http Server Plugin

事情是这样的,由于本集群上有多个应用,所以在更新应用时不可以重启App Server。同时,在集群环境中,如果直接更新应用,会自动触发WAS集群中的App Server重启。所以我们更新应用的习惯是,先停止应用,再卸载,然后再部署新的版本。

在这样的应用更新实施之后,出现过两次这样的情况:部署后的新应用,功能都正常,就是样式全丢了。使用Firefox的Firebug跟踪一下,发现是在请求style.css时,服务器给了503 Service Unavailable的响应。检查服务器上应用部署目录,物理文件都在,访问权限也正常,但是就是无法正确请求到这个文件。

搜索了很多文档,终于找到了这个问题的原因,属于WAS的Bug:

PK80333: CANNOT DISPLAY A CERTAIN GIF FILE

大意是说:当应用正在停止的时候,在某个很短的时间段内,如果服务器接收到一个静态资源(css, js, html, 图片等)的请求,此时,这个静态资源会被服务器标识为永久性不可用。即使应用再次启动,访问这个静态资源,服务器也会给出503 Service Unavailable的响应。但是对于动态资源,例如JSP和Servlet就不存在这个问题。

这个问题在6.0.1.27修复。

或者,重新启动App Server,也会恢复。

并且,在发生故障的场景中,应用启动之后,如果换一个域名访问此静态资源,就是正常的。

比如说:http://xx.com/styles/style.css 请求正好在应用停止的那个片刻到达服务器,那么后续所有的对于http://xx.com/styles/style.css的请求都会收到503的响应。但是如果换一个指向同一地址的http://xx1.com/styles/style.css请求,则是正常的。

以下是原文:

Problem summary

****************************************************************

* USERS AFFECTED:  IBM WebSphere Application Server Version 6.1*

*                  and Version 7.0 users.                      *

****************************************************************

* PROBLEM DESCRIPTION: All requests for a static file result   *

*                      in a                                    *

*                      Servlet.has.become.temporarily.unavaila *

*                      ble.for.service exception.              *

****************************************************************

* RECOMMENDATION:                                              *

****************************************************************

When an application is being stopped a small timing window

exists during which, if a request for a static file is

received, the static file will become permanently unavailable

even after the application has been restarted. Once the static

file has become permanently unavailable all requests for the

file will result in a

Servlet.has.become.temporarily.unavailable.for.service

exception. The problem will persist until the server on which

the application is running is restarted.

Note the problem  occurs for static files only and not, for

example, for servlets and JavaServer Pages (JSPs).

Problem conclusion

The WebContainer has been modified to remove the timing window

so that a request for a static file during application stop

cannot cause the static file to become permanently unavailable.

The fix for this APAR is currently targeted for inclusion in

fix packs 6.1.0.27 and 7.0.0.5.

时间: 2024-11-09 04:37:36

WebSphere 更新应用后请求静态资源出现 503 错误的相关文章

Nginx与Tomcat实现请求动态数据与请求静态资源的分离

上篇博客说明了Nginx在应用架构中的作用,以及负载均衡的思路.这篇实践一下其中的访问静态资源与访问动态资源的操作. 一.认识访问静态资源与访问动态资源的区别 静态资源:指存储在硬盘内的数据,固定的数据,不需要计算的数据. 如:图片.字体.js文件.css文件等等.在用户访问静态资源时,服务器会直接将这些资源返回到用户的计算机内. 动态资源:指需要服务器根据用户的操作所返回的数据,以及存储在数据库的数据,经过一系列逻辑计算后返回的数据. 如:请求明天的天气信息数据.请求查看账户余额. 二.请求动

http升级为https后,静态资源失效和ajax请求跨域问题

把http升级以后,一打开原本的网站,会发现很多静态资源失效了. 只需要在html页面加入: <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> 2:ajax请求与显示跨域 当发送ajax请求时报错: XMLHttpRequest cannot load [ajax请求的服务器url] No 'Access-Control-Allow-Origin

nodejs请求静态资源404错误,后台需处理返回http请求的静态资源

nodejs小白在做的demo时后台返回主页面html后,页面请求引用的js文件,后台没有返回对应请求路径的静态资源,所以报错.原来在java开发下没有注意过这种问题,一般除了WEB-INF下的文件不能访问外,其他资源文件都可以直接用http路径访问. 1.使用http模块处理(http模块时nodejs内置模块) public文件夹下的文件js,html默认为静态资源,后台读取这些文件然后返回给前台. 1 var http = require('http'); 2 var fs = requi

SpringMVC请求静态资源

在SpringMVC配置文件中增加如下配置 <!-- default-servlet-handler 将在 SpringMVC 上下文中定义一个 DefaultServletHttpRequestHandler, 它会对进入 DispatcherServlet 的请求进行筛查, 如果发现是没有经过映射的请求, 就将该请求交由 WEB 应用服务器默认的 Servlet 处理. 如果不是静态资源的请求,才由 DispatcherServlet 继续处理 一般 WEB 应用服务器默认的 Servlet

vue打包后出现静态资源|(图片,json数据)找不到路径

最近在学习Vue是如何编写项目的,在踩了许多坑后,终于要到了最后一步npm run build了,很开心的等待奇迹,然后打包后出现了找不到图片路径的问题. 解决办法:1.将图片或者json数据文件夹放到static的文件夹中,这样打包后webpack会自动打包 2.在build的文件夹下找到utils.js的文件,修改打包后静态资源的路径,添加 publicPath: '../../' 原文地址:https://www.cnblogs.com/klkitty/p/9099472.html

解决从私库下载下来已经编译好的项目核心部分,改变其编译后的静态资源后无法打包进改变部分的问题

首先,本人使用 idea开发. 情景:在idea上改变从公司私库下载下来的公司产品,核心部分已经是编译后下载下来的,其中包含所有静态资源.             在idea中改变静态资源,添加或者删除或者改变一部分后,在使用maven命令打包或者 直接用 package插件打包无法将改变后的打包进war.(此部分无法install进maven库) 分析:应该是使用maven打包的时候,首先会从maven库中寻找进行打包,而恰好公司产品核心部分是编译后从私库down下来的,所以maven库中肯定

Vue打包后访问静态资源路径问题

Vue介绍中static文件夹里放的是静态资源目录,如图片.字体等. 我们发现运行npm run start后本地图片路径是没问题的,但是打包上传后会怎么样呢? 我们知道,执行npm run build 后会生成dist文件夹,把里面的index.html在浏览器运行会发现 图片路径出错啦!!! 解决方法: 1.先找到config下的index.js文件 把最后的'/' 改为 './' 2.接着把图片地址改为 这样就解决啦~~ 原文地址:https://www.cnblogs.com/wangx

spring 请求静态资源文件

在springMVC项目中使用restful风格写,需要到web.xml配置全拦截. <servlet>        <servlet-name>springmvc</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <load-on-startup>1</lo

Spring MVC 读取静态资源时404错误

背景:web.xml配置时拦截策略是拦截所有请求: <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-