2016-08-29 5 views
1

Ich benutze Java 7 und Tomcat 7. Ich schreibe einige Tests für meine Anwendung in jUnit, die tomcat/conf/server.xml für jndi verwendet. Hier ist die Maven vorschlagen Ordnerstruktur.Tomcat server.xml im Junit-Testfall lesen

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

Meine Probe server.xml würde so aussehen,

<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="" /> 

ich diesen server.xml in die IntialContext laden möchten, bevor jUnit Testfälle laufen. Wie erreiche ich das?

Antwort

0

Give TomcatJNDI a try. Wenn mit Tomcat-Konfigurationsdateien eingespeist wird es alle JNDI basierte Objekte liefern, die so schnell in diesen Dateien deklariert sind, als sie aufblickte sind. Der Code, dies zu erreichen, ist zum Beispiel

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

Dann können Sie die Objekte Nachschlag wie Sie es gewohnt sind:

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

More about TomcatJNDI can be found here.

Verwandte Themen