java - 在 Weblogic 12c 上部署 Spring Security SAML 扩展时出现问题

标签 java spring-security saml-2.0 weblogic12c spring-saml

我正在尝试在 Weblogic 12c 上部署示例应用程序。我可以在 Tomcat 中正常运行它,但是当我尝试将其部署到 Weblogic 时,出现以下错误:

SEVERE: Context initialization failed java.lang.NoClassDefFoundError: org/apache/log4j/Logger

我检查了 pom.xml,我知道 log4j 包含在依赖项中。这是堆栈跟踪:

SEVERE: Context initialization failed java.lang.NoClassDefFoundError: org/apache/log4j/Logger at org.opensaml.xml.XMLConfigurator.(XMLConfigurator.java:60) at org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:195) at org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:91) at org.opensaml.PaosBootstrap.bootstrap(PaosBootstrap.java:27) at org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory(SAMLBootstrap.java:42) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:686) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:676) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:678) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57) at weblogic.servlet.internal.EventsManager.executeContextListener(EventsManager.java:243) at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:200) at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:185) at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1838) at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2876) at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1661) at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:823) at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360) at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:356) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42) at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:138) at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:216) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:211) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42) at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:73) at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:24) at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:729) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42) at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:258) at weblogic.application.internal.EarDeployment.activate(EarDeployment.java:61) at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165) at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80) at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:226) at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:418) at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:51) at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200) at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30) at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240) at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:169) at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123) at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:210) at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:118) at weblogic.server.AbstractServerService.postConstruct(AbstractServerService.java:78) at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1017) at org.jvnet.hk2.internal.ClazzCreator.postConstructMe(ClazzCreator.java:388) at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:430) at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:456) at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:225) at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:82) at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2488) at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:98) at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:606) at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:77) at org.jvnet.hk2.internal.ClazzCreator.resolve(ClazzCreator.java:231) at org.jvnet.hk2.internal.ClazzCreator.resolveAllDependencies(ClazzCreator.java:254) at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:413) at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:456) at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:225) at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:82) at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2488) at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:98) at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:87) at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.oneJob(CurrentTaskFuture.java:1162) at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.run(CurrentTaskFuture.java:1147) at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:548) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311) at weblogic.work.ExecuteThread.run(ExecuteThread.java:263) Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 76 more

(XMLConfigurator.java:60) at org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:195) at org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:91) at org.opensaml.PaosBootstrap.bootstrap(PaosBootstrap.java:27) at org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory(SAMLBootstrap.java:42) Truncated. see log file for complete stacktrace Caused By: java.lang.ClassNotFoundException: org.apache.log4j.Logger at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) Truncated. see log file for complete stacktrace

(XMLConfigurator.java:60) at org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:195) at org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:91) at org.opensaml.PaosBootstrap.bootstrap(PaosBootstrap.java:27) at org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory(SAMLBootstrap.java:42) Truncated. see log file for complete stacktrace Caused By: java.lang.ClassNotFoundException: org.apache.log4j.Logger at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) Truncated. see log file for complete stacktrace (XMLConfigurator.java:60) at org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:195) at org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:91) at org.opensaml.PaosBootstrap.bootstrap(PaosBootstrap.java:27) at org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory(SAMLBootstrap.java:42) Truncated. see log file for complete stacktrace Caused By: java.lang.ClassNotFoundException: org.apache.log4j.Logger at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) Truncated. see log file for complete stacktrace Sep 05, 2014 11:20:17 AM org.springframework.web.servlet.FrameworkServlet initServletBean INFO: FrameworkServlet 'saml': initialization started (XMLConfigurator.java:60) at org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:195) at org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:91) at org.opensaml.PaosBootstrap.bootstrap(PaosBootstrap.java:27) at org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory(SAMLBootstrap.java:42) Truncated. see log file for complete stacktrace Caused By: java.lang.ClassNotFoundException: org.apache.log4j.Logger at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) Truncated. see log file for complete stacktrace

你知道为什么这会在 Weblogic 上爆炸吗?提前致谢!

最佳答案

可能的原因:

a) 它包含在依赖项中,但 Log4j jar 不存在于类路径中,或者已移动。请检查它是否存在于类路径中。

b) 这通常是由于在 web 应用程序库 (WEB-INF/lib) 中导入应用程序服务器中已有的 JAR 引起的。

Thrown if the Java Virtual Machine or a ClassLoader instance tries to load in the definition of a class (as part of a normal method call or as part of creating a new instance using the new expression) and no definition of the class could be found.

The searched-for class definition existed when the currently executing class was compiled, but the definition can no longer be found.

另请参阅:

在 Weblogic 中部署期间。

nested exception is java.lang.NoClassDefFoundError: org/hibernate/ejb/HibernatePersistence

关于java - 在 Weblogic 12c 上部署 Spring Security SAML 扩展时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25690900/

相关文章:

Java hashCode() 在同一对象创建的不同执行中有所不同

java - 关于接口(interface)类的问题

java - 尝试与 web3j (Android) 取得平衡,出现空指针异常

java - 如何延迟加载 Spring Security?

azure - 如何制作适用于 Office 365 的 Google Apps iDP

java - 分而治之 : computing the time elapsed

java - Spring Security 可以在 Spring Controller 方法上使用 @PreAuthorize 吗?

spring - 具有@Secured 的 API 的集成测试

c# - 使用多个签名在 C# 中验证签名的 XML

Node.js Passport-saml 重定向到 localhost :3000/login/callback all the time