请各位高手帮忙看看
数据库:oracle9i,IDE: MyEclipse5.5,服务器:tomcat, 项目名为:ownHome,数据库名:ownHome
数据库的操作类使用JNDI配置数据库的链接信息:
D:\tomcat\Tomcat 6.0\conf\context.xml中的信息为
<Context>    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->
<Resource name="jdbc/ownHome" auth="Container"
type="javax.sql.DataSource" maxActive="100" maxIdle="30"
maxWait="10000" username="xingxing" password="xingxing"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:ownHome" /></Context>
该项目目录WebRoot\Web-INF\web.xml的信息为
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <resource-ref>
   <res-ref-name>jdbc/ownHome</res-ref-name>
   <res-type>javax.sql.DataSource</res-type>
   <res-auth>Container</res-auth>
  </resource-ref>
</web-app>
数据库操作类代码:package common;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;public class DBConnection {

private Connection conn=null;

public static Connection getConn() throws NamingException, SQLException{
Connection conn=null;
Context ic=new InitialContext();                     // 获得jdbc/ownHome数据源的引用
DataSource source=(DataSource)ic.lookup("java:comp/env/jdbc/ownHome");   conn=source.getConnection(); // 获得数据库链接
return conn;
}

public static void closeConn(Connection conn){
try {
if(conn!=null&&!conn.isClosed()){
conn.close();
conn=null;
}
} catch (SQLException e) {
e.printStackTrace();
// TODO: handle exception
}
}

public static void closePStatment(PreparedStatement pStatement){
try {
if(pStatement!=null){
pStatement.close();
pStatement=null;
}
} catch (SQLException e) {
e.printStackTrace();
// TODO: handle exception
}
}

public static void closeResultSet(ResultSet rSet){
try {
if(rSet!=null){
rSet.close();
rSet=null;
}
} catch (SQLException e) {
e.printStackTrace();
// TODO: handle exception
}
}
}我的问题是只有在打开tomcat服务器的时候访问jsp页面才能测试DBConnection.getConn(),而使用junit的测试
package common;import java.sql.Connection;
import java.sql.SQLException;import javax.naming.NamingException;import junit.framework.TestCase;public class DBConnectionTest extends TestCase { public void testGetConn() {
try {
Connection conn=DBConnection.getConn();
assertNotNull(conn);
} catch (NamingException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}}总是提示javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial测试不成功,那位高手能给我提供一种测试方法:能像junit似的或是别的什么组件比如说jetty和cactus的测试,以便减少工作量。

解决方案 »

  1.   

    你是在tomcat中配置的连接池,当然要打开服务器,如果用第三方的数据库连接池的话,就不用了
      

  2.   

    你需要自己写一个数据库连接池的实现,或者用tomcat的,但是要初始化一遍。
      

  3.   

    这个好像不可以吧 你的配置文件和架包都是在tomcat里面 的
    要不你先加载tomcat里面的配置文件 然后导入架包试一试
      

  4.   

    要是打开tomcat服务器用juint测试如何测啊
      

  5.   

    不管用什么手段,除了直接用jsp测试,只要能完成测试就行!