Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java tomcat将模块war部署到子url路径_Java_Spring_Tomcat_Web_War - Fatal编程技术网

Java tomcat将模块war部署到子url路径

Java tomcat将模块war部署到子url路径,java,spring,tomcat,web,war,Java,Spring,Tomcat,Web,War,我有一个多模块maven项目,其结构如下: app // parent/root project folder |- src |- target |- app.war // common features |- app-payment // child/module folder |- src |- target |- app-payment.war //

我有一个多模块maven项目,其结构如下:

app                // parent/root project folder
 |- src         
 |- target
      |- app.war   // common features
 |- app-payment    // child/module folder
        |- src   
        |- target
             |- app-payment.war  // shop/pay features
../webapps/webapp.war
../webapps/webapp#subapp.war
如何将两个war文件映射到如下URL

requests for    
   localhost:8080/app/payment   --goto-->   $CATALINA_HOME/webapps/app-payment.war (or any other locations, doesn't matter)
other requests for
   localhost:8080/app           --goto-->   $CATALINA_HOME/webapps/app.war
web.xml
->
两者都是
/

我使用的是tomcat 8.5,如果可能的话,我希望保留默认设置(例如,不要在server.xml中添加
,保持autoDeploy=true)。因此,可能是在一个关于上下文的单词中提供的方法 不起作用(无论如何都试过了,没有)

如果这是一个XY问题……使用/修改tomcat来实现这样的url模式是否正确?或者我应该更改项目设置(或设计)?这是一个SpringMVC项目,整个spring-*.xml就像一个神话


catalina.2017-03-29.log:

29-Mar-2017 17:28:49.472 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina 29-Mar-2017 17:28:49.472 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.5 29-Mar-2017 17:28:49.494 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive C:\Program_Files\tomcat-8.5.5\webapps\payment.war 29-Mar-2017 17:28:49.505 WARNING [localhost-startStop-1] org.apache.catalina.startup.SetContextPropertiesRule.begin [SetContextPropertiesRule]{Context} Setting property 'antiJARLocking' to 'true' did not find a matching property. 29-Mar-2017 17:28:51.071 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 29-Mar-2017 17:28:52.480 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive C:\Program_Files\tomcat-8.5.5\webapps\payment.war has finished in 2,985 ms 29-Mar-2017 17:28:52.482 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory C:\Program_Files\tomcat-8.5.5\webapps\docs 29-Mar-2017 17:28:52.494 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory C:\Program_Files\tomcat-8.5.5\webapps\docs has finished in 12 ms 29-Mar-2017 17:28:52.494 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory C:\Program_Files\tomcat-8.5.5\webapps\examples 2017年3月29日17:28:49.472信息[main]org.apache.catalina.core.StandardService.startInternal启动服务catalina 2017年3月29日17:28:49.472信息[main]org.apache.catalina.core.standardeengine.start内部启动Servlet引擎:apache Tomcat/8.5.5 2017年3月29日17:28:49.494信息[localhost-startStop-1]org.apache.catalina.startup.HostConfig.deployWAR部署web应用程序存档C:\Program\u Files\tomcat-8.5.5\webapps\payment.war 2017年3月29日17:28:49.505警告[localhost-startStop-1]org.apache.catalina.startup.SetContextPropertiesRule.begin[SetContextPropertiesRule]{Context}将属性“antiJARLocking”设置为“true”未找到匹配的属性。 2017年3月29日17:28:51.071信息[localhost-startStop-1]org.apache.jasper.servlet.TldScanner.scanJars至少扫描了一个JAR以查找TLD,但未包含TLD。为此记录器启用调试日志记录以获取已扫描的JAR的完整列表,但未找到TLD。在扫描过程中跳过不需要的JAR可以缩短启动时间和JSP编译时间。 2017年3月29日17:28:52.480信息[localhost-startStop-1]org.apache.catalina.startup.HostConfig.deployWAR web应用程序归档文件的部署C:\Program\u Files\tomcat-8.5.5\webapps\payment.war在2985毫秒内完成 2017年3月29日17:28:52.482信息[localhost-startStop-1]org.apache.catalina.startup.HostConfig.deployDirectory部署web应用程序目录C:\Program\u Files\tomcat-8.5.5\webapps\docs 2017年3月29日17:28:52.494信息[localhost-startStop-1]org.apache.catalina.startup.HostConfig.deployDirectory web应用程序目录C:\Program\u Files\tomcat-8.5.5\webapps\docs的部署在12毫秒内完成 2017年3月29日17:28:52.494信息[localhost-startStop-1]org.apache.catalina.startup.HostConfig.deployDirectory部署web应用程序目录C:\Program\u Files\tomcat-8.5.5\webapps\examples
尝试更改war文件的
context.xml

 <Context antiJARLocking="true" path="/app/payment"/>

默认情况下,它将是

 <Context antiJARLocking="true" path="/app-payment"/>

我知道这是一篇老文章,但我想与大家分享一下。我必须做一些类似的事情,我有一个web应用程序,然后是另一个单独的web应用程序,需要在核心应用程序的相同目录名下运行。所以有点像

https://www.example.com/webapp (main app)
https://www.example.com/webapp/subapp (sub-app)
为此,我将其部署到Tomcat webapps文件夹中,如下所示:

app                // parent/root project folder
 |- src         
 |- target
      |- app.war   // common features
 |- app-payment    // child/module folder
        |- src   
        |- target
             |- app-payment.war  // shop/pay features
../webapps/webapp.war
../webapps/webapp#subapp.war

这对我来说很有魅力。如果我没记错的话,这是完全支持的,没有任何其他配置(Tomcat v7和v8…还没有尝试v9)。

是xx.war/META-INF下的context.xml吗?是的,正确。相同的context.xml。另外,我建议您在部署新应用程序之前完全取消部署现有应用程序抱歉,我已经尝试过了,这也不起作用。。。webapps/app-payment.war仍然成为localhost:8080/app-payment。。。但是找到这个…你完全删除了旧的部署吗?你不是在调整tomcat。您正在修改应用程序