迁移后新服务器显示WICKET AJAX DEBUG,如何切换至部署模式?
解决Wicket部署模式未生效(AJAX调试信息显示)的问题
排查Wicket自动检测的触发逻辑
Wicket旧版本会自动识别运行环境,新服务器可能触发了开发模式的判定:- 检查应用代码里的
getConfigurationType()实现,部分旧项目会根据Servlet临时目录(javax.servlet.context.tempdir)的路径特征判断,若新服务器的临时目录和原服务器不同(比如包含dev、debug这类关键字),可能被误判为开发环境。 - 核对Jetty启动配置:原服务器的Jetty启动脚本(
start.ini、start.d下的配置文件)或服务配置(如systemd的.service文件)里,可能存在隐含的JVM参数,复制时遗漏了,导致新服务器没带上部署模式的参数。
- 检查应用代码里的
强制设置部署模式的几种方式
如果找不到现有配置,直接强制指定:- 修改Jetty启动参数:在Jetty的
start.ini中添加一行:
确保JVM启动时加载该参数,覆盖自动检测逻辑。--exec -Dwicket.configuration=deployment - 代码层面强制指定:在Wicket应用类的
init()方法开头加入:
这种方式直接绕过自动检测,适合旧版本Wicket的兼容场景,测试生效后可以保留或再找根源配置。setConfigurationType(Application.DEPLOYMENT); - 检查web.xml的context-param配置:部分旧版本Wicket用
context-param而非init-param设置模式,看看是否有:<context-param> <param-name>wicket.configuration</param-name> <param-value>deployment</param-value> </context-param>
- 修改Jetty启动参数:在Jetty的
验证模式是否切换成功
可以在任意页面添加一个简单标签,输出当前运行模式:add(new Label("currentMode", getApplication().getConfigurationType().name()));访问页面查看是否显示
DEPLOYMENT,确认模式是否生效。
内容的提问来源于stack exchange,提问作者StockTsi
相关产品推荐
相关产品推荐

