CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

一个包里的类怎么引用

楼主qwen()2002-11-27 13:04:46 在 Java / Web 开发 提问

一个类  
  package   Beanes;  
  import   java.sql.*;  
  import   java.util.*;  
  public   class   ConnectionPool   implements   Runnable   {  
   
  另外一个类  
  package   Beanes;  
  import   java.sql.*;  
  import   java.util.*;  
  public   class   datacon    
  {  
          private   ConnectionPool   connectionPool;  
  编译到这里就出错。? 问题点数:20、回复次数:8Top

1 楼maxtiger(tiger)回复于 2002-11-27 13:23:42 得分 0

import   进来呀  
  你先编译一下那个ConnectionPoolTop

2 楼qwen()回复于 2002-11-27 14:23:47 得分 0

同在一个包,应该可以直接用呀,不必importTop

3 楼qwen()回复于 2002-11-27 14:32:04 得分 0

提示是cannot   resolve   symbolTop

4 楼freefalcon(心宇—消失中...)回复于 2002-11-27 15:08:32 得分 0

尝试下面三种方法:  
  1.直接引用  
  2.import   ConnectionPool;  
  3.import   Beanes.ConnectionPool;Top

5 楼qwen()回复于 2002-11-28 08:44:53 得分 0

是不是和我的头一个类的定义有关系  
  ConnectionPool   implements   Runnable   {  
  }  
   
  谁能帮我解决一下。多谢  
   
  我把代码贴出来Top

6 楼qwen()回复于 2002-11-28 08:47:08 得分 0

package   Beanes;  
   
  import   java.sql.*;  
  import   java.util.*;  
   
  public   class   ConnectionPool   implements   Runnable   {  
  private   String   driver,url,username,password;  
  private   int   maxConnections;  
  private   boolean   waitIfBusy;  
  private   Vector   availableConnections,busyConnections;  
  private   boolean   connectionPending   =   false;  
  private   static   String   DEFAULT_POOL_NAME   =   "DbPool";  
   
  public   ConnectionPool()    
  throws   SQLException,MissingResourceException  
  {  
  this(DEFAULT_POOL_NAME);  
  }  
   
  public   ConnectionPool(String   s)  
  throws   SQLException,MissingResourceException  
  {  
  ResourceBundle   resourcebundle   =   ResourceBundle.getBundle(s);  
     
  this.driver=resourcebundle.getString("driver");  
  this.url=resourcebundle.getString("url");  
  this.username=resourcebundle.getString("username");  
  this.password=resourcebundle.getString("password");  
  this.maxConnections=Integer.parseInt(resourcebundle.getString("maxConnections"));  
  this.waitIfBusy=true;  
  int   initialConnections=30;  
  if(initialConnections   >maxConnections)   {  
  initialConnections=maxConnections;  
  }  
  availableConnections=   new   Vector(initialConnections);  
  busyConnections=new   Vector();  
  for   (int   i=0;i<initialConnections;i++){  
  availableConnections.addElement(makeNewConnection());  
  }  
  }  
   
  public   synchronized   Connection   getConnection()  
  throws   SQLException  
  {  
  if(!availableConnections.isEmpty()){  
  Connection   existingConnection   =(Connection)availableConnections.lastElement();  
  int   lastIndex=availableConnections.size()   -   1;  
  availableConnections.removeElementAt(lastIndex);  
   
  if(existingConnection.isClosed()){  
  notifyAll();  
  return(getConnection());  
  }else{  
  busyConnections.addElement(existingConnection);  
  return(existingConnection);  
  }  
  }else{  
  if   ((totalConnections()<maxConnections)&&   !connectionPending)   {  
  makeBackgroundConnection();  
  }else   if(!waitIfBusy){  
  throw   new   SQLException("Connection   limit   reached");  
  }  
   
  try{  
  wait();  
  }catch(InterruptedException   ie){}  
  return   (getConnection());  
  }  
   
  }  
   
   
   
  private   void   makeBackgroundConnection(){  
  connectionPending=true;  
  try{  
  Thread   connectThread=   new   Thread(this);  
  connectThread.start();  
  }catch(OutOfMemoryError   oome){  
   
  }  
  }  
   
   
  public   void   run()   {  
  try{  
  Connection   connection   =makeNewConnection();  
  synchronized(this){  
  availableConnections.addElement(connection);  
  connectionPending=false;  
  notifyAll();  
  }  
  }catch   (Exception   e){  
   
  }  
  }  
   
   
  private   Connection   makeNewConnection() throws   SQLException   {  
  try   {  
  Class.forName(driver);  
  Connection   connection=DriverManager.getConnection(url,username,password);  
  return   (connection);  
  }catch(ClassNotFoundException   cnfe){  
  throw   new   SQLException("Can't   find   class   for   driver:"   +   driver);  
  }  
  }  
   
  public   synchronized   void   free(Connection   connection){  
  busyConnections.removeElement(connection);  
  availableConnections.addElement(connection);  
  notifyAll();  
  }  
   
  public   synchronized   int   totalConnections(){  
  return(   availableConnections.size()+busyConnections.size());  
  }  
   
  public   synchronized   void   closeAllConnections(){  
  closeConnections(availableConnections);  
  availableConnections=new   Vector();  
  closeConnections(busyConnections);  
  busyConnections=   new   Vector();  
  }  
   
   
  private   void   closeConnections(Vector   connections){  
  try{  
  for(int   i=0;i<connections.size();i++){  
  Connection   connection=(Connection)connections.elementAt(i);  
  if(!connection.isClosed()){  
  connection.close();  
  }  
  }  
  }catch(SQLException   sqle){  
  }  
  }  
   
  public   synchronized   String   toString()   {  
  String   info="ConnectionPool("   +   url   +   ","   +   username   +    
  ",available="   +   availableConnections.size()   +  
  ",busy="   +   busyConnections.size()   +  
  ",max="   +   maxConnections;  
  return(info);  
  }  
   
  }Top

7 楼qwen()回复于 2002-11-28 08:50:50 得分 0

第二个datacon类用第一个connectionpool类  
  代码(部分)  
  package   Beanes;  
   
  import   java.sql.*;  
  import   java.util.*;  
   
  public   class   datacon    
  {  
  ConnectionPool   connectionPool;  
        Connection   conn   =   null;  
        ResultSet   rs   =   null;  
        Statement   stmt   =   null;  
        public   datacon()  
          {  
        }  
          public   ResultSet   executeQuery(String   sql)  
          {  
          rs   =   null;  
          try{  
                  conn   =   connectionPool.getConnection();  
           
                  stmt   =   conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);  
                  rs   =   stmt.executeQuery(sql);  
                }catch(SQLException   ex){  
          System.err.println("数据库检索错误:   "   +   ex.getMessage());  
                              }  
          return   rs;  
          }  
   
   
  现在的问题connectionpool.java可以通过  
  datacon不能通过。错误出在引用connectionpool上。不知哪位大侠帮助解决一下。Top

8 楼beyondii(十万个为什么)回复于 2002-11-28 09:18:16 得分 20

implements   Runnable   应该是这里出现问题,试试不用多线程,我觉得这类东西用静态的比较合适,每次调用的时候同步就可以了,没有必要用多线程的Top

相关问题

  • 引用的类有重复怎么办?
  • "怎么引用?
  • java怎么样引用类啊(JBuilder 2005)。相当于VB里面增加引用
  • 想继承统一软件包里的类怎么办?
  • 请问怎么给DateTime类型赋空引用?
  • 用vs2005怎么样引用别的文件夹里的类。。。
  • 类引用class of有什么作用?怎么用?
  • 在一个自定义的类中怎么引用System.Web.HttpContext?
  • 怎么在JSP里引用一个类啊?
  • 在c#、asp.net中怎么引用类型Excel

关键词

  • sql
  • connectionpool
  • resourcebundle
  • maxconnections
  • getstring
  • implements runnable
  • import
  • package beanes
  • util
  • username

得分解答快速导航

  • 帖主:qwen
  • beyondii

相关链接

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

广告也精彩

反馈

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