【发布时间】:2013-12-29 04:06:15
【问题描述】:
我正在使用 Apache Tomcat 开发一个 webapp。此 webapp 将部署在托管其他 webapps 的服务器中。现在,由于我的 webapp 需要用户进行身份验证,我需要修改 Tomcat 的“conf”目录中的一些文件,例如“tomcat-users.xml”。问题是这些文件与其他 webapps 共享。有没有办法让我的 webapp 有一个与共享目录分开的“conf”目录? 谢谢你。
【问题讨论】:
我正在使用 Apache Tomcat 开发一个 webapp。此 webapp 将部署在托管其他 webapps 的服务器中。现在,由于我的 webapp 需要用户进行身份验证,我需要修改 Tomcat 的“conf”目录中的一些文件,例如“tomcat-users.xml”。问题是这些文件与其他 webapps 共享。有没有办法让我的 webapp 有一个与共享目录分开的“conf”目录? 谢谢你。
【问题讨论】:
Tomcat 允许您通过在 $CATALINA_BASE/conf/[enginename]/[hostname] 下创建一个名为 [YourWebappName].xml 的 xml 文件,从主 server.xml 配置 separate out。
例如:$CATALINA_BASE/conf/Catalina/localhost/PetClinic.xml
这个文件基本上包含一个<Context> 元素,定义了webapp 特定的上下文配置。在这里,您可以使用您的应用所需的身份验证参数定义您自己的特定于 Web 应用的 realm。
此机制旨在让您可以修改 webapp 特定配置,而无需触及 Tomcat 的 conf 文件夹中的顶级共享文件。
【讨论】:
context.xml 文件中的Context 元素下面直接嵌套一个Realm 元素(您应该可以从server.xml 中将其大量提升)。您还可以为 webapp 特定用户创建一个WEB-INF/users.xml 文件,这样您就不需要触摸tomcat-users.xml。有一篇很好的文章 here(虽然有几年历史了,但应该还是不错的)通过示例文件的外观引导您完成。
conf/[enginename]/[hostname]/[YourWebappName].xml. 你可以在你的webapp中提供一个META-INF/Context.xml。