我有一个大型网络应用程序(在 weblogic 11g上运行),它使用了 spring , spring-security 的组合, mybatis 和 mybatis-spring 。它使用mybatis:使用标记接口(DataAccess
)扫描,将SqlSessionFactory
连接到我们的 DAO 。我们有61个类(接口)来扩展标记接口。
当我们再添加一个扩展DataAccess
(标记)的接口时,应用程序无法启动。我想知道是否有人可以帮助弄清楚为什么再添加一个DataAccess
会导致应用程序出现这些错误。
我可以提供任何有助于解决此问题的信息,但我不知道在我的初始问题中包含哪些内容。
以下是 log4j 日志文件中的前两个错误:
2014-Jul-14 12:58:22.659 [ACTIVE] ExecuteThread:' 40'对于队列: ' weblogic.kernel.Default(自我调整)' DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory 忽略FactoryBean类型上的bean创建异常检查: org.springframework.beans.factory.UnsatisfiedDependencyException: 使用名称' paymentsDataAccess'创建bean时出错在文件中定义 [/opt/..../tmp/_WL_user/..../an9ko4/APP-INF/classes/com/..../payment/app/dao/PaymentsDataAccess.class]: 通过bean属性表示的不满意的依赖性 ' sqlSessionFactory' ::创建名称为bean的错误 '的SqlSessionFactory'在类路径资源中定义 [ServiceConfig.xml]:bean的实例化失败;嵌套异常是 java.lang.StackOverflowError的;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为' sqlSessionFactory'的bean在类路径中定义 resource [ServiceConfig.xml]:bean的实例化失败;嵌套 异常是java.lang.StackOverflowError
2014-Jul-14 12:58:22.666 [ACTIVE] ExecuteThread:' 40'对于队列: ' weblogic.kernel.Default(自我调整)' DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory 忽略FactoryBean类型上的bean创建异常检查: org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名称为' adminSessionDataAccess'的bean时出错在文件中定义 [/opt/..../tmp/_WL_user/..../an9ko4/APP-INF/classes/com/..../dao/AdminSessionDataAccess.class]: 通过bean属性表示的不满意的依赖性 ' sqlSessionFactory' ::创建名称为bean的错误 '的SqlSessionFactory'在类路径资源中定义 [ServiceConfig.xml]:bean的实例化失败;嵌套异常是 java.lang.NoClassDefFoundError:无法初始化类 org.mybatis.spring.SqlSessionFactoryBean;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为' sqlSessionFactory'的bean在类路径中定义 resource [ServiceConfig.xml]:bean的实例化失败;嵌套 异常是java.lang.NoClassDefFoundError:无法初始化 class org.mybatis.spring.SqlSessionFactoryBean
第一个错误有StackOverflowError
的嵌套异常,当我查看生成的堆栈跟踪时,调用堆栈超过1000个方法深度。如果被问到我可以提供堆栈跟踪,但是它非常大,除非有兴趣,否则我不想包含它。
PaymentsDataAccess
课程并不特别 - 它与应用程序中的其他数据访问类一样。
当应用程序没有启动时,似乎还有另一个错误(在 server.log 中),但我不确定它是否相关:
java.lang.instrument ASSERTION FAILED:"!errorOutstanding"使用消息转换方法调用失败 ../../../src/share/instrument/JPLISAgent.c行:805
答案 0 :(得分:0)
你的mybatis-spring版本是什么。如果你的版本低于1.2.0,它确实会导致stackoverflow错误。并尝试1.2.3。