代码之家  ›  专栏  ›  技术社区  ›  ramon_salla

在jetty中重新加载上下文

  •  1
  • ramon_salla  · 技术社区  · 14 年前

    我有一个关于上下文重新加载的问题。我所做的:

    1. 启动码头

    2. 将war1.war放在/webapps中-->这将触发一个新的/war1上下文,并且它可以工作。

    3. 将war2.war放在/webapps中-->这将触发一个新的/war2上下文,并且它可以工作。

    4. 假设我在战争中做了一些发展上的改变。我想在/webapps中升级war1.war,但是Windows抱怨这个文件被使用了。

    5. 我停码头

    6. 我把新的war1.war放在/webapps中-->一切正常。

    问题->如何在不关闭码头的情况下重新加载war1.war?

    1 回复  |  直到 10 年前
        1
  •  3
  •   Robert Munteanu    14 年前

    我想你遇到了 Files locked on Windows :

    Jetty为web应用程序缓冲静态内容,如html文件、css文件、图像等,如果使用NIO连接器,则使用内存映射文件来执行此操作。问题是,在Windows上,内存映射文件会导致文件被锁定,从而无法更新或替换该文件。这意味着您必须有效地停止Jetty以更新文件。

    有两种解决方案,都记录在上述链接中:

    • 禁用内存映射;
    • 在部署时始终复制web应用程序目录。