是否可以从servlet永久修改web.xml,以便在运行时更改任何context-param(或init-param或其他任何)值时,即使重新启动服务器后,此更改也会反映出来?我目前正在使用tomcat 8。
答案 0 :(得分:1)
这样做非常糟糕 - 只是因为您在更新应用程序时必须跟踪更改。
如果您有此类要求,则应将配置保存在其他位置,例如在数据库或Web应用程序之外的某个文件中,以便您可以在不进行更改的情况下部署Web应用程序,但仍然可以读取当前正在运行的系统的配置。
不要忘记在备份中包含该配置文件/数据库内容。
此外,AFAIK tomcat(在其默认配置中)监视web.xml,并在检测到对web.xml的更改后重新加载应用程序(例如,将其关闭并重新启动) - 这可能不是您期望的行为。并且不要忘记tomcat可能被配置为仅部署WAR文件而不解压缩 - 您甚至可能在磁盘上没有web.xml文件。它仍然可以驻留在WAR文件中(这是一种可能的配置,而不是标准)
答案 1 :(得分:1)
为什么要在运行时写入web.xml。这对我来说不合适。
如果您有配置运行时的要求,那么使用注释和编程注册几乎可以实现所有这些。您可以在web.xml中完成的所有配置都可以使用它们完成。您可以创建并注册servlet。
<强>参考强>
答案 2 :(得分:0)
您始终可以在java代码中为脚本或批处理文件生成系统命令,该脚本或批处理文件接受输入,然后修改web.xml文件。但是您仍然需要重新启动Tomcat才能使更改生效。它从配置文件加载到内存。