我用tomcat连接池连接mysql,用jsp测试成功,可是改用class ConnectionProvider测试时出错,请大虾指点一下!在线等!
下面是我的 ConnectionProvider:
package com.resSys.common.db;
import java.sql.Connection;
import java.sql.DriverManager;
import com.resSys.config.GlobalConfig;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.SQLException;
import javax.naming.NamingException;
public class ConnectionProvider {
public ConnectionProvider() {
}
/**
* Get a normal connection
* @return connection or null
*/
public Connection getConnection() throws SQLException {
Connection conn = null;
if (GlobalConfig.USE_JNDI_DATASOURCE) {
try {
Context initCtx = new InitialContext();
DataSource ds = (DataSource) initCtx.lookup(
"java:comp/env/jdbc/MySql_ResSys");
conn = ds.getConnection();
}
catch (SQLException e) {
throw new SQLException(e.getMessage());
}
catch (NamingException e) {
throw new SQLException(e.getMessage());
}
}
else {
try {
String DB_UID = GlobalConfig.DB_UID;
String DB_PWD = GlobalConfig.DB_PWD;
String DB_URL = GlobalConfig.DB_URL;
// Class.forName ("oracle.jdbc.driver.OracleDriver").newInstance();
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
conn = DriverManager.getConnection(DB_URL, DB_UID, DB_PWD);
}
catch (SQLException ex) {
throw new SQLException(ex.getMessage());
}
}
return conn;
}
/**
* Returns a Connection from the connection provider that
* is ready to participate in transactions (auto commit is set to false).
*/
public Connection getTransactionConnection() throws SQLException {
Connection conn = getConnection();
conn.setAutoCommit(false);
return conn;
}
}
我用jsp页面测试成功,可我用class测试却抛出以下错误:
com.resSys.common.db.DBTest
java.sql.SQLException: 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
at com.resSys.common.db.JdbcUtil.executeQuery(JdbcUtil.java:48)
at com.resSys.common.db.DBTest.main(DBTest.java:24)
这是为什么呢?!请大虾指点!
问题点数:50、回复次数:17Top
1 楼iceman09()回复于 2005-02-27 15:11:07 得分 0
我的jsp测试页如下:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.sql.*,javax.sql.DataSource,javax.naming.*"%>
<html>
<head><title>test.jsp</title></head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<body bgcolor="#ffffff">
<h1>test Tomcat</h1>
<%
try
{
Context initCtx=new InitialContext();
DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/MySql_ResSys");
Connection conn=ds.getConnection();
out.println("data from database:<br>");
Statement stmt=conn.createStatement();
ResultSet rs =stmt.executeQuery("select id,name from testdata");
while(rs.next())
{
out.println(rs.getInt("id"));
out.println(rs.getString("name"));
}
rs.close();
stmt.close();
}
catch(Exception e)
{
out.println(e.getMessage());
}
%>
</body>
</html>Top
2 楼bzCpp(csdn总技术值班室之饼子堂)回复于 2005-02-27 17:46:40 得分 20
你的class ConnectionProvider类怎么去lookup java:comp/env/jdbc/MySql_ResSys啊?
你想自己写类的话就不能用tomcat的pool,假如想要用的话,应该要注入一些属性Top
3 楼iceman09()回复于 2005-02-27 19:59:30 得分 0
应该注入什么属性呢??
请大虾指点呀!!!!
时间很急的!
Top
4 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-02-27 20:04:05 得分 20
如果没有在tomcat容器之内,也就是说如果你不是用jsp,servlet,javabean,tomcat的数据源是不可以lookup到的Top
5 楼iceman09()回复于 2005-02-27 20:10:42 得分 0
我就是用javabean来测试的呀!
首先ConnectionProvider提供连接数据库的功能
然后JdbcUtil类提供数据库操作
我写了一个简单的测试bean如下:
package com.resSys.common.db;
import java.util.*;
import java.sql.*;
public class DBTest {
public static void main(String[] args){
JdbcUtil jdbcUtil = new JdbcUtil();
String sql = "select id,name from testdata";
try {
ResultSet rs = jdbcUtil.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getInt(1));
System.out.println(rs.getString(2));
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
我先启动jbuilder中的tomcat4.1
然后再运行测试类,这样不行吗?!
请大虾指点!!
多谢!
Top
6 楼iceman09()回复于 2005-02-28 12:11:26 得分 0
up!
Top
7 楼iceman09()回复于 2005-02-28 20:44:13 得分 0
ZAI UPTop
8 楼hanyu1128(小菜鸟)回复于 2005-02-28 20:50:46 得分 0
up~!Top
9 楼softbugg()回复于 2005-02-28 21:17:05 得分 10
应该是测试类不是在tomcat容器内运行的,你试试不用InitialContext,直接连接看看有没有错误。Top
10 楼iceman09()回复于 2005-03-01 10:31:36 得分 0
直接连接是没有错误的
就是使用javabean的连接池出现错误!!Top
11 楼ytnice()回复于 2005-03-01 12:26:20 得分 0
upTop
12 楼YuLimin(阿敏总司令:简单就是美—钻石闪闪您快结贴!)回复于 2005-03-01 17:53:33 得分 0
JdbcUtil.java:48
是什么东东?Top
13 楼YuLimin(阿敏总司令:简单就是美—钻石闪闪您快结贴!)回复于 2005-03-01 17:57:45 得分 0
也就是报告错误的具体的行的语句是什么,这样大家就可能更加清楚地帮你诊断问题了吧:)Top
14 楼yeshucheng(叶澍成★七哥)回复于 2005-03-01 19:03:02 得分 0
楼主还是要先看清楚错误提示:)这样以免盲目Top
15 楼iceman09()回复于 2005-03-01 20:40:49 得分 0
to YuLimin:
JdbcUtil类提供数据库操作
错误是: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
就是执行到
try {
Context initCtx = new InitialContext();
DataSource ds = (DataSource) initCtx.lookup(
"java:comp/env/jdbc/MySql_ResSys");---------这里的时候出现错误,抛出以上异常!
conn = ds.getConnection();
}
请大虾帮帮忙!!Top
16 楼YuLimin(阿敏总司令:简单就是美—钻石闪闪您快结贴!)回复于 2005-03-02 08:31:10 得分 0
编号: 452 发送者 iceman09 发送时间 2005-3-1 20:36:54 删除 回复
内容 http://community.csdn.net/Expert/topic/3809/3809913.xml?temp=.5708429
美女帮忙看看!!
多谢!!!
美女??????????????????
晕!!!!!!!!!!!!!!!!!!!Top
17 楼iceman09()回复于 2005-03-02 12:34:34 得分 0
那就是帅哥帮忙看看,多谢!
Top




