【问题标题】:Fail to set up sso/ssl in tomcat 8无法在 tomcat 8 中设置 sso/ssl
【发布时间】:2015-03-05 09:28:48
【问题描述】:

我正在尝试在 tomcat 8 中设置 ssl,并且我遵循了我公司为 tomcat 7 编写的文档。该文档适用于 tomcat 7,但是当我在 tomcat 8 中尝试相同的操作时,我收到以下错误在 catalina.out 日志文件中。你能告诉我是什么导致了这个错误吗? 顺便说一下,日志文件中的 sso 指的是我为测试 sso/ssl 而创建的一个简单的 hello world war 应用程序。

    SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sso]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:714)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:917)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1701)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:812)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [Pipeline[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sso]]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5065)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 10 more
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [com.sap.ldi.tomcat.extensions.SSLAuthenticatorWithFormFallback[/sso]]
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139)
    at org.apache.catalina.core.StandardPipeline.startInternal(StandardPipeline.java:170)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 12 more
Caused by: java.lang.NoClassDefFoundError: org/apache/catalina/deploy/LoginConfig
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2693)
    at java.lang.Class.privateGetPublicMethods(Class.java:2894)
    at java.lang.Class.getMethods(Class.java:1607)
    at org.apache.tomcat.util.modeler.modules.MbeansDescriptorsIntrospectionSource.createManagedBean(MbeansDescriptorsIntrospectionSource.java:297)
    at org.apache.tomcat.util.modeler.modules.MbeansDescriptorsIntrospectionSource.execute(MbeansDescriptorsIntrospectionSource.java:77)
    at org.apache.tomcat.util.modeler.modules.MbeansDescriptorsIntrospectionSource.loadDescriptors(MbeansDescriptorsIntrospectionSource.java:70)
    at org.apache.tomcat.util.modeler.Registry.load(Registry.java:582)
    at org.apache.tomcat.util.modeler.Registry.findManagedBean(Registry.java:485)
    at org.apache.tomcat.util.modeler.Registry.registerComponent(Registry.java:614)
    at org.apache.catalina.util.LifecycleMBeanBase.register(LifecycleMBeanBase.java:161)
    at org.apache.catalina.util.LifecycleMBeanBase.initInternal(LifecycleMBeanBase.java:61)
    at org.apache.catalina.valves.ValveBase.initInternal(ValveBase.java:208)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    ... 15 more
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.deploy.LoginConfig
    at java.net.URLClassLoader$1.run(URLClassLoader.java:435)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:424)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:423)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:493)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:426)
    ... 29 more

【问题讨论】:

  • 您是如何解决tomcat 8 中缺少LoginConfig 的问题的?我现在正在为此苦苦挣扎。

标签: tomcat ssl tomcat7 single-sign-on tomcat8


【解决方案1】:

Tomcat 8 中更改了类 org.apache.catalina.authenticator.AuthenticatorBase。最重要的更改是方法

public boolean authenticate(Request request, HttpServletResponse response) throws IOException

您不再在参数中获得 LoginConfig。现在很容易得到它:

LoginConfig config = context.getLoginConfig();

LoginConfig 已移至另一个包:org.apache.tomcat.util.descriptor.web.LoginConfig。

【讨论】:

    猜你喜欢
    • 2015-11-20
    • 2010-12-17
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 2019-01-19
    相关资源
    最近更新 更多