2016-04-22 734 views
3

我試圖在我的應用程序中集成spring-mybatis。我使用的是spring 4.1.4mybatis 3.2.8java 7,服務器是WebSphere Application Server Liberty。我正在使用spring java配置類。這個錯誤只在我部署war文件時顯示,如果我使用Eclipse來部署項目一切正常。部署在Tomcat 8也在工作。使用名稱'sqlSessionFactory'創建bean時出錯...初始化方法的調用失敗;嵌套的異常是java.lang.NullPointerException

@Configuration 
@MapperScan("x.y.z.mappers") 
@PropertySource("classpath:/x/y/z/data_source.properties") 
@EnableTransactionManagement 
public class DataAccessConfiguration { 
    @Autowired 
    private Environment env; 
    @Bean 
    public DataSource dataSource() { 
     DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
     dataSource.setDriverClassName(env.getProperty("driver")); 
     dataSource.setUrl(env.getProperty("url")); 
     dataSource.setUsername(env.getProperty("user")); 
     dataSource.setPassword(env.getProperty("password")); 
     return dataSource; 
    } 
    @Bean 
    public DataSourceTransactionManager transactionManager() { 
     return new DataSourceTransactionManager(dataSource()); 
    } 
    @Bean 
    public SqlSessionFactoryBean sqlSessionFactory() throws Exception {  
     SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); 
     sessionFactory.setDataSource(dataSource()); 
     sessionFactory.setTypeAliasesPackage("x.y.z.portal.model"); 
     return sessionFactory; 
     } 
    } 

我得到這個堆棧跟蹤

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in a.b.c.DataAccessConfiguration: Invocation of init method failed; nested exception is java.lang.NullPointerException 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1127) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1051) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:949) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1280) 
... 60 more 

Caused by: java.lang.NullPointerException 
at java.io.FilterInputStream.read(FilterInputStream.java:133) 
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283) 
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325) 
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177) 
at java.io.InputStreamReader.read(InputStreamReader.java:184) 
at java.io.BufferedReader.fill(BufferedReader.java:154) 
at java.io.BufferedReader.readLine(BufferedReader.java:317) 
at java.io.BufferedReader.readLine(BufferedReader.java:382) 
at org.apache.ibatis.io.DefaultVFS.list(DefaultVFS.java:93) 
at org.apache.ibatis.io.VFS.list(VFS.java:193) 
at org.apache.ibatis.io.ResolverUtil.find(ResolverUtil.java:216) 
at org.apache.ibatis.type.TypeAliasRegistry.registerAliases(TypeAliasRegistry.java:127) 
at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:399) 
at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:355) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1625) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562) 
+0

也許這樣? https://github.com/mybatis/mybatis-3/issues/497 – leeor

+0

將這些類打包爲WEB-INF/lib中的jar解決了這個問題。看到這個https://stripesframework.atlassian.net/browse/STS-922 – user2282936

回答

0

而是嘗試這種與MyBatis的應用程序集成。將以下代碼添加到spring-dispatcher-servlet.xml中。

<context:property-placeholder location="x/y/z/data_source.properties"/> 

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
      <property name="driverClassName"><value>${database.driver}</value></property> 
      <property name="url"><value>${database.url}</value></property> 
      <property name="username"><value>${database.username}</value></property> 
      <property name="password"><value>${database.password}</value></property> 
      <property name="maxActive"><value>${database.maxactiveconnections}</value></property> 
      <property name="maxIdle"><value>${database.idleconnections}</value></property> 
      <property name="initialSize"><value>${database.initialSize}</value></property> 

    </bean> 

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="configLocation" value="/WEB-INF/mybatis-config.xml"/> 
    </bean> 

    <bean id="Dao" class="org.mybatis.spring.mapper.MapperFactoryBean"> 
     <property name="sqlSessionFactory" ref="sqlSessionFactory"/>  
     <property name="mapperInterface" value="com.dao.Dao" /> 
    </bean> 
相關問題