如何在Tomcat 7中创建虚拟目录?

时间:2011-05-10 22:03:32

标签: java tomcat tomcat7

Tomcat安装在C:\ tomcat7 \但我想在C:\ myapp \ xyz中部署.war文件。例如,我可能有C:\ myapps \ xyz \ MyApp.war,我应该能够使用路径http://localhost:8080/MyApp来访问它。

我尝试将其附加到c:\ tomcat7 \ conf \ server.xml

的底部
      <Host
          name="myapp"
          appBase="c:\myapps\xyz\"
          unpackWARs="true"
          autoDeploy="true">
      </Host>
    </Engine>
  </Service>
</Server>

这似乎不起作用,因为我没有在管理控制台中看到MyApp,但我无法点击URL。我还需要做什么?

另外,稍微不相关但是,我怎么能没有将war文件的名称绑定到上下文名称或URL路径?例如,我希望http://localhost/coolName指向C:\ myapps \ xyz \ MyApp.war。

2 个答案:

答案 0 :(得分:2)

不幸的是,Tomcat通过文件名加载战争的方式是一个棘手的限制。

我使用稍微不同的&amp;特定于操作系统的方法:“符号链接”。这不是一个直接的答案,但无论如何可能会帮助你。

<强>注意事项:

  1. 我使用Linux,但这是
    也可以在Windows Vista&amp;
    中使用 Windows 7。
  2. 使用这种方法使用战争仍然很尴尬。 战争是zip文件,所以最好 解压你的战争 版本命名的文件夹。
  3. <强>解决方案:

    从myapps文件夹创建符号链接(如文件系统上的虚拟目录)到webapps文件夹。

    • 这样可以启用“coolName”, “coolName-v2”等。
    • 每个webapp 可能会留在 文件系统中的不同位置
    • 只需删除并重新添加指向不同目标的符号链接即可轻松“回滚”或“升级”(确保在切换时“停止”webapp)

    Linux的:

    ln -s target_name link_name
    

    Vista / Windows 7:

    mklink link_name target_name
    

    通过这种方式,您仍然可以使用c:\​​ tomcat7 \ webapps \,但指定符号链接如下:

    mklink c:\tomcat7\webapps\coolName\ c:\myapps\xyz\webapp123\
    

    (注意:对于战争,你需要首先解开战争)

    HTH

答案 1 :(得分:0)

您的权利,您想要设置主机条目的appBase参数。以下是前一个问题,讨论了Windows下的内容:Apache Tomcat under Windows: Changing webapps default directory

至于如何更改应用程序名称,请在META-INF目录中添加context.xml:Separating war application name from war file name