|
I am new to java, try to use Stripes + mybatis 3.06 + spring 3.1 +
eclipse for a simple form application. I unit test one mapper, works fine. However, when runs on Tomcat, there is an error: Mar 19, 2012 1:24:14 PM org.apache.catalina.core.StandardContext listenerStart SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.apache.ibatis.session.Configuration.setDatabaseId(Ljava/lang/ String;)V at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java: 1420) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java: 519) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java: 456) at org.springframework.beans.factory.support.AbstractBeanFactory $1.getObject(AbstractBeanFactory.java:295) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java: 222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java: 292) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java: 194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java: 563) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java: 900) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java: 455) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java: 294) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java: 215) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java: 47) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java: 4779) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java: 5273) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase $StartChild.call(ContainerBase.java:1568) at org.apache.catalina.core.ContainerBase $StartChild.call(ContainerBase.java:1558) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor $Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NoSuchMethodError: org.apache.ibatis.session.Configuration.setDatabaseId(Ljava/lang/ String;)V at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java: 393) at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java: 293) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java: 1479) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java: 1417) ... 22 more Mar 19, 2012 1:24:14 PM org.apache.catalina.core.StandardContext startInternal SEVERE: Error listenerStart Mar 19, 2012 1:24:14 PM org.apache.catalina.core.StandardContext startInternal SEVERE: Context [/GoesStripeDev] startup failed due to previous errors Mar 19, 2012 1:24:14 PM org.apache.catalina.core.ApplicationContext log INFO: Closing Spring root WebApplicationContext Mar 19, 2012 1:24:14 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc SEVERE: The web application [] registered the JDBC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. Mar 19, 2012 1:24:14 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-8080"] Mar 19, 2012 1:24:14 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-bio-8009"] Mar 19, 2012 1:24:14 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 1358 ms Here is my applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd"> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>classpath:database.properties</value> </property> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="$ {database.driverClassName}" /> <property name="url" value="${database.url}" /> <property name="username" value="${database.username}" / > <property name="password" value="${database.password}" / > </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <tx:annotation-driven /> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations" value="classpath:/com/myApp/ mapper/*.xml" /> <property name="typeAliasesPackage" value="com.myApp.domain" / > </bean> <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="com.myApp.mapper.UserMapper" /> </bean> </beans> database: SQL Server 2005, could anyone shed some light on this? Thanks. |
|
You are using MyBatis-Spring 1.1.0 with Mybatis 3.0.6
Upgrade MyBatis to 3.1.0 or downgrade MyBatis-Spring to 1.0.2 El día 22 de marzo de 2012 03:42, Hain Bach <[hidden email]> escribió: > I am new to java, try to use Stripes + mybatis 3.06 + spring 3.1 + > eclipse for a simple form application. I unit test one mapper, works > fine. However, when runs on Tomcat, there is an error: > > Mar 19, 2012 1:24:14 PM org.apache.catalina.core.StandardContext > listenerStart > SEVERE: Exception sending context initialized event to listener > instance of class > org.springframework.web.context.ContextLoaderListener > org.springframework.beans.factory.BeanCreationException: Error > creating bean with name 'sqlSessionFactory' defined in class path > resource [applicationContext.xml]: Invocation of init method failed; > nested exception is java.lang.NoSuchMethodError: > org.apache.ibatis.session.Configuration.setDatabaseId(Ljava/lang/ > String;)V > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java: > 1420) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java: > 519) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java: > 456) > at > org.springframework.beans.factory.support.AbstractBeanFactory > $1.getObject(AbstractBeanFactory.java:295) > at > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java: > 222) > at > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java: > 292) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java: > 194) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java: > 563) > at > org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java: > 900) > at > org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java: > 455) > at > org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java: > 294) > at > org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java: > 215) > at > org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java: > 47) > at > org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java: > 4779) > at > org.apache.catalina.core.StandardContext.startInternal(StandardContext.java: > 5273) > at > org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) > at org.apache.catalina.core.ContainerBase > $StartChild.call(ContainerBase.java:1568) > at org.apache.catalina.core.ContainerBase > $StartChild.call(ContainerBase.java:1558) > at java.util.concurrent.FutureTask$Sync.innerRun(Unknown > Source) > at java.util.concurrent.FutureTask.run(Unknown Source) > at java.util.concurrent.ThreadPoolExecutor > $Worker.runTask(Unknown Source) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown > Source) > at java.lang.Thread.run(Unknown Source) > Caused by: java.lang.NoSuchMethodError: > org.apache.ibatis.session.Configuration.setDatabaseId(Ljava/lang/ > String;)V > at > org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java: > 393) > at > org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java: > 293) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java: > 1479) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java: > 1417) > ... 22 more > Mar 19, 2012 1:24:14 PM org.apache.catalina.core.StandardContext > startInternal > SEVERE: Error listenerStart > Mar 19, 2012 1:24:14 PM org.apache.catalina.core.StandardContext > startInternal > SEVERE: Context [/GoesStripeDev] startup failed due to previous errors > Mar 19, 2012 1:24:14 PM org.apache.catalina.core.ApplicationContext > log > INFO: Closing Spring root WebApplicationContext > Mar 19, 2012 1:24:14 PM org.apache.catalina.loader.WebappClassLoader > clearReferencesJdbc > SEVERE: The web application [] registered the JDBC driver > [com.microsoft.sqlserver.jdbc.SQLServerDriver] but failed to > unregister it when the web application was stopped. To prevent a > memory leak, the JDBC Driver has been forcibly unregistered. > Mar 19, 2012 1:24:14 PM org.apache.coyote.AbstractProtocol start > INFO: Starting ProtocolHandler ["http-bio-8080"] > Mar 19, 2012 1:24:14 PM org.apache.coyote.AbstractProtocol start > INFO: Starting ProtocolHandler ["ajp-bio-8009"] > Mar 19, 2012 1:24:14 PM org.apache.catalina.startup.Catalina start > INFO: Server startup in 1358 ms > > Here is my applicationContext.xml > > <?xml version="1.0" encoding="UTF-8"?> > > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:tx="http://www.springframework.org/schema/tx" > xmlns:jdbc="http://www.springframework.org/schema/jdbc" > xsi:schemaLocation=" > http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-3.0.xsd > http://www.springframework.org/schema/tx > http://www.springframework.org/schema/tx/spring-tx-3.0.xsd > http://www.springframework.org/schema/jdbc > http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd"> > > > <bean id="propertyConfigurer" > class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> > <property name="location"> > <value>classpath:database.properties</value> > </property> > </bean> > <bean id="dataSource" > class="org.springframework.jdbc.datasource.DriverManagerDataSource"> > <property name="driverClassName" value="$ > {database.driverClassName}" /> > <property name="url" value="${database.url}" /> > <property name="username" value="${database.username}" / >> > <property name="password" value="${database.password}" / >> > </bean> > > <bean id="transactionManager" > class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> > <property name="dataSource" ref="dataSource" /> > </bean> > > <tx:annotation-driven /> > > <bean id="sqlSessionFactory" > class="org.mybatis.spring.SqlSessionFactoryBean"> > <property name="dataSource" ref="dataSource" /> > <property name="mapperLocations" value="classpath:/com/myApp/ > mapper/*.xml" /> > <property name="typeAliasesPackage" value="com.myApp.domain" / >> > </bean> > > <bean id="userMapper" > class="org.mybatis.spring.mapper.MapperFactoryBean"> > <property name="mapperInterface" > value="com.myApp.mapper.UserMapper" /> > </bean> > </beans> > > database: SQL Server 2005, could anyone shed some light on this? > Thanks. |
|
Thanks Eduardo, I upgrade Mybatis to 3.1.0, still got an exception:
Mar 22, 2012 3:00:30 PM org.apache.catalina.core.StandardContext listenerStart SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userMapper' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:900) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:455) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:294) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:215) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4765) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5260) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1525) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1515) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required at org.springframework.util.Assert.notNull(Assert.java:112) at org.mybatis.spring.support.SqlSessionDaoSupport.checkDaoConfig(SqlSessionDaoSupport.java:71) at org.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:87) at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1479) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417) ... 22 more Mar 22, 2012 3:00:30 PM org.apache.catalina.core.StandardContext startInternal SEVERE: Error listenerStart Mar 22, 2012 3:00:30 PM org.apache.catalina.core.StandardContext startInternal SEVERE: Context [/GoesStripeDev] startup failed due to previous errors Mar 22, 2012 3:00:30 PM org.apache.catalina.core.ApplicationContext log INFO: Closing Spring root WebApplicationContext Mar 22, 2012 3:00:30 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc SEVERE: The web application [/GoesStripeDev] registered the JDBC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. Mar 22, 2012 3:00:30 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-8080"] Mar 22, 2012 3:00:30 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-bio-8009"] Mar 22, 2012 3:00:30 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 2560 ms Did I miss something? On Thu, Mar 22, 2012 at 1:17 AM, Eduardo Macarron <[hidden email]> wrote: You are using MyBatis-Spring 1.1.0 with Mybatis 3.0.6 |
|
It seems so: A MapperFactoryBean needs a SqlSessionFactoryBean
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> |
|
Thanks again, I guess we are very close. Here is another exception:
11:23:42,678 ERROR ContextLoader:238 - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userMapper' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:900) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:455) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:294) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:215) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1568) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1558) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required at org.springframework.util.Assert.notNull(Assert.java:112) at org.mybatis.spring.support.SqlSessionDaoSupport.checkDaoConfig(SqlSessionDaoSupport.java:71) at org.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:87) at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1479) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417) ... 22 more On Fri, Mar 23, 2012 at 1:20 AM, Eduardo Macarron <[hidden email]> wrote: It seems so: A MapperFactoryBean needs a SqlSessionFactoryBean |
| Powered by Nabble | Edit this page |
