Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
阿帕奇tomcat前沿_Tomcat - Fatal编程技术网

阿帕奇tomcat前沿

阿帕奇tomcat前沿,tomcat,Tomcat,是否可以为单个web应用程序指定多个上下文路径? 例如,我有一个运行在8080端口上的tomcat应用程序myapp。我想用apache解决这个问题,这样localhost/app1或localhost/app2都被路由到tomcat中的myapp。如何实现这一点?我不想使用重定向。无法为同一个应用定义两个路径。您可以为同一WAR指定2个路径,但它仍然是同一应用程序的2个实例 但是,您可以将应用程序定义为ROOT并检查代码中的路径。例如,将应用程序放在webapps/ROOT中,并将此逻辑添加到

是否可以为单个web应用程序指定多个上下文路径?
例如,我有一个运行在8080端口上的tomcat应用程序myapp。我想用apache解决这个问题,这样localhost/app1或localhost/app2都被路由到tomcat中的myapp。如何实现这一点?我不想使用重定向。无法为同一个应用定义两个路径。您可以为同一WAR指定2个路径,但它仍然是同一应用程序的2个实例

但是,您可以将应用程序定义为ROOT并检查代码中的路径。例如,将应用程序放在webapps/ROOT中,并将此逻辑添加到servlet中

String path = request.getPathInfo();

if (path.indexOf("/app1") >= 0)
   app1(request, response);
else if (path.indexOf("/app2") >= 0)
   app2(request, response);

是的,您可以在ApacheWeb服务器设置上执行此操作。此选项与Tomcat无关。您可以对ApacheWeb服务器后面的任何应用程序服务器执行此操作,可以是Tomcat、Jetty,甚至是运行PHP脚本或静态页面的另一个ApacheWeb服务器

实际设置取决于将ApacheWeb服务器连接到Tomcat的方法

例如,如果使用mod_proxy,配置将如下所示:

ProxyPass /app1 http://192.168.11.25:8080/myapp
ProxyPassReverse /app1 http://192.168.11.25:8080/myapp
ProxyPass /app2 http://192.168.11.25:8080/myapp
ProxyPassReverse /app2 http://192.168.11.25:8080/myapp
我刚刚在我的机器上尝试了上述设置,以在两个不同的前端URL中公开相同的WebDAV Subversion

不管你的应用程序是否真的支持这一点,那就另当别论了。如果您的应用程序需要指定前端URL,并且您正在使用mod_代理,例如安装像Atlassian Confluence这样的应用程序,那么这根本不起作用。如果你的应用程序不需要这些,那就好了

但您可以通过创建一个复杂的URL重写(mod_Rewrite)来降低级别,该重写也应该能够解决这个问题


您需要注意的另一件事是您的应用程序处理会话、URL、原始IP地址等的方式。如果它不支持,并且您无法修改应用程序,但是我不想修改我的应用程序,而是想修改httpd.conf,以便它将请求路由到tomcat