1、采用DBCP连接池:
(1)、加入相关jar包:commons-dbcp-1.2.jar。
(2)、通过properties配置文件配置数据库相关参数,暂且命名为:jdbc.properties,并放到src目录下,内容如下,此处以MySql为例:
<!--Mysql--> datasource.driverClassName=com.mysql.jdbc.Driver datasource.url=jdbc:mysql://localhost:3306/db_test?useUnicode=true&characterEncoding=UTF-8 datasource.username=root datasource.password=root #hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect <!--Oracle--> #datasource.driverClassName=oracle.jdbc.driver.OracleDriver #datasource.url=jdbc:oracle:thin:@Jack:1521:db_test #datasource.username=accp #datasource.password=accp #hibernate.dialect=org.hibernate.dialect.Oracle9Dialect <!--SqlServer2000--> #jdbc.driverClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver #jdbc.url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_test #jdbc.username=sa #jdbc.password=123 #hibernate.dialect=org.hibernate.dialect.SQLServerDialect <!--SqlServer2005--> #jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver #jdbc.url=jdbc:sqlserver://localhost:1434;DatabaseName=db_test;SelectMethod=cursor #jdbc.username=sa #jdbc.password=123 #hibernate.dialect=org.hibernate.dialect.SQLServerDialect
(3)、配置Spring配置文件applicationContext-resource.xml:
<!--加载数据配置文件对象--> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:/jdbc.properties</value> </list> </property> </bean> <!-- 配置数据库连接池,使用dbcp --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <!-- 指定连接数据库的驱动 --> <property name="driverClassName" value="${datasource.driverClassName}" /> <!-- 指定连接数据库的URL --> <property name="url" value="${datasource.url}" /> <!-- 指定连接数据库的用户名 --> <property name="username" value="${datasource.username}" /> <!-- 指定连接数据库的密码 --> <property name="password" value="${datasource.password}" /> <!-- 连接池启动时的初始值 --> <property name="initialSize" value="4" /> <!-- 连接池的最大值 --> <property name="maxActive" value="100" /> <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止--> <property name="maxIdle" value="2" /> <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 --> <property name="minIdle" value="1" /> </bean>
(4)、web.xml中配置,让Spring启动时处理对应配置文件即可。
<!-- spring配置文件的开始 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:/applicationContext-resource.xml classpath:/applicationContext-dao.xml classpath:/applicationContext-service.xml classpath:/applicationContext-action.xml <!-- WEB-INF/applicationContext-action.xml --> </param-value> </context-param>
2、采用Proxool连接池:
(1)、加入相关jar包:proxool-0.9.1.jar,proxool-cglib.jar。
(2)、通过xml配置文件配置数据库相关参数,暂且命名为:proxool.xml,并放到webroot目录下的WEB-INF目录下,内容如下,此处以MySql为例:
<?xml version="1.0" encoding="UTF-8"?> <something-else-entirely> <proxool> <alias>db_test</alias> <driver-url>jdbc:mysql://127.0.0.1:3306/db_test</driver-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <driver-properties> <property name="user" value="root" /> <property name="password" value="root" /> </driver-properties> <maximum-new-connections>10</maximum-new-connections> <prototype-count>5</prototype-count> <test-before-use>true</test-before-use> <test-after-use>true</test-after-use> <house-keeping-sleep-time>60000</house-keeping-sleep-time> <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql> <maximum-connection-count>10</maximum-connection-count> <minimum-connection-count>2</minimum-connection-count> </proxool> </something-else-entirely>
(3)、配置web.xml配置文件,加载连接池配置文件,初始化连接池。
<!--连接池配置--> <servlet> <servlet-name>ServletConfigurator</servlet-name> <servlet-class> org.logicalcobwebs.proxool.configuration.ServletConfigurator </servlet-class> <init-param> <param-name>xmlFile</param-name> <param-value>WEB-INF/proxool.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- 监控proxool连接池的请求路径,请求后会返回一个监控连接池性能的页面 --> <servlet> <servlet-name>Admin</servlet-name> <servlet-class> org.logicalcobwebs.proxool.admin.servlet.AdminServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>Admin</servlet-name> <url-pattern>/admin</url-pattern> </servlet-mapping> <!--注意,如果使用了Struts2,则需放行上面的请求,不要拦截,否则得不到监控页面--> <!-- struts2,仅仅拦截action或者jsp后缀的请求 --> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>
(4)、配置Spring配置文件applicationContext-resource.xml:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>org.logicalcobwebs.proxool.ProxoolDriver</value> </property> <property name="url"> <value>proxool.db_test</value> </property> </bean>
3、采用web应用服务器自带的连接池,采用jndi技术,这里采用WebLogic为例。
(1)、在对应应用服务器中配置连接池,注意webLogic中配置数据源的控制台为:http://127.0.0.1:7001/console,注意,配置时一定要点“下一步”到最后(有个页面有“测试”、“完成”按钮,此时注意还有一个“下一步”按钮,继续点击“下一步”指定“目标”,才会激活连接池,否则无法通过程序连接使用;当然如果没有执行这一步操作,完成后,在连接池列表中仍然可以单击“连接池名称”,进入配置页面,单击“目标”tab页选择目标以激活连接池)。
//如果Weblogic中配置数据源不激活,则在使用时会出现以下错误 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [applicationContext-resource.xml]: Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: While trying to lookup 'jdbc.test' didn't find subcontext 'jdbc'. Resolved ''; remaining name 'jdbc/test' at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:567) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:582) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57) at weblogic.servlet.internal.EventsManager.executeContextListener(EventsManager.java:233) at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:190) at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:175) at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1730) at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2740) at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1704) at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:781) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:213) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:208) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:35) at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:70) at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:212) at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:111) at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:213) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:208) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:35) at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:70) at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:24) at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:729) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:35) at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:258) at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:48) at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165) at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79) at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:192) at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:369) at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:51) at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200) at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30) at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240) at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:169) at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123) at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:186) at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:94) at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) Caused by: javax.naming.NameNotFoundException: While trying to lookup 'jdbc.test' didn't find subcontext 'jdbc'. Resolved ''; remaining name 'jdbc/test' at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)(3)、配置Spring配置文件applicationContext-resource.xml:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>jdbc.test</value> </property> <property name="resourceRef"> <value>false</value> </property> <!--可要可不要--> <property name="jndiEnvironment"> <props> <prop key="java.naming.provider.url">t3://127.0.0.1:7001</prop> <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop> </props> </property> </bean>
相关推荐
在Spring框架中,数据库连接池是管理数据库连接的关键组件,它能有效地提高应用程序的性能和资源利用率。...同时,随着Spring的发展,现在更推荐使用HikariCP作为默认的连接池,因为它在性能和稳定性上表现更优秀。
Spring框架提供了多种配置数据库连接池的方式,其中C3P0是一种广泛使用的开源连接池实现。本文将详细解析一个具体的Spring配置示例,通过分析`applicationContext.xml`文件中的配置项,帮助读者理解如何有效地配置C3...
在Spring框架中,数据库连接池是管理数据库连接的关键组件,它能提高应用性能,通过复用已存在的连接而不是每次请求时创建新的连接。本篇文章将深入探讨Spring支持的几种主要连接池,包括Apache DBCP、C3P0以及...
Spring Boot使用HikariCP连接池的详细指南 在现代Java开发中,Spring Boot框架以其简洁性和自动化配置受到广泛欢迎。Spring Boot 2.x版本默认采用HikariCP作为其数据连接池,因为HikariCP以其高效和高性能著称。...
Spring2.5配置proxool连接池
通过以上步骤,我们成功地在Spring MVC项目中整合了Redis,并使用连接池优化了性能。这种整合方式不仅提高了代码的可读性和可维护性,也充分利用了Redis的高效性能,为应用程序带来了更好的用户体验。在实际开发中,...
2. 连接池:预先初始化并维护一定数量的数据库连接,当应用程序需要时可以从池中获取,使用完毕后归还给池,而不是直接关闭。 工作原理: 1. 初始化:在应用程序启动时,连接池会根据配置参数预先创建一定数量的...
2. **C3P0连接池** C3P0是另一个流行的开源数据库连接池,提供了更高级的特性和配置选项。使用C3P0时,我们通常会配合`PropertyPlaceholderConfigurer`来读取外部配置文件,如下所示: ```xml ...
"连接池与Spring、Hibernate结合"这个主题涉及到的是如何有效地管理和复用数据库连接,以提高应用程序的效率和响应速度。这里我们将深入探讨连接池的概念,Spring框架中的数据源配置,以及Hibernate的集成,以及它们...
本文将详细介绍 Tomcat 连接池配置的步骤和原理,帮助读者快速掌握 Tomcat 连接池的使用。 一、Tomcat 连接池配置的必要性 在 Web 应用程序中,数据库连接池是必不可少的组件,它可以大大提高数据访问的速度和安全...
本篇文章将深入探讨如何整合ActiveMQ与Spring,并利用连接池提升性能。 首先,我们需要理解JMS(Java Message Service),它是Java平台中用于异步消息传递的标准API。ActiveMQ作为JMS提供者,Spring通过其JMS模块...
标题 "Spring+Hibernate+Proxool连接池" 涉及到的是在Java Web开发中,如何使用Spring框架集成Hibernate ORM框架,并结合Proxool作为数据库连接池的技术实践。这通常是为了提高应用性能,有效管理和复用数据库连接,...
本资料包"spring声明式事务管理+jdbc+连接池.zip"显然是针对Spring框架在数据库操作方面的深入学习,特别是如何利用Spring进行声明式事务管理和JDBC操作,以及如何配置和使用数据库连接池。接下来,我们将详细探讨这...
在Spring框架中,数据库连接管理是非常关键的一部分,有效的连接池配置可以提高应用的性能和稳定性。本文将深入探讨如何在Spring环境下配置几种常用...正确配置和使用连接池是提升Spring应用数据库操作效率的关键步骤。
总之,Spring JDBCTemplate结合连接池提供了一个高效且易于使用的数据库访问层,它降低了数据库操作的复杂性,同时也提升了系统的性能。正确配置和使用这些库,可以极大地优化我们的数据库应用程序。
spring声明式事务管理+jdbc+连接池 包内为代码,下载可直接执行。 一直用s2sh,感觉hibernate不好用,所以写了一个spring声明式事务管理+jdbc+连接池。
首先,让我们来理解Spring Boot中的多连接池。在处理大量并发请求时,数据库连接池是必不可少的,它可以有效地管理和重用数据库连接,提高系统性能。在Spring Boot中,常见的连接池有HikariCP、Druid和Tomcat JDBC等...
RabbitMQ连接池+SpringBoot实现。通过连接池实现将高效的管理RabbitMQ的Connection,并与springboot进行整合,实现消息发送,获取队列列表等功能。基于此可以进行更多功能的扩充。