bboss 持久层配置apache dbcp,proxool,c3p0,Druid等数据源方法

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: bboss 持久层默认内置了apache dbcp(内置版本commons-pool2-2.3,commons-dbcp2-2.0.1)数据源,除此之外还可以非常简单和轻松地使用其他开源的数据源,这里以下面4种数据源为例进行说明(其他的数据源也可以参考其中的方法自己配置): apache dbcp(如果你觉得内置的版本不可靠,那么可以自己配置喜欢的dbcp版本) proxool c3p0 Druid 1.概述 对于内置的dbcp的配置方法参考文档:bbossgroups持久层框架数据源配置文件实例,这里不过多的说明。
bboss 持久层默认内置了apache dbcp(内置版本commons-pool2-2.3,commons-dbcp2-2.0.1)数据源,除此之外还可以非常简单和轻松地使用其他开源的数据源,这里以下面4种数据源为例进行说明(其他的数据源也可以参考其中的方法自己配置):
apache dbcp(如果你觉得内置的版本不可靠,那么可以自己配置喜欢的dbcp版本)
proxool
c3p0
Druid

1.概述

对于内置的dbcp的配置方法参考文档: bbossgroups持久层框架数据源配置文件实例,这里不过多的说明。本文详细介绍上述开源数据源的配置方法。

为了支持这些数据源,poolman.xml文件中在datasource元素新增了一个datasourceFile子元素,用来指定第三方数据源的 bboss ioc配置文件地址(相对于classpath路径),例如:
druid.xml
在这里druid.xml文件位于classes的根路径下,如果放在某个包路径下则需要带上包路径,例如:
com/frameworkset/datasource/conf/druid.xml

2.引用其他数据源的poolman.xml文件示例

	

		c3p0
		false
		true
		c3p0_datasource_jndiname
		c3p0.xml
		false
		false
		composite

	

	

		dbcp
		false
		true
		dbcp_datasource_jndiname_1
		dbcp.xml
		false
		false
		composite
	
	

		proxool
		false
		true
		proxool_datasource_jndiname
		proxool.xml
		false
		false
		composite
	

	

		druid
		false
		true
		druid_datasource_jndiname
		druid.xml
		false
		false
		composite
	




每个datasource的dbname属性是可以根据需要自己进行命名,对应于 持久层组件的方法中的dbname属性,以便在相应的数据源上完成db操作。接下来看看每种数据源的定义示例

3.基于bboss ioc管理的第三方数据源配置文件示例

c3p0数据源-c3p0.xml

  
    
  
  
   
	
     
  
  
    

    
  
  
  

  
  
  
    
  
  
  
  
  
  
    
  
  

 


dbcp数据源-dbcp.xml

	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	


proxool数据源-proxool.xml

  
    
  
  
   
	
     
  
  
    

    
  
  
  

  


    
    
    
    
    
    
    
    


国产数据源druid-druid.xml
	
	
		
		
	
	
	
		
		
	
	
	
		
		
	
	
	
	
	
	
	
	
	
	
	
	
	
	


bboss整合版-dbcp2(兼容jdk6,可监控性更好,dbcp2官方不兼容jdk6)
 	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  

	  
	
	
	  
	  
	  
	  
		  
	 

 

4.安全特性
特别需要注意的是:在c3p0数据源和国产数据源druid的配置文件(其他的数据源配置文件中也可以参考添加)中对于数据url,数据库账号,数据库口令几个元素的定义中都有个注释掉的子元素editor:
		

editor元素的作用就是,如果相应的值是一个加密的值,则需要通过editor元素配置一个解密的插件(参考这个示例放开注释即可),以遍ioc框架将解密后的值注入到对于的数据源对象中。bboss持久层提供了一个解密插件:
com.frameworkset.common.poolman.security.DecryptEditor
DecryptEditor实现了bboss ioc的com.frameworkset.util.EditorInf接口,代码如下:
/*
 *  Copyright 2008 biaoping.yin
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package com.frameworkset.common.poolman.security;

import com.frameworkset.util.EditorInf;

/**
 * 
 * 

Title: DecryptEditor.java

* *

Description: 对信息进行解密的属性编辑器,主要用户对于连接池账号信息进行加密的相关操作

* *

Copyright: Copyright (c) 2007

* @Date 2012-7-31 上午11:15:40 * @author biaoping.yin * @version 1.0 */ public class DecryptEditor implements EditorInf { public Object getValueFromObject(Object fromValue) { return getValueFromString((String )fromValue) ; } public Object getValueFromString(String fromValue) { try { return new DESCipher().decrypt((String)fromValue); } catch (Exception e) { return fromValue; } } }

采用这个解密插件时,对应的信息加密方法如下:
com.frameworkset.common.poolman.security.DESCipher aa = new com.frameworkset.common.poolman.security.DESCipher();
		String bb = aa.encrypt("123456");
		System.out.println(bb);
		System.out.println(aa.decrypt(bb));
		
		bb = aa.encrypt("root");
		System.out.println("user:"+bb);
		System.out.println(aa.decrypt(bb));
		
		bb = aa.encrypt("jdbc:mysql://localhost:3306/cim");
		System.out.println("url:"+bb);
		System.out.println(aa.decrypt(bb));



常用的数据库驱动配置
postgresql
 
 
 


oracle
    
 
 
    

sqlserver

 
 
 
 

mysql


     
       
       
       
         

derby
 


 
 

sqlite
 

 



目录
相关文章
|
3月前
|
存储 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
60 1
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
|
3月前
|
缓存 前端开发 应用服务中间件
CORS跨域+Nginx配置、Apache配置
CORS跨域+Nginx配置、Apache配置
313 7
|
3月前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
67 3
|
3月前
|
存储 分布式计算 druid
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
90 3
|
3月前
|
消息中间件 分布式计算 druid
大数据-154 Apache Druid 架构与原理详解 基础架构、架构演进
大数据-154 Apache Druid 架构与原理详解 基础架构、架构演进
97 2
|
3月前
|
消息中间件 druid 大数据
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
57 2
|
3月前
|
消息中间件 分布式计算 druid
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(一)
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(一)
73 1
|
1月前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
348 33
The Past, Present and Future of Apache Flink
|
3月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
951 13
Apache Flink 2.0-preview released
|
3月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
144 3

热门文章

最新文章

推荐镜像

更多