【问题标题】:need to configure an old JDBCRealm for tomcat webapp with oracle database需要为带有 oracle 数据库的 tomcat webapp 配置旧的 JDBCRealm
【发布时间】:2012-05-21 14:33:25
【问题描述】:

我正在尝试恢复一些旧的 java webapps,但丢失了我的旧 glassfish 配置文件,其中定义了我的 JDBCRealm。现在我正在尝试将旧战争部署到 Tomcat 7,并且需要重新创建 JDBCRealm 来验证用户身份。自从我从事这些工作以来已经很长时间了,我不记得该怎么做,我查看了官方文档,但它缺少 oracle 的连接URL。我认为我的数据库是像以前一样使用用户和角色表设置的。

我什至可以在 Tomcat 7 上重用在 glassfish 3 上运行的旧战争吗?它包含一个 sun-web.xml 文件。这只是为了玻璃鱼吗?

我正在使用表单验证方法 - 这是我的 web.xml 的 sn-p:

 <login-config>
<auth-method>FORM</auth-method>
<realm-name>jdbc/myapp/realm</realm-name>
<form-login-config>
  <form-login-page>/loginPage.jsp</form-login-page>
  <form-error-page>/loginError.jsp</form-error-page>
</form-login-config>

这是来自 server.xml 文件的我的领域 sn-p:

  <Realm className="org.apache.catalina.realm.LockOutRealm">

    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
      resourceName="UserDatabase"/>

  </Realm>


  <Realm className="org.apache.catalina.realm.JDBCRealm" 
driverName="oracle.jdbc.OracleDriver"
connectionURL="jdbc:oracle:thin:@localhost:1521:XE"
   userTable="users"userNameCol="username" 
userCredCol="wpassword"userRoleTable="roles"roleNameCol="rolename"/>

我的 connectionURL 看起来正确吗?还有什么可能是错的?现在,当我尝试登录时,它永远不会接受我的密码。我总是得到我的登录错误页面(不是一个完整的应用程序崩溃)。

最新领域版本:

<Realm className="org.apache.catalina.realm.JDBCRealm"
       driverName="oracle.jdbc.OracleDriver"
       connectionURL="jdbc:oracle:thin:@localhost:1521:XE"
       connectionName="uname"
       connectionPassword="pword_33"
       userTable="USERS"
       userNameCol="USERNAME"
       userCredCol="WPASSWORD"
       userRoleTable="ROLES"
       roleNameCol="ROLENAME" />

【问题讨论】:

    标签: forms oracle tomcat glassfish jdbcrealm


    【解决方案1】:

    连接 URL 看起来没问题,假设数据库 sid 是 XE。您似乎缺少 connectionName 和 connectionPassword 属性。 docs 中以粗体列出的任何属性都是必需的。

    【讨论】:

    • 试过了,但还是没有运气,--请参阅上面我的领域的最新版本。
    • 那么上面的一个设置是不正确的(只有你能分辨出哪个)或者你使用的用户名和密码在数据库中不匹配或者没有必要的角色。打开 org.apache.catalina.authenticator 包的调试日志记录应该会给你一些关于哪里出了问题的线索(假设你使用的是容器管理的身份验证)。
    • 我的 Windows 防火墙是否会阻止它,即使它在本地运行?我回家后会尝试调试日志记录。谢谢
    • 好的,我决定只删除 JDBCRealm 并只使用 xml 文件 - 所以在我的例子中是 tomcat-users 来定义我的用户。我删除了 realmname 元素并在 tomcatusers 中定义了一些用户 - 我还需要做什么才能使其工作?现在,当我转到受保护的页面时出现 403 错误。所以系统没有找到我的用户。另外,我之前已经将它部署到 glassfish,是否需要删除旧的 sun-web.xml 文件?
    • 好的,我通过将我的 url 模式更改为指向虚假内容来解决我的问题。谢谢。
    猜你喜欢
    • 2011-12-14
    • 2014-03-22
    • 1970-01-01
    • 2018-08-01
    • 2018-10-16
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 2016-08-17
    相关资源
    最近更新 更多