AuthzForce 更新策略失败

AuthzForce failed update policies

我正在为一个角色分配权限(只能访问 /resource1)。 但是 Keyrock 给我一个错误 'Failed to update policies in Access Control GE'.

因此,即使我使用具有只能访问 resource1 权限的访问令牌请求 resource2(而不是 resource1),AuthzForce 也允许访问,因为策略未更新(这可能是其他问题)。

问题是为什么authzforce不能更新策略?

现在,我已成功将权限关联到角色(策略更新失败除外),并将角色分配给用户。然后我仔细检查了 Keyrock 和 AuthzForce 的配置。我觉得他们关系很好。

Error msg of Keyrock

What makes I think AuthzForce is working well (this is the Wilma's successful log when I send a access request to Wilma with the access token)

请参考上面的图片,下面的配置和环境。

// 'local_settings.py' in Keyrock
ACCESS_CONTROL_URL = 'http://127.0.0.1:8080'
ACCESS_CONTROL_MAGIC_KEY = 'abcdefghijkmn'

我的环境:

OS: Ubuntu 16.04
Keyrock: 5.4.0 (https://github.com/ging/fiware-idm)
AuthzForce: 7.0.0
Wilma: 5.4.0 (https://github.com/ging/fiware-pep-proxy)

安装AuthzForce 5.4.1时的错误日志(/var/log/tomcat7/authzforce-ce/error.log)(我使用AuthzForce 7.0.0的原因)。我在安装authzforce-5.4.1时使用了openjdk-7和tomcat7。

2017-05-09 07:10:47,087|ERROR|localhost-startStop-2|org.springframework.web.context.ContextLoader:324|Context initialization failed|
java.lang.NoSuchMethodError: java.util.concurrent.ConcurrentHashMap.keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
    at org.apache.catalina.core.ApplicationContext.getInitParameterNames(ApplicationContext.java:368) ~[tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ApplicationContextFacade.getInitParameterNames(ApplicationContextFacade.java:367) ~[tomcat-catalina-7.0.68.jar:7.0.68]
    at org.springframework.web.context.support.WebApplicationContextUtils.registerEnvironmentBeans(WebApplicationContextUtils.java:201) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.postProcessBeanFactory(AbstractRefreshableWebApplicationContext.java:169) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:458) ~[spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5068) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5584) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:677) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1962) [tomcat-catalina-7.0.68.jar:7.0.68]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_95]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_95]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_95]
2017-05-09 07:10:47,103|WARN |localhost-startStop-2|org.springframework.web.context.support.XmlWebApplicationContext:1052|Exception thrown from ApplicationListener handling ContextClosedEvent|
java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: Root WebApplicationContext: startup date [Tue May 09 07:10:46 GMT-08:00 2017]; root of context hierarchy
    at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:347) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:334) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1049) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1010) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:558) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:143) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5115) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5779) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:159) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:677) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1962) [tomcat-catalina-7.0.68.jar:7.0.68]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_95]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_95]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_95]
2017-05-09 07:10:47,104|WARN |localhost-startStop-2|org.springframework.web.context.support.XmlWebApplicationContext:1060|Exception thrown from LifecycleProcessor on context close|
java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: Root WebApplicationContext: startup date [Tue May 09 07:10:46 GMT-08:00 2017]; root of context hierarchy
    at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:360) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1057) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1010) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:558) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:143) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5115) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5779) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:159) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:677) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1962) [tomcat-catalina-7.0.68.jar:7.0.68]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_95]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_95]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_95]
2017-05-09 07:11:46,095|ERROR|localhost-startStop-1|org.springframework.web.context.ContextLoader:324|Context initialization failed|
java.lang.NoSuchMethodError: java.util.concurrent.ConcurrentHashMap.keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
    at org.apache.catalina.core.ApplicationContext.getInitParameterNames(ApplicationContext.java:368) ~[tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ApplicationContextFacade.getInitParameterNames(ApplicationContextFacade.java:367) ~[tomcat-catalina-7.0.68.jar:7.0.68]
    at org.springframework.web.context.support.WebApplicationContextUtils.registerEnvironmentBeans(WebApplicationContextUtils.java:201) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.postProcessBeanFactory(AbstractRefreshableWebApplicationContext.java:169) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:458) ~[spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5068) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5584) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:677) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1962) [tomcat-catalina-7.0.68.jar:7.0.68]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_95]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_95]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_95]
2017-05-09 07:11:46,112|WARN |localhost-startStop-1|org.springframework.web.context.support.XmlWebApplicationContext:1052|Exception thrown from ApplicationListener handling ContextClosedEvent|
java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: Root WebApplicationContext: startup date [Tue May 09 07:11:45 GMT-08:00 2017]; root of context hierarchy
    at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:347) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:334) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1049) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1010) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:558) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:143) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5115) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5779) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:159) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:677) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1962) [tomcat-catalina-7.0.68.jar:7.0.68]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_95]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_95]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_95]
2017-05-09 07:11:46,113|WARN |localhost-startStop-1|org.springframework.web.context.support.XmlWebApplicationContext:1060|Exception thrown from LifecycleProcessor on context close|
java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: Root WebApplicationContext: startup date [Tue May 09 07:11:45 GMT-08:00 2017]; root of context hierarchy
    at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:360) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1057) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1010) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:558) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:143) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5115) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5779) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:159) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:677) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1962) [tomcat-catalina-7.0.68.jar:7.0.68]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_95]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_95]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_95]
2017-05-09 07:12:05,523|ERROR|localhost-startStop-1|org.springframework.web.context.ContextLoader:324|Context initialization failed|
java.lang.NoSuchMethodError: java.util.concurrent.ConcurrentHashMap.keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
    at org.apache.catalina.core.ApplicationContext.getInitParameterNames(ApplicationContext.java:368) ~[tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ApplicationContextFacade.getInitParameterNames(ApplicationContextFacade.java:367) ~[tomcat-catalina-7.0.68.jar:7.0.68]
    at org.springframework.web.context.support.WebApplicationContextUtils.registerEnvironmentBeans(WebApplicationContextUtils.java:201) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.postProcessBeanFactory(AbstractRefreshableWebApplicationContext.java:169) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:458) ~[spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5068) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5584) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:677) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1962) [tomcat-catalina-7.0.68.jar:7.0.68]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_95]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_95]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_95]
2017-05-09 07:12:05,549|WARN |localhost-startStop-1|org.springframework.web.context.support.XmlWebApplicationContext:1052|Exception thrown from ApplicationListener handling ContextClosedEvent|
java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: Root WebApplicationContext: startup date [Tue May 09 07:12:05 GMT-08:00 2017]; root of context hierarchy
    at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:347) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:334) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1049) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1010) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:558) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:143) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5115) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5779) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:159) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:677) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1962) [tomcat-catalina-7.0.68.jar:7.0.68]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_95]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_95]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_95]
2017-05-09 07:12:05,550|WARN |localhost-startStop-1|org.springframework.web.context.support.XmlWebApplicationContext:1060|Exception thrown from LifecycleProcessor on context close|
java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: Root WebApplicationContext: startup date [Tue May 09 07:12:05 GMT-08:00 2017]; root of context hierarchy
    at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:360) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1057) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1010) [spring-context-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:558) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:143) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5115) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5779) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:159) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:677) [tomcat-catalina-7.0.68.jar:7.0.68]
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1962) [tomcat-catalina-7.0.68.jar:7.0.68]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_95]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_95]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_95]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_95]

好的,所以解决方案是升级到 KeyRock 5.4.1。