Mic*_*ael 24
Tomcat将始终将war文件的内容提取到同名文件夹(当它配置为部署战争时 - 默认等).
您可以将其解压缩到您选择的文件夹名称.因此,如果您将内容解压缩foo.war到一个名为bar/manual 的文件夹,而不是仅仅将war放入web apps文件夹,它仍然会加载Web应用程序.
但是,这是完全没必要的,因为您可以通过覆盖应用程序的上下文根元素来指定应用程序的URL模式而不会弄乱文件夹/ war文件名:
这通常是在Tomcat中设置的server.xml- 但是这种做法相当普遍是不鼓励的.相反,我建议您context.xml在Web应用程序/ war文件的META-INF文件夹中使用:
<Context path="/bar" .../>
Run Code Online (Sandbox Code Playgroud)
部署应用程序时,context.xml应将其复制到/conf/Catalina/localhost但重命名为foo.xml
请注意,conext根必须是唯一的,如果您正在使用autoDeploy或deployOnStartup操作,还有一些其他注意事项(来源http://tomcat.apache.org/tomcat-7.0-doc/config/context.html).
其他选择包括:
foo-1.1.0战争.foo/version1您还可以使用Ant(或等效工具)自动部署(并执行上述任何操作).
bdu*_*lac 13
有一点需要强调path上下文片段定义的属性.引用有关该主题的文档:
当主机执行autoDeploy或deployOnStartup操作时,Web应用程序的名称和上下文路径是从定义Web应用程序的文件的名称派生的.
deployOnStartup 是Tomcat主机的默认行为.
要遵循文档,这有一个非常重要的后果:
上下文路径可能未在a中定义
META-INF/context.xml
根据定义Tomcat上下文的方式,这只允许两个解决方案:
In individual files (with a ".xml" extension) in the $CATALINA_BASE/conf/[enginename]/[hostname]/ directoryInside a Host element in the main conf/server.xml,这是生产环境中不鼓励的解决方案,因为它需要重新启动服务器另一种解决方案利用了该unpackWARs属性.
在我看来,由于这些原因,在生产环境中实现细微路径的一般而简单的方法是利用war文件的命名(可能包括版本管理和解决您的问题).war文件名中的单个sharp(例如test#path.war)意味着上下文路径中的一个段(例如/ test/path).双锐引入版本号(例如 test#path ## 112.war).无论是否解压缩war文件,热部署是否与部署无关(管理器或文件系统)并管理同一存档的多个版本,这都有效.
但是如果需要有一个与存档名称不同的路径,那么似乎唯一的解决方案是/conf/[enginename]/[hostname]/目录或server.xml文件中的描述符.对于这些,您需要访问服务器文件系统.
相关解决方案与Tomcat在日常工作中的配置和管理方式密切相关.
如果您只想在war文件名中包含版本信息,则可以将其命名为:my-app##1.2.3.war。它被解压缩到目录中,my-app##1.2.3但上下文将只是my-app(即http:// host / my-app /)。
至少与Tomcat 7.0.55兼容
| 归档时间: |
|
| 查看次数: |
61361 次 |
| 最近记录: |