我正在使用java 7和tomcat 7.我在jUnit中为我的应用程序编写了一些测试,它使用tomcat / conf / server.xml作为jndi。这是maven建议的文件夹结构。
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&autoReconnect=true&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="" />
我想在运行jUnit测试用例之前将此server.xml加载到IntialContext中。怎么做到这一点?
答案 0 :(得分:0)
按照此链接,它具有手动将jndi加载到initialcontext的解决方案。
答案 1 :(得分: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")