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文件示例
每个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接口,代码如下:
采用这个解密插件时,对应的信息加密方法如下:
常用的数据库驱动配置
postgresql
oracle
sqlserver
mysql
derby
sqlite
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