Java 如何在Tomcat7中代理不同的战争?
我正在开发一个web应用程序,它由两个独立的部分组成——身份验证部分和实际应用程序部分。这两个部分都是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。有没有可能
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/
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
文件…嗯。您还需要禁用自动部署-请参阅我的编辑。啊,我明白了-非常感谢,我完全忽略了这一点。现在可以了!非常感谢。别担心,我也错过了!