❶ 请教c3p0连接池如何读Properties配置文件
<!– 读取Properties配置文件路径 –> <bean id="propertyConfig" class="org.springframework.beans.factory.config."> <property name="location" value="classpath:jdbc.properties"></property> </bean><!– 数据源配置 –> <!–<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">>–> <!– 设置JDBC驱动名称 –> <!– <property name="driverClass" value="${jdbc.driver}" />>–> <!– 设置JDBC连接URL –> <!– <property name="jdbcUrl" value="${jdbc.url}" />>–> <!– 设置数据库用户名 –> <!– <property name="user" value="${jdbc.username}" />>–> <!– 设置数据库密码 –> <!– <property name="password" value="${jdbc.password}" />>–> <!– 设置连接池初始值 –> <!– <property name="initialPoolSize" value="${jdbc.initialPoolSize}" />>–> <!– 设置连接池最小空闲值 –> <!– <property name="minPoolSize" value="${jdbc.minPoolSize}" />>–> <!– 设置连接池最大值 –> <!– <property name="maxPoolSize" value="${jdbc.maxPoolSize}" />>–> <!–最大空闲时间,20分钟内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 –> <!– <property name="maxIdleTime" value="1200" />>–> <!– <property name="acquireIncrement" value="2" />–> <!– <property name="idleConnectionTestPeriod" value="60" />–> <!–获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效 保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试 获取连接失败后该数据源将申明已断开并永久关闭。Default: false–> <!– <property name="breakAfterAcquireFailure">–> <!– <value>false</value>–> <!– </property>–> <!–</bean>–>
❷ 使用commons-dbcp.jar包配置文件database.properties的配置文件怎么写
#连接设置jdbc.driverClassName=oracle.jdbc.driver.OracleDriverjdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:DBSERVERjdbc.username=userjdbc.password=pass#<!– 初始化连接 –>dataSource.initialSize=10#<!– 最大空闲连接 –>dataSource.maxIdle=20#<!– 最小空闲连接 –>dataSource.minIdle=5#最大连接数量dataSource.maxActive=50
❸ dbcp连接池有哪些参数需要配置
项目尝试使用几种源数据库连接池实现种dbcp种c3p0种proxool几种数据库连接池都容易Spring配置起性能总体觉dbcp优稳定性并发性都我项目需要项目经反复测试web server数据库server同机器断网间比较短间内三种数据库连接池都能较重连断网间超8钟 proxool能恢复工作dbcp却能快重新连接实际产环境稳定性总体性能重要都需要做相应测试才能放让系统产线给项目数据库连接池配置:dbcpjndi:13 4 java:comp/env/jdbc/mysql5 6 proxool(proxool-0.9.0RC1)配置: com.mysql.jdbc.Driver jdbc:mysql://ip:3306/dbname?useUnicode=true&characterEncoding=utf8&autoReconnect=true user password 500 15000 select CURRENT_DATE true mysqlProxoolDataSource 1000 false 建议使用DBCP配置tomcatspring使用jndi形式获取 c3p0(c3p0-0.9.0): 1 3 4 com.mysql.jdbc.Driver 5 6 7 jdbc:mysql://192.168.0.225:3306/sendinmdb?useUnicode=true&characterEncoding=utf8&autoReconnect=true 8 9 10 ********11 12 13 ********14 15 16 10017 18 19 5020 21 22 10023 24 25 100026 27 28 3029 30 直接 & pastespring配置文件使用 配置些额外tomcat DBCP连接池参数更使用类似proxool提供功能dbcp更加稳定已tomcat/conf/context.xml插入Resource元素: 解释些参数含义:validationQuery = "select current_date()"testOnBorrow = "true"testOnReturn = "false"testWhileIdle = "true"池获取Connection使用 select current_date() 测试该数据库连接用性SQL语句返结则认效连接否则继续测试知道拿效连接返Connection给池候进行验证Connection空闲候要进行认证timeBetweenEvictionRunsMillis = "15000"DBCP 清空线程睡眠间隙值负数则运行该线程numTestsPerEvictionRun = "10"清空线程每验证连接象数minEvictableIdleTimeMillis = "600000" Connection象池空闲间单位毫秒详细配置请访问
❹ 关于TOMCAT中配置DBCP数据库连接池的问题
"jdbc/student" 只是个标示,下面的是连接池的具体配置。 在代码中需要用到数据库的地方就用 jdbc/student 这个底下的配置来获取数据库连接,同时项目中的web.xml文件也要看情况做相应的配置。代码中就可以用下面代码获取数据库连接。DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/student");Connection conn=ds.getConnection();这个名字是自己起的,这边配置中的名字要和你代码中的名字一致即可。
❺ javaWeb工程数据库配置文件加解密问题
这个有几个思路:一个是本身项目文件应该有访问权限限制,生产环境的系统不应让开发人员可以察看,开发环境和生产环境应分开。如果不能分开,还有个方法是用J2EE服务器容器提供数据库Datasource,应用程序直接从web容器获取,不需要提供用户名密码。还有一个方法,配置数据库服务器限制用户只能从Web容器IP连接,这样甚至可以不需要密码。
❻ DBCP类的方法
Eclipse里面?
删除,再打点试试。
PropertiesdbProps=null;//下面的读取配置文件可以根据实际的不同修改dbProps=ConfigProperties.getInstance().getProperties("jdbc.properties");try{StringdriveClassName=dbProps.getProperty("jdbc.driverClassName");Stringurl=dbProps.getProperty("jdbc.url");Stringusername=dbProps.getProperty("jdbc.username");Stringpassword=dbProps.getProperty("jdbc.password");StringinitialSize=dbProps.getProperty("dataSource.initialSize");StringminIdle=dbProps.getProperty("dataSource.minIdle");StringmaxIdle=dbProps.getProperty("dataSource.maxIdle");StringmaxWait=dbProps.getProperty("dataSource.maxWait");StringmaxActive=dbProps.getProperty("dataSource.maxActive");//是否在自动回收超时连接的时候打印连接的超时错误booleanlogAbandoned=(Boolean.valueOf(dbProps.getProperty("dataSource.logAbandoned","false"))).booleanValue();//是否自动回收超时连接booleanremoveAbandoned=(Boolean.valueOf(dbProps.getProperty("dataSource.removeAbandoned","false"))).booleanValue();//超时时间(以秒数为单位)intremoveAbandonedTimeout=Integer.parseInt(dbProps.getProperty("dataSource.removeAbandonedTimeout","300"));dataSource=newBasicDataSource();dataSource.setDriverClassName(driveClassName);dataSource.setUrl(url);dataSource.setUsername(username);dataSource.setPassword(password);//初始化连接数if(initialSize!=null)dataSource.setInitialSize(Integer.parseInt(initialSize));//最小空闲连接if(minIdle!=null)dataSource.setMinIdle(Integer.parseInt(minIdle));//最大空闲连接if(maxIdle!=null)dataSource.setMaxIdle(Integer.parseInt(maxIdle));//超时回收时间(以毫秒为单位)if(maxWait!=null)dataSource.setMaxWait(Long.parseLong(maxWait));//最大连接数if(maxActive!=null){if(!maxActive.trim().equals("0"))dataSource.setMaxActive(Integer.parseInt(maxActive));}System.out.println("logAbandoned="+logAbandoned);dataSource.setLogAbandoned(logAbandoned);dataSource.setRemoveAbandoned(removeAbandoned);dataSource.setRemoveAbandonedTimeout(removeAbandonedTimeout);Connectionconn=dataSource.getConnection();if(conn==null){log("创建连接池时,没有取得连接!检查设置!!!");}else{conn.close();}System.out.println("连接池创建成功!!!");}catch(Exceptione){e.printStackTrace();System.out.println("创建连接池失败!请检查设置!!!");}
❼ spring配置文件中的org.apache.commons.dbcp.BasicDataSource
AOP是OOP的延续,是AspectOrientedProgramming的缩写,意思是面向切面编程。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。
举例:假设有在一个应用系统中,有一个共享的数据必须被并发同时访问,首先,将这个数据封装在数据对象中,称为DataClass,同时,将有多个访问类,专门用于在同一时刻访问这同一个数据对象。
图可以说明。内部实现包括采用动态代理模式和cglib的内容。
IOC其原理是基于OO设计原则的TheHollywoodPrinciple:Don'tcallus,we'llcallyou(别找我,我会来找你的)。也就是说,所有的组件都是被动的(Passive),所有的组件初始化和调用都由容器负责。组件处在一个容器当中,由容器负责管理。
dataSource中property就是采用依赖注入。
不知道你是否理解,可以看一本书《springinaction》
❽ mybatis为什么要使用dbcp
把几个属性文件放在源包下面。 第一步,编写日志配置文件 commons-logging.properties 和 log4j.properties。 第二步,编写一个关于 jdbc 的 属性文件,如 jdbc.properties。其实,这个文件不是必需的。也可以写在Spring的XML文件中,后面会理解它的用途。 第三步,编定Spring的XML配置。 在Spring的XML中,要完成以下几个功能: 1. 定义一个 dataSource 数据库连接池 2. 定义一个 sqlSessionFactory。 如果是 WEB 应用,还应定义一个事务管理器 dataSourceTransactionManager。 那么 SpringConfig.xml 内容如下: Xml代码 <beans…… ……> <bean id="propertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="jdbc.properties" /> </bean> <!– 定义一个 datasource 数据库连接池,这里使用了Apache DBCP,需要 commons-dbcp和commons-pool的包支持 –> <!– 这里的${…},引用了 jdbc.properties中的内容,使用户不需要查找XML文件中有关JDBC的配置片段 –> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" > <property name="driverClassName" value="${jdbc.driver}" /> <property name="url"> <value>${jdbc.url}</value> </property> <property name="username"> <value>${jdbc.user}</value> </property> <property name="password"> <value>${jdbc.password}</value> </property> <property name="maxActive" value="2" /> <property name="initialSize" value="1" /> <property name="maxIdle" value="2" /> <property name="minIdle" value="1" /> <!– 等待连接超时时间,30秒 –> <property name="maxWait" value="30000" /> </bean> <!– 使用指定的 dataSource 创建 SqlSessionFactory,并且指定Mybatis的配置文件, 同时,MyBatis中的Enviroment 配置段在容器中不会生效,使用指定的 dataSource。 –> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!– mapperLocations和configLocation有一个即可, 如果Mapper.xml 中使用了 typeAliases 的别名,则可以使用 configLocation,否则可任选其一 –> <!– 指定实体类映射文件,可以指定同时指定某一包以及子包下面的所有配置文件 –> <!– <property name="mapperLocations" value="classpath*:…/*.xml"/> –> <property name="configLocation" value="classpath:SqlMapConfig.xml" /> </bean> <!– 定义一个事务管理器 –> <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> </beans> 从上面的 SpringConfig中看到,jdbc.properties被Spring容器读取后,作为参数赋于dataSrouce ,那也就是说,没有jdbc.properties,可以直接在XML写值。 而这个dataSource是由dbcp的BasicDataSource实现的。 继续看接下来的配置,sqlSessionFactory,它必须要有dataSource数据库连接池属性。 在例子中,使用的是configLocation。 实际上,通过 mybatis-generator生成XML,放在统一的位置,使用mapperLocations则更加方便,而不需要编写一个有关Mybatis的Mappers文件。 第四步,编写 MybatisConfig.xml,设置别名,定义参数, Mappeers。 Xml代码 <configuration> <typeAliases> <typeAlias alias="OrgType" type="MybatisTest.domain.Org_Type" /> </typeAliases> <mappers> <mapper resource="MybatisTest/domain/OrgTypeMapper.xml" /> <mapper resource="MybatisTest/domain/NtAcctinfoMapper.xml" /> </mappers> </configuration> 上面这个 MybatisConfig非常简单,相比典型的文件省略很多内容,只是定义了一个别名。 列了两张表的Mapper,没有其它。如果在 Mapper文件中没有引用别名,可以把typeAliases无素也删除了。 如果数据表很多,而编写Mappers 元素也有可能出错。所以说,属性mapperLocations更加合理方便。 前面四个步骤,完成了 几个配置文件的编写。接下来需要做的是针对表的Mapper和POJO类的开发。 第五步,编写POJO 类。 Pojo类的代码不再细述,只要 javaType 和 JDBCType 是对应的,数据表的列名与POJO属性名既可以相同,也可以不同, 不列举代码了。 第六步,编写 ****Mapper.xml Xml代码 <mapper namespace="aps.tables.org_type"> <resultMap id="orgTyperesult" type="MybatisTest.domain.Org_Type"> <id column="ID" property="id" /> <result column="TYPE_CODE" property="typecode" /> <result column="TYPE_NO" property="typeno" /> <result column="TYPE_VALUE" property="typevalue" /> <result column="NOTES" property="typenotes" /> </resultMap> <select id="selectByID" parameterType="int" resultMap="orgTyperesult"> select ID, TYPE_CODE, TYPE_NO, TYPE_VALUE, NOTES from dbo.T_TYPE_ENUM where ID=#{id} </select> <delete id="delete" parameterType="int"> delete from T_TYPE_ENUM where ID=#{id} </delete> <update id="update" parameterType="OrgType" > update dbo.T_TYPE_ENUM set TYPE_CODE=#{typecode}, TYPE_NO=#{typeno}, TYPE_VALUE=#{typevalue}, NOTES=#{typenotes} where ID=#{id} </update> <insert id="insert" parameterType="MybatisTest.domain.Org_Type" > insert into dbo.T_TYPE_ENUM ( ID,TYPE_CODE, TYPE_NO, TYPE_VALUE, NOTES) values ( #{id}, #{typecode},#{typeno}, #{typevalue},#{typenotes}) </insert> </mapper> resultMap 是实现列名与属性的对应关系,这里只是最简单的示例,你可以在Reference文档中看到更复杂更加大的功能。 其它的select , insert等,是相关的SQL语句,不做过多解释。parameterType是传入的参数,resultMap和resultType是返回值的类型,如果SELECT 别名与 POJO 属性名相同,那么就可以使用 resultType ,进行自动映射转换。 #{}代表的是相应的参数,相当于 JDBC SQL 参数的 ? 。 这样,是不是可以结束了,开始测试了? 当然可以!也可以作进一步的封装。 先来测试一下吧。为方便起见,先写一个静态工具,用来获取SqlSession Java代码 public class MybatisUtil { private static SqlSessionFactory factory; static{ ApplicationContext ctx=new ("classpath:SpringConfig.xml"); factory=(SqlSessionFactory) ctx.getBean("sqlSessionFactory"); } public static SqlSession getSession(){ return factory.openSession(); } public static SqlSessionFactory getSessionFactory(){ return factory; } } 现在可以来测试了,很简单。这里得到SqlSession后,通过Mybatis得到了Org_Type 的一个对象,又通过update更新了数据表。最后关闭连接,准确地说是释放连接,连接的打开关闭由dbcp连接池管理。 Java代码 SqlSession sess=MybatisUtil.getSession(); Org_Type org=sess.selectOne("aps.tables.org_type.selectByID",20); System.out.println(sess.update("aps.tables.org_type.update", org)); sess.close(); 来看其中的"aps.tables.org_type.selectByID","aps.tables.org_type.update",这正是Mapper.xml 文件中 namespace和数据操作 id 的 连接,这就指定了唯一的SQL语句,而后面的对象,就是参数 parameterType。 细细地可以发现,在 Mapper.xml 文件中,insert,update,delete都没有 resultType ,因为它们最终返回的都是int,是语句执行后影响的数据行。 如果 update 或 delete 执行成功,但返回的是 0,那实际上就是一条数据也没有修改或删除。 如果,你想自己直接操作JDBC,也很简单: Statement stmt=sess.getConnection().createStatement(); stmt.execute……
❾ dbcp连接池配置详解
您好,方法1.创建DbcpTest.java单元测试类DBCP数据库连接池实例详解2.拷入所需jar包commons-dbcp-1.4.jar commons-pool-1.5.5.jar。3.创建如下代码,注意我们创建的是BasicDataSource 对象。4.测试结果5.DBCP连接池还有一些属性可以设置,常用的如下:6.以上算是一个DBCP的基本结构,而常用的创建数据连接池是通过他的连接工厂类BasicDataSourceFactory 的createDataSource() 方法,它需要读取一个配置文件。7.新建dbcp.properties文件。8.添加如下代码,注意:配置文件中的键需要来自BasicDataSource的属性。
❿ dbcp怎么监控程序使用数据库连接池
1.创建DbcpTest.java单元测试类2.拷入所需jar包commons-dbcp-1.4.jar commons-pool-1.5.5.jar3.创建如下代码,注意我们创建的是BasicDataSource 对象4.测试结果5.DBCP连接池还有一些属性可以设置,常用的如下:6.以上算是一个DBCP的基本结构,而常用的创建数据连接池是通过他的连接工厂类BasicDataSourceFactory 的createDataSource() 方法,它需要读取一个配置文件7.新建dbcp.properties文件8.添加如下代码,注意:配置文件中的键需要来自BasicDataSource的属性9.测试结果如下:10.总结步骤:步骤阅读