Tomcat的ClassNotFoundException org.apache.catalina.Authenticator

时间:2018-12-19 16:24:10

标签: java tomcat

我正在尝试使用来自IBM的阀门,以通过从IBM Secure Access Manager(Tivoli Access Manager)传递的HTML标头对Tomcat 9进行基于角色的身份验证。我已经在发动机缸体内配置了气门,如下所示:

<Engine name="Catalina" defaultHost="localhost" >
    <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase" />
    </Realm>

    <!-- Here is my valve declaration -->
    <Valve className="com.ibm.tivoli.integration.am.catalina.valves.AMTomcatValve"
           debugTrace="true" addRoles="myrolename" groupsHeader="iv-groups" />

    <Host name="localhost" appBase="/path/to/WARs" unpackWARs="true" autoDeploy="true" >
        <Valve classname="org.apache.catalina.valves.AccessLogValve" 
               directory="logs" prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b />
    </Host>
</Engine>

但是,这会导致Tomcat无法启动。这是Stacktrace:

Server start FAILED
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:306)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:491)
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.Authenticator
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 35 more

我不确定是什么导致此错误,因为类org.apache.catalina.Authenticator显然存在于$CATALINA_HOME/lib目录中的catalina.jar中。我将AMTomcatValve.jar放入$ CATALINA_HOME / lib中,并将其添加到了启动tomcat的java命令的类路径中。

此外,当除去阀标签时,Tomcat映像也会启动。当气门移至发动机缸体之外时,它也会启动(但是将其从上下文中删除),但是当尝试使用IBM Security Access Manger WebSeal进入我的应用程序时,我遇到“意外验证错误”。 / p>

关于如何让Tomcat查找此类有什么建议吗?我真的很想避免编写自定义的登录/身份验证阀

0 个答案:

没有答案