Java 如何在Tomcat7中代理不同的战争?

Java 如何在Tomcat7中代理不同的战争?,java,tomcat,reverse-proxy,Java,Tomcat,Reverse Proxy,我正在开发一个web应用程序,它由两个独立的部分组成——身份验证部分和实际应用程序部分。这两个部分都是WARs,部署在(当前)一个tomcat7实例上 因此,我的webapps文件夹中有以下两个WARs: webapps | +- BloggofantAuthentication | +- Bloggofant 到目前为止,可在http://127.0.0.1:8080/BloggofanAuthentication和http://127.0.0.1:8080/Bloggofant。有没有可能

我正在开发一个web应用程序,它由两个独立的部分组成——身份验证部分和实际应用程序部分。这两个部分都是
WAR
s,部署在(当前)一个tomcat7实例上

因此,我的
webapps
文件夹中有以下两个
WAR
s:

webapps
|
+- BloggofantAuthentication
|
+- Bloggofant
到目前为止,可在
http://127.0.0.1:8080/BloggofanAuthentication
http://127.0.0.1:8080/Bloggofant
。有没有可能直接在Tomcat上使用proxyWARs(这样我就不必使用
apachehttpd
及其
mod_proxy
模块)?因此,最终,服务器上的
WAR
s可以访问,如下所示:

  • http://127.0.0.1:8080/BloggofantAuthentication
    -->
    http://127.0.0.1/bloggo/
  • http://127.0.0.1:8080/Bloggofant
    -->
    http://127.0.0.1/bloggo/fant/
非常感谢您对本主题的任何建议;)

编辑 以下是两个未打包的webapp WAR文件夹的
context.xml
文件:

webapps/BloggofantAuthentication/META-INF/context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context path="">
    <!-- Comment this to enable session persistence across Tomcat restarts -->
    <Manager pathname=""/>
</Context>
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/bloggofant">
    <!-- Comment this to enable session persistence across Tomcat restarts -->
    <Manager pathname=""/>
</Context>

webapps/Bloggofant/META-INF/context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context path="">
    <!-- Comment this to enable session persistence across Tomcat restarts -->
    <Manager pathname=""/>
</Context>
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/bloggofant">
    <!-- Comment this to enable session persistence across Tomcat restarts -->
    <Manager pathname=""/>
</Context>


如果我现在想通过
http://127.0.0.1:8080
http://127.0.0.1:8080/bloggofant
我得到了一个404-找不到页面错误…

您可以使用。您可以将其放入WAR的META-INF目录,内容如下:

<Context path="/bloggo/fant" />

它将在那里提供服务,而不是默认的
/Bloggofant
路径

请注意文档中的以下内容:

当主机执行autoDeploy或deployOnStartup操作时,web应用程序的名称和上下文路径将从定义web应用程序的文件名派生。因此,上下文路径可能不会在应用程序中嵌入的META-INF/context.xml中定义


在其他地方,文件告诉我们。因此,您需要将它们设置为false,才能遵守这些设置。

为什么验证不是webapp本身的一部分?为什么不使用包含的托管身份验证?@Michael-O身份验证部分应该放在它自己的Tomcat实例上,并为它背后的一系列应用程序提供服务——可以将它想象为它自己的“代理”。我不使用包含的托管身份验证,因为我必须使用后端API来实现此目的,并且在这个问题上没有灵活性…好吧,那么您的身份验证有什么特别之处?@Michael-O虽然我想讨论身份验证的需要和特殊要求,但我想知道如何“代理”首先是两个战争档案-所以请不要感到冒犯,但我不想进一步讨论这个问题,因为我想继续这个话题:)非常感谢你的回答!我将
行添加到
webapps/BloggofantAuthentication/META-INF
下的
context.xml
文件中,并重新启动了Tomcat 7。如果我现在想访问这些页面,我看到的只是一个空白页面(虽然没有错误)…你有任何进一步的提示或建议吗?请参阅我在第一篇文章中的编辑,内容包括
context.xml
文件…嗯。您还需要禁用自动部署-请参阅我的编辑。啊,我明白了-非常感谢,我完全忽略了这一点。现在可以了!非常感谢。别担心,我也错过了!