2012-03-22 93 views
0

我试图从Tomcat 6Tomcat的迁移 - 身份验证问题

的应用程序迁移到Tomcat 7使用形式的认证,并在应用程序登录时卡在/ j_security_check为空白页。

Tomcat显示用户已通过身份验证并出现错误。

java.lang.NoSuchMethodError: org.apache.catalina.realm.GenericPrincipal.getRealm()Lorg/apache/catalina/Realm; 

不知道该从哪里出发。

[编辑]

在Tomcat服务器上的server.xml文件只是默认。

context.xml的应用程序中的

<Realm 
    appName="Informer" className="AuthRealm" 
    dbContext="java:comp/env/jdbc/appdb" debug="2" 
    krbFile="C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 7.0.14\\conf\\krb5.conf" 
    loginFile="C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 7.0.14\\conf\\jaas.conf"      
    ndcLdap="ldap://server:389" 
    nedLdap="ldap://server:389" roleClassNames="" 
    useContextClassLoader="true" userClassNames="" /> 

[[编辑]]

我打电话的getRealm()方法来生成一个新的GenericPrincipal对象。看起来我只需要更新到新的构造函数。

[[[EDIT]]]

两个问题。我正在调用getRealm(),并且调用是在一个构造函数中,不再将领域作为参数。

因此,我查找了GenericPrincipal的新构造函数,我所要做的就是从参数中移除getRealm()调用。

已解决。

问候,

+0

你的配置文件是什么? – madth3 2012-03-22 16:52:00

回答

1

我没有看到AuthRealm类在Tomcat文档。我想这是一个自定义的Realm,它针对Tomcat 6编程,现在API已经改变。

对象org.apache.catalina.realm.GenericPrincipalversion 6更改为version 7,现在它没有getRealm()方法。

+0

是的你是对的。 – 2012-03-22 17:27:00

+0

只需通过删除getRealm()调用来更新构造函数 – 2012-03-22 18:04:05