社区
Web Services
帖子详情
web service 连接池问题
fletcher
2004-08-28 03:48:10
在我的项目里有多个web service 都有数据库连接我想让他们共享同一个连接怎么实现?
...全文
652
11
打赏
收藏
web service 连接池问题
在我的项目里有多个web service 都有数据库连接我想让他们共享同一个连接怎么实现?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ddggggdd
2004-09-01
打赏
举报
回复
连接池应该可以满足,只要连接串相同,都会放在同一池中,如果非要别的办法,考虑一下连接工厂.
jamzh
2004-08-31
打赏
举报
回复
帮你顶!
fletcher
2004-08-31
打赏
举报
回复
还有更好的办法吗
pgwron
2004-08-30
打赏
举报
回复
心情不好,没分也回
Tomgus
2004-08-29
打赏
举报
回复
连接池允许应用程序从连接池中获得一个连接并使用这个连接,而不需要为每一个连接请求重新建立一个连接。一旦一个新的连接被创建并且放置在连接池中,应用程序就可以重复使用这个连接而不必实施整个数据库连接创建过程。
当应用程序请求一个连接时,连接池为该应用程序分配一个连接而不是重新建立一个连接;当应用程序使用完连接后,该连接被归还给连接池而不是直接释放。
如何实现连接池
确保你每一次的连接使用相同的连接字符串(和连接池相同);只有连接字符串相同时连接池才会工作。如果连接字符串不相同,应用程序就不会使用连接池而是创建一个新的连接。
优点
使用连接池的最主要的优点是性能。创建一个新的数据库连接所耗费的时间主要取决于网络的速度以及应用程序和数据库服务器的(网络)距离,而且这个过程通常是一个很耗时的过程。而采用数据库连接池后,数据库连接请求可以直接通过连接池满足而不需要为该请求重新连接、认证到数据库服务器,这样就节省了时间。
缺点
数据库连接池中可能存在着多个没有被使用的连接一直连接着数据库(这意味着资源的浪费)。
技巧和提示
1. 当你需要数据库连接时才去创建连接池,而不是提前建立。一旦你使用完连接立即关闭它,不要等到垃圾收集器来处理它。
2. 在关闭数据库连接前确保关闭了所有用户定义的事务。
3. 不要关闭数据库中所有的连接,至少保证连接池中有一个连接可用。如果内存和其他资源是你必须首先考虑的问题,可以关闭所有的连接,然后在下一个请求到来时创建连接池。
连接池FAQ
1. 何时创建连接池?
当第一个连接请求到来时创建连接池;连接池的建立由数据库连接的连接字符创来决定。每一个连接池都与一个不同的连接字符串相关。当一个新的连接请求到来时如果连接字符串和连接池使用的字符串相同,就从连接池取出一个连接;如果不相同,就新建一个连接池。
2. 何时关闭连接池?
当连接池中的所有连接都已经关闭时关闭连接池。
3. 当连接池中的连接都已经用完,而有新的连接请求到来时会发生什么?
当连接池已经达到它的最大连接数目时,有新的连接请求到来时,新的连接请求将放置到连接队列中。当有连接释放给连接池时,连接池将新释放的连接分配给在队列中排队的连接请求。你可以调用close和dispose将连接归还给连接池。
4. 我应该如何允许连接池?
对于.NET应用程序而言,默认为允许连接池。(这意味着你可以不必为这件事情做任何的事情)当然,如果你可以在SQLConnection对象的连接字符串中加进Pooling=true;确保你的应用程序允许连接池的使用。
5. 我应该如何禁止连接池?
ADO.NET默认为允许数据库连接池,如果你希望禁止连接池,可以使用如下的方式:
1) 使用SQLConnection对象时,往连接字符串加入如下内容:Pooling=False;
2) 使用OLEDBConnection对象时,往连接字符串加入如下内容:OLE DB Services=-4;
zhpsam109
2004-08-29
打赏
举报
回复
http://www.microsoft.com/china/msdn/events/featureevents/2004/MSDevTrainingCourse.mspx#XSLTsection124121120120
zhpsam109
2004-08-29
打赏
举报
回复
顶!
The123
2004-08-29
打赏
举报
回复
最好还是不要共享同一个连接,否则就会同楼上所说的
如果硬要使用,那就必须要用一个独立的线程监视这个连接了,一旦该连接被一个对象调用了,那其他需要调用这个连接的对象就排队等候吧,直到这个对象结束对连接的调用,下一个对象再上吧。呵呵,不知描述的是否清楚。
serf
2004-08-28
打赏
举报
回复
不要用静态连接对象,这样不管你的池有多大,只要不关闭,总是使用其中一个连接而已,容易产生访问冲突。
serf
2004-08-28
打赏
举报
回复
.net数据库连接池还没有特别明确的规格,目前是oleConnection和sqlConnection实现不一样。ole的是靠驱动程序的管理器去配置,程序内不用控制。sqlConnection是根据连接字符串确定连接池的,只要连接串同,就是使用的一个连接池。连接串内增加"Min Pool Size=x;Max Pool Size=y",x,y是池容纳连接的最小最大数限定。池是基于应用域,而不是进程管理的。
1979xt
2004-08-28
打赏
举报
回复
设一个静态的连接对象就行,不过共享连接容易造成使用时的冲突问题,而且.net中的连接对象并不是长连接的,对资源的消耗也不是很大,共享有什么好外吗?
JDBC(四) 三层架构、DAOUtils、Druid
连接池
、DBUtils
本文详细介绍了Java数据库开发中的三层架构设计与工具封装技术。主要内容包括:1) 三层架构(DAO、
Service
、
Web
层)的分工与包结构设计;2) DAOUtils工具类对JDBC操作的二次封装,通过泛型和RowMapper接口实现通用查询;3) 使用Druid
连接池
优化数据库连接管理;4) Apache DBUtils工具的应用,包括QueryRunner的增删改查操作及结果集处理(BeanHandler/BeanListHandler)。这些技术方案有效减少了JDBC冗余代码,提高了开发效率和系统
xfire设置连接超时
问题
近期使用xfire作为客户端访问WS,结果因为目标主机假死,造成客户端一致无法返回,后续调用也无法进行。更悲催的是采用定时器轮询调用,结果整个定时器都阻塞无法执行后续任务。 跟踪了一下代码发现引起上诉
问题
的代码出现在此处(红色部分): Java代码 publicClientloadClient()throwsMalformedURLException,Exc...
我对传说中"多层"的理解
自从数据库一诞生,人们就学会了用数据库存贮东西,而相应的程序是直连数据库的,直到程序关闭,这个连接才会断开.这就是C/S程序的最初原形. 但是这种程序有一个
问题
,只要一程序运行,就必须要连接据库,只要客户端一多,哪么就会有N多数据连接,而N多数据连接,可能有N-1个数据连接是无效的,也就是说N-1台机器上的程序是没有对数据库进行操作的。所以这样的话,对数据库系统资源占用很大,
微信小程序后台springboot+mybatis+mysql“采坑”集锦
“采坑”错误集锦 1、
service
层 错误描述:2019-04-14 22:09:52.027 ERROR 8416 --- [nio-8082-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.
service
() for servlet [dispatcherServlet] in context with path [] th...
Web Services
12,165
社区成员
16,323
社区内容
发帖
与我相关
我的任务
Web Services
.NET技术 Web Services
复制链接
扫一扫
分享
社区描述
.NET技术 Web Services
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章