Tomcat 6下的Web应用程序特定表单身份验证器

时间:2010-09-18 19:06:51

标签: java tomcat6 context.xml tomcat-valve

在您的帮助下,我已成功解决了我问here的问题。我为Web应用程序开发了一个自定义Tomcat身份验证器,目前身份验证器及其配置文件位于%CATALINA_HOME%\lib\目录中。遗憾的是,身份验证器配置文件几乎与Web应用程序的配置文件(位于%CATALINA_HOME%\webapps\myapp中)的副本相同,而且配置文件显然都共享相同的数据库连接设置。这是不方便的,因为共享唯一的配置文件将是最好的。

我认为有两种方法可以解决这个问题:

  1. 在Tomcat启动时以某种方式找到webapps存在的myapp目录,然后读取应用程序配置文件(从当前情况开始,myapp\WEB-INF\web.xml配置正确)。当然,遗憾的是这需要重启Tomcat。
  2. 可能有一种方法可以将表单身份验证器放入相应的Web应用程序目录中,以便能够直接读取共享配置文件。也许这可能会消除Tomcat重启并允许简单的重新部署。
  3. 如果有可能,我想更喜欢第二种解决方案,但我不确定。如果它们都存在,哪种方式更好?或者是否有任何其他甚至更好的解决方案,而不是将 Web应用程序特定的身份验证器放入%CATALINA_HOME\lib%

    提前致谢并抱歉我的英语。

2 个答案:

答案 0 :(得分:0)

您有一个代码重复的案例。

我建议重构代码,以便Tomcat拥有所有必要的代码来进行身份验证,然后重构您的应用程序以仅使用Tomcat身份验证代码。

如果您的应用程序无法使用Tomcat身份验证,您至少可以在Tomcat中移动公共代码(包括其配置文件),然后使用公共代码。

答案 1 :(得分:0)

啊,这一切都容易多了!主要思想是通过(JDBCRealm) context.getRealm()中的authenticate(...)对象获取连接字符串。这足以解决我的问题。