永发信息网

如何在Java代理中使用JDBC的连接池

答案:2  悬赏:0  手机版
解决时间 2021-02-08 19:46
如何在Java代理中使用JDBC的连接池
最佳答案

17 public class ProxyConnUtils {
18
19 private static LinkedList pool = new LinkedList<>();
20 private static String url;
21 private static String user;
22 private static String password;
23 private static String driverClass;
24 //private static Connection conn;
25 static{
26 try {
27 Properties properties = new Properties();
28 InputStream in = ProxyConnUtils.class.getResourceAsStream("/db.properties");
29 properties.load(in);
30 url = properties.getProperty("url");
31 System.err.println(url);
32 user = properties.getProperty("user");
33 password = properties.getProperty("password");
34 driverClass = properties.getProperty("driverClass");
35 Class.forName(driverClass);
36 for(int i = 0;i<3;i++){
37 final Connection conn = DriverManager.getConnection(url, user, password);
38 //对connection做代理
39 Object connProxy = Proxy.newProxyInstance(ProxyConnUtils.class.getClassLoader(),
40 new Class[]{Connection.class},
41 new InvocationHandler() {
42
43 @Override
44 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
45 //判断是否是close方法 回收连接
46 if(method.getName().equals("close")){
47 synchronized (pool) {
48 System.err.println("不能关闭");
49 pool.addLast((Connection) proxy);
50 pool.notify();
51 return null;
52 }
53 }else{
54 //若果调用的不是close方法 直接放行
55 return method.invoke(conn, args);
56 }
57 }
58 });
59 // 将代理对象添加到池中去
60 pool.add((Connection) connProxy);
61 }
62 } catch (Exception e) {
63 e.printStackTrace();
64 throw new RuntimeException(e);
65 }
66 }
67
68 //获取connection连接
69 public static Connection getConnection(){
70 synchronized (pool) {
71 if(pool.size() == 0){
72 try {
73 pool.wait();
74 } catch (Exception e) {
75 e.printStackTrace();
76 throw new RuntimeException(e);
77 }
78 }
79 Connection connection = pool.removeFirst();
80 return connection;
81 }
82 }
83 }
全部回答
jdbc和连接池对于你这个场景来说,都足够,既然用spring管理了,建议还是使用连接池,另外,spring自身没有实现连接池,一般都是对第三方连接池的包装,常见的有c3p0,dbcp以及最近比较流行的bonecp等,这几个配置都差不多太多,以bonecp为例:
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
海口哪里的小龙虾做的好吃?
七彩莲花灯念佛机好,还是会选曲的念佛机好?
【思维空间】地球是三维空间还是思维空间?分
甲乙两人同时从山脚开始爬山,到达山顶后立即
射洪县瞿河乡敬老院地址有知道的么?有点事想
百合化妆品地址有知道的么?有点事想过去!
【h7n7】“达菲”是制取抗“H7N7流感”的药物
八月桂花树有五年了树高五米树形很好就是不开
溧阳市凯圣机械厂在哪里啊,我有事要去这个地
国税局公务员招录竞争压力哪个省最大
美丽海盐诗歌不管写得怎么样,只要求原创
陈胜和吴广是哪个朝代的
富达不锈钢地址在哪,我要去那里办事
机械三通连接时,机械三通开孔间距不应小于()
what is a cheerleader
推荐资讯
比喻人性格内向的词语
欢乐时空KTV(滨江西路店)地址好找么,我有些
关于脊髓灰质炎病毒,哪项错误A.主要经粪口途
我国本土出现的第一所教会学校是()。
工行提前还贷违约金怎么算
陆大有是古装电视剧中人物,请问是什么电视
深圳市小汽车摇号填报提交时老提示邮箱有问题
那有卖耐火粘锅的东西
手机用了一年半。电池不知道是怎么回事?一直
什么进菜窑子—— 没影(缨)儿了
中心法则揭示了生物遗传信息由DNA向蛋白质传
泗门美琳凯工作室怎么去啊,我要去那办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?