部署CAS SSO时提示BEA-101017的解决方法

部署CAS SSO时提示BEA-101017的解决方法

版权声明:本文为炎雨0927(heiyan_7)原创文章,非商用自由转载,请保持署名并注明出处,谢谢。

公司的统一权限管理平台是基于CAS的,由于接入的系统越来越多,近期需要再搭建一台weblogic集群的CAS,在搭建好之后,启动服务时,提示如下错误:

2016-12-29 15:48:44,795 DEBUG [org.apache.activemq.transport.InactivityMonitor] - <30003 ms elapsed since last read check.>
2016-12-29 15:48:51,593 INFO [org.jasig.cas.web.flow.InitialFlowSetupAction] - <Setting path for cookies to: /isc_sso/>
<Dec 29, 2016 3:48:52 PM CST> <Error> <HTTP> <BEA-101017> <[ServletContext@2130204450[app:isc_sso module:isc_sso path:/isc_sso spec-version:2.5]] Root cause of ServletException.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'casSamlServiceSuccessView': Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.jasig.cas.web.view.Saml10SuccessResponseView
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:997)
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:943)
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
       at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
       Truncated. see log file for complete stacktrace
Caused By: java.lang.NoClassDefFoundError: Could not initialize class org.jasig.cas.web.view.Saml10SuccessResponseView
       at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
       at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
       at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
       at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
       Truncated. see log file for complete stacktrace
> 

可以看到,错误码为BEA-101017,查了一些资料,遇到的错误码相同,但是现象和解决方法五花八门,有一种是提到了sam包冲突。由于部署的安装包与之前的单机环境相同,操作系统一致,只有weblogic是重新部署的。注意到日志中有org.jasig.cas.web.view.Saml10SuccessResponseView,而weblogic和cas sso的lib中都包含有sam的jar包,因此采纳了包冲突的解决方案。

操作步骤

  1. 进入weblogic的modules目录:
    如/home/weblogic/Oracle/Middleware/modules,搜索包含sam的jar包,如com.bea.core.bea.opensaml2_1.0.0.0_6-2-0-0.jar、com.bea.core.bea.opensaml_1.0.0.0_6-2-0-0.jar,删除或重命名都可以。
  2. 停止AdminServer的服务,删除servers下除security外的目录及文件
  3. 重启AdminServer。

问题解决,定位过程比较折磨,结果是好的。


版权声明:本文为heiyan_7原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。