【问题标题】:How do I create a virtual directory in Tomcat 7?如何在 Tomcat 7 中创建虚拟目录?
【发布时间】:2011-05-10 22:03:31
【问题描述】:

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。

【问题讨论】:

    标签: java tomcat tomcat7


    【解决方案1】:

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

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

    注意事项:

    1. 我使用的是 Linux,但这是
      也可以在 Windows Vista &
      Windows 7。
    2. 使用这种方法使用战争仍然很尴尬。 战争是 zip 文件,所以最好 将您的战争解压缩到一个
      版本命名的文件夹。

    解决方案:

    从 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

    【讨论】:

      【解决方案2】:

      您有权设置 Host 条目的 appBase 参数。这是以前的问题,讨论了在 windows 下需要什么:Apache Tomcat under Windows: Changing webapps default directory

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

      【讨论】:

      • 我仍然无法使用我最初帖子中指定的主机条目看到我的应用程序。可能我只是不知道这里使用的默认 URL,因为我确实看到我的代码正在初始化并且我看到它产生日志,但是当我使用 URL localhost:8080/MyApp 时我看不到它
      猜你喜欢
      • 2011-04-09
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      相关资源
      最近更新 更多