2016-08-29 5 views
1

Я использую java 7 и tomcat 7. Я пишу несколько тестов для своего приложения в jUnit, который использует tomcat/conf/server.xml для jndi. Вот структура папок maven suggest.Чтение tomcat server.xml в тестовом примере junit

src 
|___test 
    |___java 
    |  |___Testcase.java 
    |___resources 
      |___conf 
        |___server.xml 

Мой образец server.xml будет выглядеть так,

<Resource name="jdbc/junit_db" 
     type="javax.sql.DataSource" 
     factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" 
     driverClassName="com.mysql.jdbc.Driver" 
     url="jdbc:mysql://localhost:3306/junit_db?zeroDateTimeBehavior=round&amp;autoReconnect=true&amp;dumpQueriesOnException=true" 
     username="root" 
     password="password" 
     maxIdle="0" 
     minIdle="0" 
     initialSize="1" 
     maxWait="5000" 
     maxActive="50" 
     loginTimeout="1000" 
     minEvictableIdleTimeMillis="2000" 
     timeBetweenEvictionRunsMillis="5000" 
     validationQuery="SELECT 1" 
     testOnBorrow="true" 
     testOnReturn="true" 
     testWhileIdle="false" 
     logAbandoned="true" 
     removeAbandoned="true" 
     poolPreparedStatements="true" 
     maxOpenPreparedStatements="10000" 
     accessToUnderlyingConnectionAllowed="false" 
     defaultAutoCommit="false" 
     defaultReadOnly="false" 
     defaultTransactionIsolation="4"/> 

<Resource name="jdbc/junit_hive_db" 
      type="javax.sql.DataSource" 
      factory="com.office.hive.HiveDataSourceFactory" 
      driverClassName="org.apache.hive.jdbc.HiveDriver" 
      url="jdbc:hive2://localhost:10000/default?zeroDateTimeBehavior=round" 
      username="" 
      password="" /> 

Я хочу, чтобы загрузить этот файл server.xml в IntialContext перед запуском тестовых JUnit. Как достичь этого?

ответ

0

Give TomcatJNDI a try. При подаче с файлами конфигурации сервера Tomcat будет поставлять все JNDI на основе объектов, которые заявлены в этих файлах, как только они смотрят вверх. Код для достижения этой цели является, например

TomcatJNDI tomcatJNDI = new TomcatJNDI(); 
tomcatJNDI.processServerXml(serverXmlFile) 
tomcatJNDI.processContextXml(contextXmlFile); 
tomcatJNDI.start(); 

Затем вы можете поиска объектов, как вы привыкли:

DataSource ds = (DataSource) InitialContext.doLookup("java:comp/env/path/to/datasource") 

More about TomcatJNDI can be found here.