cas启用mongodb验证方式登录后没反应
控制台输出
2017-02-09 20:27:15,766 INFO [org.jasig.cas.authentication.MongoAuthenticationHandler] - <Connected to MongoDb instance @ [192.168.30.29:27017] using database [testCrm]>
然后我们定位到MongoAuthenticationHandler中打断点,单点登录后发现
pac4j-mongo包中的MongoAuthenticator报错InvocationTargetException。
原因
导致InvocationTargetException的最常见原因是缺少包。
在某一个项目A中使用了某个jar包x.jar,
而x.jar引入了一个类Y,
应该包含y.jar才可以使用Y类。
但是y.jar没有被包含到工程中,
这时候就会在项目A中跑出InvocationTargetException。
解决方案
我马上检查了发布到tomcat中的cas项目发现确实是没有pac4j-mongo的jar包。
然后找到pac4j-mongo的jar包并把它引用。
发布项目后lib文件夹已经带有pac4j-mongo的jar包了。
再测试就可以通过了。
断点调试能走到下一步了。
这也给我们一个启示。在引用一个子项目或者jar包时,它所依赖的jar包也是需要导入进来的。
我们使用maven管理jar包的时候,maven自动会给我们下载了关联的jar包。
使用gradle同样会自动下载关联jar包。
而当我们手动的关联子项目或者jar包时,就需要留意了。
引用一个子项目或者jar包时,它所依赖的jar包也是需要导入进来的。