Open Liberty配置jspEngine的keepGenerated=true后编译JSP的存储位置
配置生效逻辑
你配置的<jspEngine keepGenerated = "true"/>确实会让Open Liberty保留JSP编译生成的Java源文件和对应Class文件到磁盘。该配置默认值为false,默认状态下生成的临时文件会在应用卸载、服务器重启时自动清理,设置为true后会持久化保留。
生成文件默认存储路径
默认生成的JSP编译文件存放在Open Liberty服务器实例的工作区目录下,路径规则为:${wlp安装目录}/usr/servers/[当前服务器实例名]/workarea/org.eclipse.osgi/[随机数字ID]/data/jsps/[对应应用的上下文路径]/
如果是通过Maven/Gradle插件以开发模式(liberty dev)启动的服务器,路径对应为项目构建目录下的实例工作区:[项目根目录]/target/liberty/wlp/usr/servers/[当前服务器实例名]/workarea/org.eclipse.osgi/[随机数字ID]/data/jsps/[对应应用的上下文路径]/
找不到文件的排查方案
- JSP为懒编译机制,只有对应JSP页面被至少访问过1次才会生成编译文件,请确认你查找前已经访问过目标JSP页面
- 若服务器启动时添加了
--clean参数,会在启动时清空整个workarea目录,之前生成的编译文件会被清除,需要重新访问JSP生成 - 可通过显式指定
scratchdir属性固定生成路径,避免找不到文件,配置示例如下:
<jspEngine keepGenerated="true" scratchdir="/自定义/固定/存储路径"/>
- 检查应用内部的
web.xml是否配置了同名的keepgenerated参数(全小写),如果应用级配置为false会覆盖server.xml的全局配置
内容的提问来源于stack exchange,提问作者Mr Smith
相关产品推荐
相关产品推荐

