2013-08-09 3 views
1

Я перемещаюсь с iBatis 2 в MyBatis 3 в среде Spring 3.0. При попытке развернуть приложение, или даже просто запустить тест JUnit, инициализация конфигурации завершается с ошибкой тайм-аута соединения следующим образом:MyBatis-Spring: SqlSessionFactoryИнформация инициализации: время ожидания подключения

Ошибка создания боб с именем «sqlSessionFactory», определенный в классе путь ресурса [testContext- jndi.xml]: вызов метода init не выполнен; Вложенное исключение - org.apache.ibatis.builder.BuilderException: ошибка при создании экземпляра документа. Причина: java.net.ConnectException: время ожидания подключения: connect

Это похоже на отсутствующий прокси-сервер http, но мои настройки прокси-сервера eclipse всегда работали на весь мой другой код. Мои определения DTD выглядят правильно.

Я использую Spring 3.0.0, и включал в себя следующие банки в моем пути к классам:

  • mybatis-3.2.2.jar
  • mybatis-весна-1.2.0.jar

соответствующая конфигурация пружины выглядит следующим образом:.

fooContext-data.xml - (это конфигурация тест/ресурсы При развертывании на веб-контейнера, пружина-настроенный источник данных использует Поиск JNDI для получения учетных данных. Они оба не в состоянии точно так же.)

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 

<beans> 

    <bean id="dataSourceFoo" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" > 
     <property name="driverClassName" value="oracle.jdbc.OracleDriver"/> 
     <property name="url" value="jdbc:oracle:thin:@(DESCRIPTION = (LOAD_BALANCE=on)(FAILOVER=on)(ADDRESS=(PROTOCOL=tcp)(HOST=foo1)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=foo2)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=foo.bar.boz)))"/> 
     <property name="username" value="fooUser"/> 
     <property name="password" value="fooPass"/>    
    </bean> 

    <!-- MyBatis stuff --> 
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
     <property name="dataSource" ref="dataSourceFoo" /> 
     <property name="configLocation" value="sqlMapConfig.xml" /> 
    </bean> 

    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> 
     <constructor-arg index="0" ref="sqlSessionFactory" /> 
    </bean> 


</beans> 

sqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE configuration 
     PUBLIC "-//www.mybatis.org//DTD Config 3.0//EN" 
     "http://www.mybatis.org/dtd/mybatis-3-config.dtd"> 

<configuration> 

    <properties resource="ibatis.properties" /> 

    <mappers> 
     <mapper resource="foo/dao/maps/mybatis/SqlMap1.xml"/> 
     <mapper resource="foo/dao/maps/mybatis/SqlMap2.xml"/> 
     <mapper resource="foo/dao/maps/mybatis/SqlMap3.xml"/> 
     <mapper resource="foo/dao/maps/mybatis/SqlMap4.xml"/> 
     <mapper resource="foo/dao/maps/mybatis/SqlMap5.xml"/> 
     <mapper resource="foo/dao/maps/mybatis/SqlMap6.xml"/> 
     <mapper resource="foo/dao/maps/mybatis/SqlMap7.xml"/> 
     <mapper resource="foo/dao/maps/mybatis/SqlMap8.xml"/> 
     <mapper resource="foo/dao/maps/mybatis/SqlMap9.xml"/> 
     <mapper resource="foo/dao/maps/mybatis/SqlMap10.xml"/> 
     <mapper resource="foo/dao/maps/mybatis/SqlMap11.xml"/> 
     <mapper resource="foo/dao/maps/mybatis/SqlMap12.xml"/> 
     <mapper resource="foo/dao/maps/mybatis/SqlMap13.xml"/> 
     <mapper resource="foo/dao/maps/mybatis/SqlMap14.xml"/> 
     <mapper resource="foo/dao/maps/mybatis/SqlMap15.xml"/> 
    </mappers> 

</configuration> 

я заметил, что некоторые другие были с этой проблемой, и это было связано с чем-то ошибиться с DTD в XML myBatis , или с плохим сетевым подключением, не позволяя им отказаться от определения DTD. Я не вижу, как я мог бы иметь эту проблему, поскольку все эти базы, как представляется, рассматриваются в моем сценарии.

Я занимаюсь этой проблемой в течение полутора дней, проклиная документацию как для MyBatis, так и для MyBatis-Spring, а также для хорошего сайта и других. Любые идеи были бы хорошы.

ответ

1

Я нашел ответ на этот вопрос на сайте myBatis пользователей здесь: DTD verification when www.mybatis.org is down

Оказывается, что мои DTD ссылки не должны были иметь WWW перед ними. То есть, вместо:

<!DOCTYPE configuration 
     PUBLIC "-//www.mybatis.org//DTD Config 3.0//EN" 
     "http://www.mybatis.org/dtd/mybatis-3-config.dtd"> 

они должны были читать:

<!DOCTYPE configuration 
     PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
     "http://mybatis.org/dtd/mybatis-3-config.dtd"> 

Я изменил их, и теперь он работает.

Смежные вопросы