2011-05-10 53 views
1

Tomcat安装在C:\ tomcat7 \上,但我想在C:\ myapp \ xyz中部署.war文件。例如,我可能有C:\ myapps \ xyz \ MyApp.war,我应该能够通过路径http://localhost:8080/MyApp访问它。如何在Tomcat 7中创建虚拟目录?

我想这个追加到c的底部:\ tomcat7 \的conf \ server.xml中

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

这似乎不是,因为我没有看到MyApp的在管理控制台中列出的工作,虽然和我无法击中网址。我还需要做什么?

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

回答

0

您的权利在于您要设置Host条目的appBase参数。这里是讨论如何才能在Windows下前一个问题:Apache Tomcat under Windows: Changing webapps default directory

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

+0

我仍然无法使用我的初始文章中指定的主机条目查看我的应用程序。有可能我只是不知道在这里使用的默认URL,因为我看到我的代码正在初始化,并且看到它生成日志,但是当我使用URL http:// localhost:8080/MyApp的 – Franky

2

不幸的是,这样的Tomcat加载按文件名战争是一个棘手的限制。

我使用稍微不同的&特定于操作系统的方法:“符号链接”。这不是一个直接的答案,但可以帮你解决问题。

注意事项:

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

解决方案:

创建从安装MyApps文件夹中的符号链接(如文件系统中的虚拟目录)到webapps文件夹中。

  • 这使得“coolName”, “coolName-v2”等等
  • 每个web应用 可能被保存在 不同的地方在文件系统中
  • 您可以轻松地“回滚”或只是通过删除并重新添加符号链接到不同的目标(确保“停止”“升级”而切换的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