为什么Websphere v8.5服务器在重新启动后仍将jsp保存在缓存中



我有一个运行在WebSphere v8.5服务器实例上的web应用程序。我刚刚将应用程序JSP中的共享代码更新为单独的JSP,并使用以下行导入到原始JSP中:

   <%@ include file="/WEB-INF/pages/table.jsp" %>

但是,每当我修改后端逻辑或这个table.jsp文件时,这些更改都会反映在应用程序中。我已经尝试重新启动服务器并进行干净的构建,但旧的格式仍然存在。有人知道我如何修复这个缓存或如何防止它继续发生吗?

<%@ include file="/WEB-INF/pages/table.jsp" %>是静态导入,因此它在编译父类之前将table.jsp文件的内容包含到父类jsp中。在编译父类之后,对table.jsp的更改将不可见,因为父源/类不会更改。你必须在父目录上更新时间戳(例如使用touch命令或打开并保存),以使容器意识到所包含的文件已被更改。

WAS将JSP文件缓存在profile-root/temp文件夹中。删除这个文件夹的内容,它应该用新的JSP文件刷新。

要获得更永久的解决方案,请参阅此链接:https://developer.ibm.com/answers/questions/180818/how-to-resolve-jsp-caching-issue-in-websphere-appl.html

在Java虚拟机下将此自定义属性com.ibm.ws.cdi.enableCDI添加为false。这将禁用CDI并启用JSP重载而无需重新启动应用程序或服务器。

最新更新