CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  应用服务器

我用tomcat连接池连接mysql,用jsp测试成功,可是改用class ConnectionProvider测试时出错,请大虾指点一下!在线等!

楼主iceman09()2005-02-27 15:09:53 在 Java / 应用服务器 提问

下面是我的   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

相关问题

  • JSP的中文乱码问题JSP+Tomcat+Mysql。很怪!!!
  • 初学者在线求助:JSP中HTTP Status 500出错(TOMCAT+MYSQL)!
  • tomcat和jsp
  • tomcat+jsp问题
  • jsp与tomcat合作
  • jsp连接mysql
  • 关于jsp+mysql?
  • jsp+tomcat+mysql中使用数据库连接池的配置过程和实例代码
  • Tomcat+Mysql连接池
  • 错在那里 apache+tomcat+jsp

关键词

  • 测试
  • 连接
  • tomcat

得分解答快速导航

  • 帖主:iceman09
  • bzCpp
  • jFresH_MaN
  • softbugg

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo