MyBatis抛出异常“stream closed”

时间:2015-06-24 05:13:01

标签: java mybatis

我有一个以cron身份运行的java应用程序。它使用MyBatis。在我的mybatis-config.xml中,我有

<environments default="staging">
        <environment id="prod_read">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://192.168.10.2:3306/myDB"/>
                <property name="username" value="dbuser"/>
                <property name="password" value="dbpass"/>
            </dataSource>
        </environment>
        <environment id="prod_write">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://192.168.10.1:3306/myDB"/>
                <property name="username" value="dbuser"/>
                <property name="password" value="dbpass"/>
            </dataSource>
        </environment>
        <environment id="staging">.....
</environments>

所以,我在生产中使用了2个DB - 一个用于读取从属,一个用于写入主。

在代码中,SqlSessionFactory的初始化就像这样

InputStream rd = this.getClass().getClassLoader()
            .getResourceAsStream(mybatisConfigXml);

try {
    sessionFactory_read = new SqlSessionFactoryBuilder().build(rd, Main.DB_ENV + "_read");
    sessionFactory_write = new SqlSessionFactoryBuilder().build(rd, Main.DB_ENV + "_write");
}catch (final Exception e) {
    e.printStackTrace();
}

当此代码运行时,我在 _write 初始化时收到异常,并显示消息

org.apache.ibatis.exceptions.PersistenceException: 
### Error building SqlSession.
### Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: java.io.IOException: Stream closed

如何解决此问题?它正在谈论哪个流被关闭?我应该创建2个InputStream实例(rd1,rd2)并在2个SqlSessionFactory初始化中使用它们吗? 我检查了数据库凭据,他们没事。 提前谢谢。

0 个答案:

没有答案