日期:2014-05-16  浏览次数:20735 次

webloigc 使用 spring-loaded 报错,java.lang.SecurityException: 无法定位登录配置

spring-loaded是spring的一个开源项目,用于解决热部署的问题,类似于jrebel,但是jrebel是需要付费的,而spring-loaded则不需要,背景就先说到这,现在回归正传。今天按照官方指导文档,在weblogic的启动脚本(starWeblogic.bat)的SAVE_JAVA_OPTIONS中增加如下配置:

-javaagent:D:\devtools\spring_loaded\springloaded-1.2.0.RELEASE.jar -noverify 

天下无免费的午餐,使用开源工具的道路总是坎坷的,启动的时候就报错了,报错如下:

java.lang.reflect.InvocationTargetException
	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.springsource.loaded.ri.ReflectiveInterceptor.jlrConstructorNewInstance(ReflectiveInterceptor.java:1002)
	at org.springsource.loaded.ri.ReflectiveInterceptor.jlClassNewInstance(ReflectiveInterceptor.java:989)
	at weblogic.security.service.PrincipalAuthenticator.loadConfFileForJVM(PrincipalAuthenticator.java:210)
	at weblogic.security.service.PrincipalAuthenticator.initialize(PrincipalAuthenticator.java:134)
	at weblogic.security.service.PrincipalAuthenticator.<init>(PrincipalAuthenticator.java:320)
	at weblogic.security.service.CommonSecurityServiceManagerDelegateImpl.doATN(CommonSecurityServiceManagerDelegateImpl.java:720)
	at weblogic.security.service.CommonSecurityServiceManagerDelegateImpl.initializeRealm(CommonSecurityServiceManagerDelegateImpl.java:504)
	at weblogic.security.service.CommonSecurityServiceManagerDelegateImpl.loadRealm(CommonSecurityServiceManagerDelegateImpl.java:840)
	at weblogic.security.service.CommonSecurityServiceManagerDelegateImpl.initializeRealms(CommonSecurityServiceManagerDelegateImpl.java:869)
	at weblogic.security.service.CommonSecurityServiceManagerDelegateImpl.initialize(CommonSecurityServiceManagerDelegateImpl.java:1028)
	at weblogic.security.service.SecurityServiceManager.initialize(SecurityServiceManager.java:875)
	at weblogic.security.SecurityService.start(SecurityService.java:141)
	at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
	at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
	at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
Caused by: java.lang.SecurityException: 无法定位登录配置
	at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:93)
	... 19 more
Caused by: java.io.IOException: 无法定位登录配置
	at com.sun.security.auth.login.ConfigFile.init(ConfigFile.java:250)
	at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:91)
	... 19 more
由于spring-loaded相关资料比较少,找了很久都没有找到对应的解决方案,笔者就死马当活马医,既然你报错说没有找到配置,我就给你一个吧,不过只给你空的,在配置中再加一点东西,修改成这样。

-javaagent:D:\devtools\spring_loaded\springloaded-1.2.0.RELEASE.jar -noverify -Djava.security.auth.login.config=D:/devtools/spring_loaded/file.conf
这个file.conf是一个空的文件,奇迹发生了,居然好了,具体原因还没细找,先在这里分享一下。