package com.pei.order.db;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.Date;
public class DBConnManager
{
class DBConnectionPool
{
private int checkedOut;
private Vector freeConnections;
private int maxConn;
private String name;
private String password;
private String URL;
private String user;
public synchronized void freeConnection(Connection connection)
{
freeConnections.addElement(connection);
//System.out.println("(cn.gov.ahpc.db.DBConnManager)空闲链接总数:"+freeConnections.size());
if (freeConnections.size() > 250)
{
connection = (Connection) freeConnections.lastElement();
try
{
connection.close();
freeConnections.removeElementAt(freeConnections.size() - 1);
log("Closed freed connection for pool " + name);
}
catch (SQLException sqlexception)
{
log(sqlexception, "Can't close connection for pool " + name);
}
}
checkedOut--;
notifyAll();
}
public synchronized Connection getConnection()
{
Connection connection = null;
// log("freeConnections.size= " + freeConnections.size());
// log("checkedOut= " + checkedOut);
if (freeConnections.size() > 0)
{
connection = (Connection) freeConnections.firstElement();
freeConnections.removeElementAt(0);
try
{
if (connection.isClosed())
{
log("Removed bad connection from " + name);
connection = getConnection();
}
}
catch (SQLException _ex)
{
log("Removed bad connection from " + name);
connection = getConnection();
}
} else if (maxConn == 0 || checkedOut < maxConn)
connection = newConnection();
if (connection != null)
checkedOut++;
return connection;
}
public synchronized Connection getConnection(long l)
{
long l1 = (new Date()).getTime();
Connection connection;
while ((connection = getConnection()) == null)
{
try
{
wait(l);
}
catch (InterruptedException _ex)
{
}
if ((new Date()).getTime() - l1 >= l)
return null;
}
return connection;
}
private Connection newConnection()
{
Connection connection = null;
try
{
if (user == null)
connection = DriverManager.getConnection(URL);
else
connection = DriverManager.getConnection(URL, user,
password);
log("Created a new connection in pool " + name);
}
catch (SQLException sqlexception)
{
log(sqlexception, "Can't create a new connection for " + URL);
return null;
}
return connection;
}
public synchronized void release()
{
for (Enumeration enumeration = freeConnections.elements(); enumeration
.hasMoreElements();)
{
Connection connection = (Connection) enumeration.nextElement();
try
{
connection.close();
log("Closed connection for pool " + name);
}
catch (SQLException sqlexception)
{
log(sqlexception, "Can't close connection for pool " + name);
}
}
freeConnections.removeAllElements();
}
public DBConnectionPool(String s, String s1, String s2, String s3, int i)
{
freeConnections = new Vector(10);
name = s;
URL = s1;
user = s2;
password = s3;
maxConn = i;
}
}
private static DBConnManager instance;
private static int clients;
private Vector drivers;
private PrintWriter log;
private Hashtable pools;
private DBConnManager()
{
drivers = new Vector();
pools = new Hashtable();
init();
}
private void createPools(Properties properties)
{
for (Enumeration enumeration = properties.propertyNames(); enumeration
.hasMoreElements();)
{
String s = (String) enumeration.nextElement();
if (s.endsWith(".url"))
{
String s1 = s.substring(0, s.lastIndexOf("."));
String s2 = properties.getProperty(s1 + ".url");
if (s2 == null)
{
log("No URL specified for " + s1);
} else
{
String s3 = properties.getProperty(s1 + ".user");
String s4 = properties.getProperty(s1 + ".password");
String s5 = properties.getProperty(s1 + ".maxconn", "0");
int i;
try
{
i = Integer.valueOf(s5).intValue();
}
catch (NumberFormatException _ex)
{
log("Invalid maxconn value " + s5 + " for " + s1);
i = 0;
}
DBConnectionPool dbconnectionpool = new DBConnectionPool(
s1, s2, s3, s4, i);
pools.put(s1, dbconnectionpool);
log("Initialized pool " + s1);
}
}
}
}
public void freeConnection(String s, Connection connection)
{
DBConnectionPool dbconnectionpool = (DBConnectionPool) pools.get(s);
if (dbconnectionpool != null)
dbconnectionpool.freeConnection(connection);
}
public Connection getConnection(String s)
{
DBConnectionPool dbconnectionpool = (DBConnectionPool) pools.get(s);
if (dbconnectionpool != null)
return dbconnectionpool.getConnection();
else
return null;
}
public Connection getConnection(String s, long l)
{
DBConnectionPool dbconnectionpool = (DBConnectionPool) pools.get(s);
if (dbconnectionpool != null)
return dbconnectionpool.getConnection(l);
else
return null;
}
public static synchronized DBConnManager getInstance()
{
if (instance == null)
instance = new DBConnManager();
clients++;
return instance;
}
private void init()
{
InputStream is = getClass().getResourceAsStream("db.properties");
Properties properties = new Properties();
try
{
properties.load(is);
}
catch (IOException e)
{
log(e,"load properties failed");
}
String s = "DBConnManager.log";
try
{
log = new PrintWriter(new FileWriter(s, true), true);
}
catch (IOException _ex)
{
System.err.println("Can't open the log file: " + s);
log = new PrintWriter(System.err);
}
loadDrivers(properties);
createPools(properties);
}
private void loadDrivers(Properties properties)
{
String s = properties.getProperty("drivers");
for (StringTokenizer stringtokenizer = new StringTokenizer(s); stringtokenizer
.hasMoreElements();)
{
String s1 = stringtokenizer.nextToken().trim();
try
{
Driver driver = (Driver) Class.forName(s1).newInstance();
DriverManager.registerDriver(driver);
drivers.addElement(driver);
log("Registered JDBC driver " + s1);
}
catch (Exception exception)
{
log("Can't register JDBC driver: " + s1 + ", Exception: "
+ exception);
}
}
}
private void log(String s)
{
log.println(String.valueOf(new Date()) + ": " + s);
}
private void log(Throwable throwable, String s)
{
log.println(String.valueOf(new Date()) + ": " + s);
throwable.printStackTrace(log);
}
public synchronized void release()
{
if (--clients != 0)
return;
DBConnectionPool dbconnectionpool;
for (Enumeration enumeration = pools.elements(); enumeration
.hasMoreElements(); dbconnectionpool.release())
dbconnectionpool = (DBConnectionPool) enumeration.nextElement();
for (Enumeration enumeration1 = drivers.elements(); enumeration1
.hasMoreElements();)
{
Driver driver = (Driver) enumeration1.nextElement();
try
{
DriverManager.deregisterDriver(driver);
log("Deregistered JDBC driver " + driver.getClass().getName());
}
catch (SQLException sqlexception)
{
log(sqlexception, "Can't deregister JDBC driver: "
+ driver.getClass().getName());
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
orderser.zip_移动端web
共152个文件
class:35个
java:34个
jar:19个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 71 浏览量
2022-09-19
21:01:32
上传
评论
收藏 5.39MB ZIP 举报
温馨提示
订餐系统Web端,有用户管理、菜单管理等功能,并提供相应接口供移动端访问
资源推荐
资源详情
资源评论
收起资源包目录
orderser.zip_移动端web (152个子文件)
DBConnManager.class 7KB
GetOrder.class 5KB
AddAction.class 5KB
UserDao.class 5KB
AddOrder.class 4KB
DBConnManager$DBConnectionPool.class 4KB
ListOrderS.class 4KB
DBQuery.class 3KB
ShowOrderS.class 3KB
LoginAction.class 3KB
FindDishByOrderId.class 3KB
UserAction.class 3KB
DBConnection.class 3KB
LoginAction.class 3KB
OrderAction.class 3KB
Orders.class 3KB
LoginDao.class 3KB
ShowDao.class 2KB
MenuDataRectify.class 2KB
AddDao.class 2KB
EncodingInterceptor.class 2KB
ShowAction.class 2KB
LoginDao.class 2KB
FindOrdersId.class 2KB
ChangeOrder.class 2KB
UsernameToUserid.class 2KB
CheckLogin.class 2KB
EncodingFilter.class 2KB
DishData.class 2KB
MenuDataPhone.class 2KB
UserData.class 1KB
MenuData.class 1KB
ListUser.class 1KB
OrderData.class 1KB
AdminData.class 1KB
.classpath 2KB
org.eclipse.wst.common.component 462B
org.eclipse.wst.jsdt.ui.superType.container 49B
jquery.qtip.css 13KB
jquery.alert.css 5KB
lhgcalendar.css 3KB
main_frame.css 615B
table_list.css 485B
public.css 376B
Thumbs.db 5KB
loading.gif 3KB
default_s.gif 937B
default_s2.gif 79B
left.html 1KB
top.html 490B
index.html 481B
freemarker-2.3.19.jar 909KB
struts2-core-2.3.4.jar 765KB
xwork-core-2.3.4.jar 614KB
javassist-3.11.0.GA.jar 600KB
commons-collections-3.1.jar 546KB
mysql-connector-java-5.0.8-bin.jar 528KB
commons-lang3-3.1.jar 308KB
commons-lang-2.4.jar 256KB
commons-beanutils-1.8.0.jar 226KB
ognl-3.0.5.jar 222KB
commons-io-2.0.1.jar 156KB
json-lib-2.3-jdk15.jar 148KB
ezmorph-1.0.6.jar 84KB
struts2-json-plugin-2.3.7.jar 69KB
commons-logging-1.1.1.jar 59KB
commons-fileupload-1.2.2.jar 58KB
asm-3.3.jar 43KB
asm-commons-3.3.jar 37KB
asm-tree-3.3.jar 21KB
DBConnManager.java 7KB
GetOrder.java 4KB
UserDao.java 4KB
DBQuery.java 3KB
AddAction.java 3KB
AddOrder.java 3KB
DBConnection.java 3KB
UserAction.java 2KB
LoginAction.java 2KB
ListOrderS.java 2KB
LoginAction.java 2KB
LoginDao.java 2KB
ShowOrderS.java 2KB
OrderAction.java 2KB
EncodingInterceptor.java 2KB
AddDao.java 2KB
Orders.java 2KB
FindDishByOrderId.java 2KB
EncodingFilter.java 2KB
ShowDao.java 1KB
ShowAction.java 1KB
ChangeOrder.java 1KB
LoginDao.java 1KB
MenuDataRectify.java 1KB
MenuDataPhone.java 1KB
FindOrdersId.java 1KB
CheckLogin.java 1KB
DishData.java 1KB
UsernameToUserid.java 1KB
UserData.java 1KB
共 152 条
- 1
- 2
资源评论
邓凌佳
- 粉丝: 65
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功