请各位高手帮忙看看
数据库: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的测试,以便减少工作量。
数据库: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的测试,以便减少工作量。
要不你先加载tomcat里面的配置文件 然后导入架包试一试