版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ConnectionPooljar数据连接池文件包的制作流程模板资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。关于ConnectionPool.jar数据连接池文件包的制作流程目的:制作通用型数据连接池文件包,便于应用于通用工程结构:工程包内classes目录内1.ConnectionPool:连接池管理程序 |______ConnectionPool.java |______ConnectionWrapper.java |______LogFile.java |______LogWriter.java |______MakeDateTime.java |______PoolM:MySqlJDBC驱动程序3.org:MySqlJDBC驱动程序4.net:MSSqlserverJTDS驱动程序5.javax:OracleJDBC驱动程序6.oracle:OracleJDBC驱动程序制作流程:新建一个工程命名为Pool,在工程内建立一个war模块命名为Poolwar;在工程内新建class文件,文件的包起名为ConnectionPool;依次新建下列文件:ConnectionPool.java、ConnectionWrapper.java、LogFile.java、LogWriter.java、MakeDateTime.java、PoolManager.java将OracleforJDBC驱动classes12.jar文件用winrar解压缩,得到javax和oracle两个文件夹,将这两个文件夹复制到Pool工程内的classes目录下;将MS-SqlserverforJDBC驱动jtds-1.2.jar文件用winrar解压缩,得到net这个文件夹,将这个文件夹复制到Pool工程内的classes目录下;将MySqlforJDBC驱动mysql-connector-java-3.0.16-ga-bin.jar文件用winrar解压缩,得到com和org两个文件夹,将这两个文件夹复制到Pool工程内的classes目录下;如果需要添加其它驱动程序,可参照4-6进行;选择JBuilder工具条上Wizards--ArchiveBuilder;9.ArchiveBuilder–Step1of5:ArchiveType选择Basic(具体类型含义参考JBuilerX使用手册);10.ArchiveBuilder–Step2of5:将Name和File命名为需要的名字,这里同意将其命名为ConnectionPool,其它的选项均不做更改;11.ArchiveBuilder–Step3of5:指定结构文件包含内容,这里不做任何修改;12.ArchiveBuilder–Step4of5:将servlet选择为Allwaysincludeallclassesandresources;13.ArchiveBuilder–Step4of5:保持默认状态不改变,按finish完成结构文件的定义;14.在工程窗口用鼠标右键点ConnectionPool结构,然后选择make生成结构文件;使用方法:将该jar文件添加到ToolsConfigureLibrarise中;新加工程,在工程RequiredLibrarise中添加该库文件;在工程中新建一个”连接池初始化类”负责建立数据连接;在工程中新建一属性文件perties,负责描述数据库驱动及用户信息等,该属性文件存放的位置在PoolManager.java中定义;在PoolManager.java中默认为”../perties”,该位置表示在/WEB-INF目录下;附录:文件代码************************文件开始***************************perties//属性文件***********************************************************XBDBManagerPropertiespoolname=sqlpooloraclepool注:中间以空格分隔drivers=net.sourceforge.jtds.jdbc.Driveroracle.jdbc.driver.OracleDriver注:中间以空格分隔logfile=d:\\logfile.txtsqlpool.url=jdbc:jtds:sqlserver://:1433;DatabaseName=pdasqlpool.initconns=50sqlpool.maxconns=80sqlpool.user=pdasqlpool.password=pdapass1234oraclepool.url=jdbc:oracle:thin:@:1521:infodboraclepool.initconns=50oraclepool.maxconns=80oraclepool.user=tjoldoraclepool.password=tjold************************文件结束***************************************************文件开始***************************ConnectionPool.java***********************************************************packageConnectionPool;importjava.io.*;importjava.sql.*;importjava.util.*;publicclassConnectionPool{privateStringname;privateStringURL;privateStringuser;privateStringpassword;privateintmaxConns;privateinttimeOut;privateLogWriterlogWriter;privateintcheckedOut;privateVectorfreeConnections=newVector();publicConnectionPool(Stringname,StringURL,Stringuser,Stringpassword,intmaxConns,intinitConns,inttimeOut,PrintWriterpw,intlogLevel){=name;this.URL=URL;this.user=user;this.password=password;this.maxConns=maxConns;this.timeOut=timeOut>0?timeOut:5;logWriter=newLogWriter(name,logLevel,pw);initPool(initConns);logWriter.log("Newpoolcreated",LogWriter.INFO);Stringlf=System.getProperty("line.separator");logWriter.log("url="+URL+"user="+user+//"password="+password+"initconns="+initConns+"maxconns="+maxConns+"logintimeout="+this.timeOut,LogWriter.INFO);logWriter.log(getStats(),LogWriter.INFO);}privatevoidinitPool(intinitConns){for(inti=0;i<initConns;i++){try{Connectionpc=newConnection();freeConnections.addElement(pc);}catch(SQLExceptione){}}}publicConnectiongetConnection()throwsSQLException{logWriter.log("Requestforconnectionreceived",LogWriter.DEBUG);try{Connectionconn=getConnection(timeOut*1000);returnnewConnectionWrapper(conn,this);}catch(SQLExceptione){logWriter.log(e,"Exceptiongettingconnection",logWriter.ERROR);throwe;}}synchronizedvoidwrapperClosed(Connectionconn){freeConnections.addElement(conn);checkedOut--;notifyAll();logWriter.log("ReturnedwrapperClosedtopool",LogWriter.INFO);logWriter.log(getStats(),LogWriter.INFO);}privatesynchronizedConnectiongetConnection(longtimeout)throwsSQLException{//GetapooledConnectionfromthecacheoranewone.//Waitifallarecheckedoutandthemaxlimithas//beenreached.longstartTime=System.currentTimeMillis();longremaining=timeout;Connectionconn=null;while((conn=getPooledConnection())==null){try{logWriter.log("Waitingforconnection.Timeout="+remaining,LogWriter.DEBUG);wait(remaining);}catch(InterruptedExceptione){}remaining=timeout-(System.currentTimeMillis()-startTime);if(remaining<=0){//TimeouthasexpiredlogWriter.log("Time-outwhilewaitingforconnection",LogWriter.DEBUG);thrownewSQLException("getConnection()timed-out");}}//CheckiftheConnectionisstillOKif(!isConnectionOK(conn)){//Itwasbad.TryagainwiththeremainingtimeoutlogWriter.log("Removedselectedbadconnectionfrompool",LogWriter.ERROR);returngetConnection(remaining);}checkedOut++;logWriter.log("DeliveredgetConnectionfrompool",LogWriter.INFO);logWriter.log(getStats(),LogWriter.INFO);returnconn;}privatebooleanisConnectionOK(Connectionconn){StatementtestStmt=null;try{if(!conn.isClosed()){//TrytocreateStatementtoseeifit'sreallyalivetestStmt=conn.createStatement();testStmt.close();}else{returnfalse;}}catch(SQLExceptione){if(testStmt!=null){try{testStmt.close();}catch(SQLExceptionse){}}logWriter.log(e,"PooledConnectionwasnotokay",LogWriter.ERROR);returnfalse;}returntrue;}privateConnectiongetPooledConnection()throwsSQLException{Connectionconn=null;if(freeConnections.size()>0){//PickthefirstConnectionintheVector//togetround-robinusageconn=(Connection)freeConnections.firstElement();freeConnections.removeElementAt(0);}elseif(maxConns==0||checkedOut<maxConns){conn=newConnection();}returnconn;}privateConnectionnewConnection()throwsSQLException{Connectionconn=null;if(user==null){conn=DriverManager.getConnection(URL);}else{conn=DriverManager.getConnection(URL,user,password);}logWriter.log("Openedanewconnection",LogWriter.INFO);logWriter.log(getStats(),LogWriter.INFO);returnconn;}publicsynchronizedvoidfreeConnection(Connectionconn){//PuttheconnectionattheendoftheVectorfreeConnections.addElement(conn);checkedOut--;notifyAll();logWriter.log("ReturnedfreeConnectiontopool",LogWriter.INFO);logWriter.log(getStats(),LogWriter.INFO);}publicsynchronizedvoidrelease(){EnumerationallConnections=freeConnections.elements();while(allConnections.hasMoreElements()){Connectioncon=(Connection)allConnections.nextElement();try{con.close();logWriter.log("releaseClosedconnection",LogWriter.INFO);}catch(SQLExceptione){logWriter.log(e,"releaseCouldn'tcloseconnection",LogWriter.ERROR);}}freeConnections.removeAllElements();}privateStringgetStats(){return"Totalconnections:"+(freeConnections.size()+checkedOut)+"Available:"+freeConnections.size()+"Checked-out:"+checkedOut;}}************************文件结束***************************************************文件开始***************************ConnectionWrapper.java***********************************************************packageConnectionPool;importjava.sql.*;importjava.util.*;/***ThisclassisawrapperaroundaConnection,overridingthe*closemethodtojustinformthepoolthatit'savailablefor*reuseagain,andtheisClosedmethodtoreturnthestate*ofthewrapperinsteadoftheConnection.*/classConnectionWrapperimplementsConnection{//realConnshouldbeprivatebutweusepackagescopeto//beabletotestremovalofbadconnectionsConnectionrealConn;privateConnectionPoolpool;privatebooleanisClosed=false;publicConnectionWrapper(ConnectionrealConn,ConnectionPoolpool){this.realConn=realConn;this.pool=pool;}/***InformtheConnectionPoolthattheConnectionWrapper*isclosed.*/publicvoidclose()throwsSQLException{isClosed=true;pool.wrapperClosed(realConn);}/***ReturnstrueiftheConnectionWrapperisclosed,false*otherwise.*/publicbooleanisClosed()throwsSQLException{returnisClosed;}/**Wrappedmethods.*/publicvoidclearWarnings()throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}realConn.clearWarnings();}publicvoidcommit()throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}realCmit();}publicStatementcreateStatement()throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}returnrealConn.createStatement();}publicbooleangetAutoCommit()throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}returnrealConn.getAutoCommit();}publicStringgetCatalog()throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}returnrealConn.getCatalog();}publicDatabaseMetaDatagetMetaData()throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}returnrealConn.getMetaData();}publicintgetTransactionIsolation()throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}returnrealConn.getTransactionIsolation();}publicSQLWarninggetWarnings()throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}returnrealConn.getWarnings();}publicbooleanisReadOnly()throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}returnrealConn.isReadOnly();}publicStringnativeSQL(Stringsql)throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}returnrealConn.nativeSQL(sql);}publicCallableStatementprepareCall(Stringsql)throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}returnrealConn.prepareCall(sql);}publicPreparedStatementprepareStatement(Stringsql)throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}returnrealConn.prepareStatement(sql);}publicvoidrollback()throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}realConn.rollback();}publicvoidsetAutoCommit(booleanautoCommit)throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}realConn.setAutoCommit(autoCommit);}publicvoidsetCatalog(Stringcatalog)throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}realConn.setCatalog(catalog);}publicvoidsetReadOnly(booleanreadOnly)throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}realConn.setReadOnly(readOnly);}publicvoidsetTransactionIsolation(intlevel)throwsSQLException{if(isClosed){thrownewSQLException("Pooledconnectionisclosed");}realConn.setTransactionIsolation(level);}publicvoidsetHoldability(intholdability)throwsSQLException{realConn.setHoldability(holdability);}publicintgetHoldability()throwsSQLException{returnrealConn.getHoldability();}publicSavepointsetSavepoint()throwsSQLException{returnrealConn.setSavepoint();}publicSavepointsetSavepoint(Stringname)throwsSQLException{returnrealConn.setSavepoint(name);}publicvoidreleaseSavepoint(Savepointsavepoint)throwsSQLException{realConn.releaseSavepoint(savepoint);}publicvoidrollback(Savepointsavepoint)throwsSQLException{realConn.rollback(savepoint);}publicStatementcreateStatement(intresultSetType,intresultSetConcurrency,intresultSetHoldability)throwsSQLException{returnrealConn.createStatement(resultSetType,resultSetConcurrency,resultSetHoldability);}publicPreparedStatementprepareStatement(Stringsql,intresultSetType,intresultSetConcurrency,intresultSetHoldability)throwsSQLException{returnrealConn.prepareStatement(sql,resultSetConcurrency,resultSetHoldability);}publicCallableStatementprepareCall(Stringsql,intresultSetType,intresultSetConcurrency,intresultSetHoldability)throwsSQLException{returnrealConn.prepareCall(sql,resultSetConcurrency,resultSetHoldability);}publicPreparedStatementprepareStatement(Stringsql,intautoGeneratedKeys)throwsSQLException{returnrealConn.prepareStatement(sql,autoGeneratedKeys);}publicPreparedStatementprepareStatement(Stringsql,int[]columnIndexes)throwsSQLException{returnrealConn.prepareStatement(sql,columnIndexes);}publicPreparedStatementprepareStatement(Stringsql,String[]columnNames)throwsSQLException{returnrealConn.prepareStatement(sql,columnNames);}publicStatementcreateStatement(intresultSetType,intresultSetConcurrency)throwsSQLException{returnrealConn.createStatement(resultSetType,resultSetConcurrency);}publicPreparedStatementprepareStatement(Stringsql,intresultSetType,intresultSetConcurrency)throwsSQLException{returnrealConn.prepareStatement(sql,resultSetType,resultSetConcurrency);}publicCallableStatementprepareCall(Stringsql,intresultSetType,intresultSetConcurrency)throwsSQLException{returnrealConn.prepareCall(sql,resultSetType,resultSetConcurrency);}publicMapgetTypeMap()throwsSQLException{returnrealConn.getTypeMap();}publicvoidsetTypeMap(Mapmap)throwsSQLException{realConn.setTypeMap(map);}}************************文件结束***************************************************文件开始***************************LogFile.java***********************************************************packageConnectionPool;importjava.io.*;importjava.util.*;publicclassLogFile{privatestaticStringmyDir="c:\\test\\";privatestaticStringmyFile="_tbit.log";publicvoidLogFile(){}publicstaticvoidlog(Strings){try{MakeDateTimeqdt=newMakeDateTime();StringdateString=qdt.getTDashDate1();Stringstemp=qdt.getDate8();Stringfilename=myDir+"HK"+stemp+".log";BufferedWriterout=newBufferedWriter(newFileWriter(filename,true));out.write(dateString+":"+s);out.write("\n");out.close();}catch(Exceptione){};}publicstaticvoidlog(String_dir,Strings){try{MakeDateTimeqdt=newMakeDateTime();StringdateString=qdt.getTDashDate1();Stringstemp=qdt.getDate8();Stringfilename=_dir;BufferedWriterout=newBufferedWriter(newFileWriter(filename,true));out.write(dateString+":"+s);out.write("\n");out.close();}catch(Exceptione){};}}************************文件结束***************************************************文件开始***************************LogWriter.java***********************************************************packageConnectionPool;importjava.io.*;importjava.util.*;publicclassLogWriter{publicstaticfinalintNONE=0;publicstaticfinalintERROR=1;publicstaticfinalintINFO=2;publicstaticfinalintDEBUG=3;privatestaticfinalStringERROR_TEXT="error";privatestaticfinalStringINFO_TEXT="info";privatestaticfinalStringDEBUG_TEXT="debug";privatePrintWriterpw;privateStringowner;privateintlogLevel;publicLogWriter(Stringowner,intlogLevel,PrintWriterpw){this.pw=pw;this.owner=owner;this.logLevel=logLevel;}publicLogWriter(Stringowner,intlogLevel){this(owner,logLevel,null);}publicintgetLogLevel(){returnlogLevel;}publicPrintWritergetPrintWriter(){returnpw;}publicvoidsetLogLevel(intlogLevel){this.logLevel=logLevel;}publicvoidsetPrintWriter(PrintWriterpw){this.pw=pw;}publicvoidlog(Stringmsg,intseverityLevel){if(pw!=null){if(severityLevel<=logLevel){pw.println("["+newDate()+"]"+getSeverityString(severityLevel)+":"+owner+":"+msg);}}}publicvoidlog(Throwablet,Stringmsg,intseverityLevel){log(msg+":"+toTrace(t),severityLevel);}privateStringgetSeverityString(intseverityLevel){switch(severityLevel){caseERROR:returnERROR_TEXT;caseINFO:returnINFO_TEXT;caseDEBUG:returnDEBUG_TEXT;default:return"Unknown";}}privateStringtoTrace(Throwablee){StringWritersw=newStringWriter();PrintWriterpw=newPrintWriter(sw);e.printStackTrace(pw);pw.flush();returnsw.toString();}}************************文件结束***************************************************文件开始***************************MakeDateTime.java***********************************************************packageConnectionPool;importjava.io.*;importjava.util.*;importjava.lang.*;importjava.text.*;publicclassMakeDateTime{privateStringqDate;privateStringqDashDate;privateStringqDotDate;privateStringqTime;privateStringqTimeSSS;privateStringqDate17;privateStringqTDate0;privateStringqTDate1;privateStringqTDashDate0;privateStringqTDashDate1;privateStringqTDotDate0;privateStringqTDotDate1;privateStringqDate14;privateStringqDate8;privateStringqTime9;privateStringqTime6;privateStringqYear;privateStringqMonth;privateStringqDay;privateStringqHH;privateStringqMM;privateStringqSS;privateStringqSSS;privateStringqrandom;publicMakeDateTime(){Datedate=newDate();GregorianCalendarcalendar=newGregorianCalendar();calendar.setTime(date);Localelocale=newLocale("kr","KR");SimpleTimeZonetimeZone=newSimpleTimeZone(32400000,"KST");SimpleDateFormatdFormat0=newSimpleDateFormat("yyyy/MM/dd",locale);dFormat0.setTimeZone(timeZone);SimpleDateFormatdFormat1=newSimpleDateFormat("yyyy-MM-dd",locale);dFormat1.setTimeZone(timeZone);SimpleDateFormatdFormat2=newSimpleDateFormat("yyyy.MM.dd",locale);dFormat2.setTimeZone(timeZone);SimpleDateFormatdFormat3=newSimpleDateFormat("HH:mm:ss",locale);dFormat3.setTimeZone(timeZone);SimpleDateFormatdFormat4=newSimpleDateFormat("HH:mm:ss:SSS",locale);dFormat4.setTimeZone(timeZone);SimpleDateFormatdFormat5=newSimpleDateFormat("yyyyMMddHHmmssSSS",locale);dFormat5.setTimeZone(timeZone);StringqDate1=dFormat0.format(date);StringqDate2=dFormat1.format(date);StringqDate3=dFormat2.format(date);StringqsTime=dFormat3.format(date);StringqtTime=dFormat4.format(date);StringqsDate=dFormat5.format(date);this.qDate=qDate1;this.qDashDate=qDate2;this.qDotDate=qDate3;this.qTime=qsTime;this.qTimeSSS=qtTime;this.qDate17=qsDate;qYear=qsDate.substring(0,4);qMonth=qsDate.substring(4,6);qDay=qsDate.substring(6,8);qHH=qsDate.substring(8,10);qMM=qsDate.substring(10,12);qSS=qsDate.substring(12,14);qSSS=qsDate.substring(14,17);this.qTDate0=qDate+""+qTime;this.qTDate1=qDate+""+qTimeSSS;this.qTDashDate0=qDashDate+""+qTime;this.qTDashDate1=qDashDate+""+qTimeSSS;this.qTDotDate0=qDotDate+""+qTime;this.qTDotDate1=qDotDate+""+qTimeSSS;this.qDate14=qYear+qMonth+qDay+qHH+qMM+qSS;this.qDate8=qYear+qMonth+qDay;this.qTime9=qHH+qMM+qSS+qSSS;this.qTime6=qHH+qMM+qSS;this.qYear=qYea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智慧健康养老全链条覆盖
- 文明礼仪伴我行塑造阳光班级风貌小学主题班会课件
- 河北省石家庄市、张家口市部分学校2025-2026学年高二下学期6月测试 物理 含答案
- 新能源全生命周期碳管理
- (青桐鸣联考)河南新乡等地2025-2026学年下学期高二期末考试生物+答案
- 敲响安全警钟筑牢生命防线小学主题班会课件
- 合同违约责任催责函(4篇)
- 环保小行动:让校园更美丽小学主题班会课件
- 提高食品安全意识,保障小学生健康成长的小学主题班会课件
- 抵制校园欺凌共建和谐校园小学几年级主题班会课件
- 2025-2026学年渎粤语教学设计和教案
- Transformer架构详解:理解大模型的基石
- 2025年鸡西市虎林市社区工作者公开招聘笔试真题(含完整答案解析)
- 砌体平整度垂直度检测记录
- 钢结构防火涂料施工方案及技术措施
- 山东省公安机关危险化学品信息管理系统企业端操作说明书
- 2025-2026学年冀教版三年级数学下册期末综合素质达标卷(含答案)
- 小学数学教学中几何图形认知与虚拟现实技术结合的课题报告教学研究课题报告
- 连云港交通控股集团2026年招聘笔试题库
- 2026数字人民币运营管理中心有限公司招聘笔试历年参考题库附带答案详解
- 2026《绿色建筑学报》编辑部专业技术人员招聘3人备考题库及完整答案详解1套
评论
0/150
提交评论