3

我正在开发一个 Java 应用程序一段时间。我主要在 .NET 平台上工作。虽然我觉得这两个平台之间有很多概念是共同的,但是我发现一些与配置相关的问题的领域很少。

我正在研究身份验证和授权,并认为我会得到类似于 JAVA 中.NET 的成员资格 API 的东西。我得到的最接近的是使用 j_security_check。我也了解了 JAAS,但我认为这对我来说太深入了。

我已经在数据库中创建了用户和角色表,现在我必须在某处指定 JDBC 领域设置。我正在使用 Tomcat 7.0。在大多数地方,都提到我需要在 server.xml 中指定领域设置。但这不适用于部署在该服务器上的所有 Web 应用程序,因为它将成为服务器级别的配置?

在一个站点上,我什至看到一个开发人员提到了 context.xml,但又看不到一个标准文档提到使用这个 XML 文件来设置 JDBC 领域

在 .NET 中,我们始终将成员资格设置放在 web.config 级别,而不是 Machine.config。

对此完全感到困惑。在这方面寻找一些线索。

4

1 回答 1

4

为什么在 Server.xml 而不是 web.xml 中需要领域设置

这不是真的,您也可以在您的 webapp 中定义它,但只能在特定于 servletcontainer 的配置文件中定义,例如/META-INF/context.xmlTomcat。它无法定义,/WEB-INF/web.xml因为它特定于标准 Servlet API,而不是 servletcontainer 实现。


但这不适用于部署在该服务器上的所有 Web 应用程序,因为它将成为服务器级别的配置?

这是正确的。如果您无法控制服务器或不想通过其他 web 应用程序发布领域,则不建议这样做。


在一个站点上,我什至看到一个开发人员提到了 context.xml,但又看不到一个标准文档提到使用这个 XML 文件来设置 JDBC 领域

您可以在 webapp 的/META-INF/context.xml. 另请参阅Tomcat 自己的有关<Context>元素的文档:

定义上下文

不建议将<Context>元素直接放在server.xml文件中。这是因为它使修改Contextconf/server.xml配置更具侵入性,因为如果不重新启动 Tomcat 就无法重新加载主文件。

可以明确定义各个上下文元素:

  • 在应用程序文件内部的单个文件中/META-INF/context.xml。可选地(基于主机的 copyXML 属性)可以将其复制$CATALINA_BASE/conf/[enginename]/[hostname]/到应用程序的基本文件名并重命名为“.xml”扩展名。

  • 在目录中的单个文件(扩展名为“.xml”)中$CATALINA_BASE/conf/[enginename]/[hostname]/。上下文路径和版本将从文件的基本名称(文件名减去 .xml 扩展名)派生。此文件将始终优先于打包在 Web 应用程序的 META-INF 目录中的任何 context.xml 文件。

  • 在 main 的Host元素内conf/server.xml

(重点不是我的,它已经在 Tomcat 的文档中)

于 2011-11-21T20:56:36.623 回答