Tomcat 7:使用了错误的域名?

时间:2016-04-15 17:48:39

标签: tomcat tomcat7

有人可以帮我诊断这个问题吗?

在server.xml中,我有两个领域定义

<Engine name="Catalina" defaultHost="localhost">
  <Realm className="org.apache.catalina.realm.LockOutRealm">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
  </Realm>
  <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" deployIgnore="^welcome.*">
    <Realm className="org.apache.catalina.realm.LockOutRealm" failureCount="3" lockOutTime="3600">
      <Realm className="org.apache.catalina.realm.JDBCRealm" driverName="org.postgresql.Driver" connectionURL="jdbc:postgresql://localhost:5432/tomcat" connectionName="tomcat" connectionPassword="xxxxx" userTable="users" userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles" roleNameCol="role_name"/>
    </Realm>
  </Host>
</Engine>

我希望JDBCRealm优先于UserDatabaseRealm。 但是,Web应用程序(直接位于webapps中的目录,没有META-INF / context.xml文件)正在针对UserDatabaseRealm进行身份验证。

该应用程序的WEB-INF / web.xml的相关部分如下所示:

<security-constraint>
  <web-resource-collection>
    <web-resource-name>public</web-resource-name>
    <url-pattern>/public/*</url-pattern>
  </web-resource-collection>
</security-constraint>

<security-constraint>
  <web-resource-collection>
    <web-resource-name>My Realm</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>test_role</role-name>
  </auth-constraint>
</security-constraint>

<login-config>
  <auth-method>FORM</auth-method>
  <form-login-config>
    <form-login-page>/public/login.xhtml</form-login-page>
    <form-error-page>/public/login-failed.xhtml</form-error-page>
  </form-login-config>
</login-config>

如果我在该应用程序的META-INF / context.xml

中声明它,JDBCRealm确实适用于特定的应用程序

这里有什么不对吗?

1 个答案:

答案 0 :(得分:0)

不是真正的答案,但我的tomcat安装现在正如我所期望的那样,关于每个Web应用程序使用哪个领域。

为了它的价值,我唯一不同的就是在eclipse&amp;和本地编辑项目。重新上传战争。以前,我一直在Tomcat服务器上进行原位编辑。然后重新启动服务。

我假设所有Tomcat的配置都是从头开始重新加载的 服务重启,所以我不知道为什么我看到了以前的行为。