ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>成人激情综合,欧美视频官网,日本成人一区http://www.aygfsteel.com/czmchen/category/42698.htmlzh-cnSun, 10 Jan 2010 04:51:21 GMTSun, 10 Jan 2010 04:51:21 GMT60weblogic connection pool讄¡½®http://www.aygfsteel.com/czmchen/archive/2010/01/08/308750.html陈周æ•?/dc:creator>陈周æ•?/author>Fri, 08 Jan 2010 09:22:00 GMThttp://www.aygfsteel.com/czmchen/archive/2010/01/08/308750.htmlhttp://www.aygfsteel.com/czmchen/comments/308750.htmlhttp://www.aygfsteel.com/czmchen/archive/2010/01/08/308750.html#Feedback0http://www.aygfsteel.com/czmchen/comments/commentRss/308750.htmlhttp://www.aygfsteel.com/czmchen/services/trackbacks/308750.htmlåQ?/font>配置数据库连接池。因为我的项目数据库是ORACLEåQŒé‚£ž®×ƒ»¥Oracle的配¾|®ä½œä¸ºç¤ºä¾‹ï¼š

我的½CÞZ¾‹weblogicæ˜?.xåQŒå…¶ä»–版本都同理åQŒæ‰¾åˆ°å‚数后卛_¯

˜q›å…¥åŽå°åŽï¼Œå•击左边çš?span>mydomainâ€?gt;Servicesâ€?gt;JDBCâ€?span>>Connection Pools
新徏我就不说了,在我的文章里面有weblogic的数据源˜qžæŽ¥create

9.x的要解锁åQŒé‚£ž®±å…ˆè§£é”ã€‚点å‡ÖM½ æƒŒ™®¾¾|®çš„æ•°æ®æºçš„名称˜q›åŽ»ã€‚è¿›åŽÕdŽç‚¹å‡»ä¸Šé¢çš„菜单Connections

看到参数讄¡½®äº†å§ã€?br />
Initial Capacity:100   åQˆåˆå§‹åŒ–容器的连接数åQ?br /> Maximum Capacity:1000  åQˆå®¹å™¨ä¸­æœ€å¤§çš„˜qžæŽ¥æ•?000åQŒå¦‚果超˜q?˜q˜æ²¡åˆ?000ž®×ƒ¼šæŠ¥è¶…出最大连接的错误,原因你的Oracle安装数据库的时候其池没讄¡½®å¤§å°åQŒçŽ°åœ¨ä½ ä¹Ÿå¯ä»¥è®¾¾|®ã€‚设¾|®æ–¹æ³•:扑ֈ°Oracleçš„init.oraæ–‡äšg˜q™ä¸ªæ–‡äšg一般在oracle/admin/数据库SID/pfile里面。找到large_pool_size˜q™ä¸€å¥ï¼ŒæŠŠè¿™ä¸€å¥åˆ é™¤ï¼Œé‚£å°±ä¸å—限制了。注意:没受限制的情况下不要调这个参数太大了åQ?5000ž®±OKäº†ï¼Œå¤ªå¤§çš„æ—¶å€™æ•°æ®åº“ä¼šæ‰¿å—ä¸èµøP¼‰
Capacity Increment:15   (一‹Æ¡å¢žåŠ å¤šž®‘个connection)
Statement Cache Size:50 (¾~“存大小)

按下下面çš?span class="advancedtitle">Advanced Options "Show",讄¡½®è¯¦ç»†çš„配¾|?br /> 下面是JNDI的自动回收设¾|®ï¼Œæ¯”较重要åQŒè°ƒå‡ ä¸ªé‡è¦çš„参敎ͼŒå…¶ä»–的默è®?br /> Test Frequency:3600åQˆæµ‹è¯?/span>频率åQŒè¿™ä¸ªä¼šæ¶ˆè€—资源。这个看你的™å¹ç›®éœ€è¦ï¼Œä¸€èˆ¬ä»£ç å†™å¾—比较好的可以设¾|®é•¿ç‚ÒŽ—¶é—?/span>åQ?/span>
把下面三个都打上勾。通过‹¹‹è¯•åQŒå‘现连接没关的ž®×ƒ¼šè¢«å›žæ”Óž¼ˆè¯¦ç»†è¯´æ˜Žå¯ä»¥çœ‹ä¸‹é¢çš„参数说明åQ?br /> Test Reserved Connections
Test Created Connections
Test Released Connections

Inactive Connection Timeout:60åQ?/span>无效˜qžæŽ¥­‘…æ—¶åQè¿™ä¸ªä¼šåœ¨æŒ‡å®šçš„æ—‰™—´å†…,回收无效˜qžæŽ¥åQ?/span>

¾|‘ä¸Šæœ‰äº›äºø™¯´è®„¡½®˜q™äº›å‚数后一定的旉™—´ä¼šå‡ºçްjava.lang.OutOfMemoryError的错è¯?br /> 解决的方法就是调大JVM的内存,在启动时对jvm讄¡½®å†…存限度
通过修改commom\bin\commEnv.cmdæ–‡äšg来增加内存分é…?br /> 修改的部分如下:
:bea
if "%PRODUCTION_MODE%" == "true" goto bea_prod_mode
set JAVA_VM=-jrockit
set MEM_ARGS=-Xms768m -Xmx1024m
set JAVA_OPTIONS=%JAVA_OPTIONS% -Xverify:none
goto continue
:bea_prod_mode
set JAVA_VM=-jrockit
set MEM_ARGS=-Xms768m -Xmx1024m//˜q™äº›çœ‹ä½ å†…å­˜å®?G的就讄¡½®=-Xms256m -Xmx512m
goto continue

:sun
if "%PRODUCTION_MODE%" == "true" goto sun_prod_mode
set JAVA_VM=-client
set MEM_ARGS=-Xms768m -Xmx1024m -XX:MaxPermSize=256m
set JAVA_OPTIONS=%JAVA_OPTIONS% -Xverify:none
goto continue
:sun_prod_mode
set JAVA_VM=-server
set MEM_ARGS=-Xms768m -Xmx1024m -XX:MaxPermSize=256m//˜q™ä¸ªž®Þp§£å†³äº†java.lang.OutOfMemoryError的错è¯?br /> goto continue
ž®†è¿™é‡Œçš„内存分配修改后见效ã€?br />

˜qžæŽ¥å±žæ€§å‚数说明:

  * Initial Capacity:创徏˜qžæŽ¥æ± æ—¶æ‰€åˆ›å¾çš„æ•°æ®åº“˜qžæŽ¥çš„æ•°ç›®ã€?br />   * Maximum Capacity: ˜qžæŽ¥æ± ä¸­˜qžæŽ¥çš„æœ€å¤§æ•°ç›®ã€?br />   * Capacity Increment: ˜qžæŽ¥æ± å®¹é‡åœ¨æœ€å¤§å®¹é‡é™åˆ¶èŒƒå›´å†…的增量ã€?br />   * LoginDelay: 在创建每个物理数据库˜qžæŽ¥ä¹‹å‰è¦åšg˜qŸçš„¿U’æ•°ã€?br />   * Allow Shrinking: ž®†è¯¥™å¹è®¾¾|®äØ“trueæ—Óž¼Œå¦‚果没有使用额外的连接,则允许连接池把容量减ž®åˆ°InitialCapacityã€?br />   * Shrink Frequency: 在减ž®è¿žæŽ¥æ± å®šw‡ä¹‹å‰è¦ç­‰å¾…çš„¿U’数。如果将Shrink Frequency讄¡½®ä¸ºtrueåQŒé‚£ä¹ˆä¹Ÿå¿…é¡»ž®†Allow Shrinking讄¡½®ä¸ºtrueã€?br />   * Test Frequency: 数据库连接测试之间间隔的¿U’数。在每个Refresh Periodæ—‰™—´é—´éš”之后åQŒå¦‚果设¾|®äº†TestTableNameåQŒå°±ä¼šä‹É用TestTableName‹¹‹è¯•未ä‹É用的数据库连接ã€?br />   * Test Reserved Connections: 如果选择了这个选项åQŒæœåŠ¡å™¨ä¼šåœ¨æŠŠè¿žæŽ¥æä¾›ç»™å®¢æˆ·ç«¯ä¹‹å‰å¯¹å…¶è¿›è¡Œæµ‹è¯•ã€?br />   * Test Created Connections: 如果选择了这个选项åQŒå°±ä¼šåœ¨åˆ›å¾ä¸€ä¸ªJDBC˜qžæŽ¥ä¹‹åŽå’Œåœ¨æŠŠå®ƒæ·ÕdŠ åˆ°JDBC˜qžæŽ¥æ± ä¸­çš„可用连接列表之前,对该JDBC˜qžæŽ¥˜q›è¡Œ‹¹‹è¯•ã€?br />   * Test Released Connections: 如果选择了这个选项åQŒæœåС噍ž®×ƒ¼šåœ¨æŠŠ˜qžæŽ¥˜q”回¾l™è¿žæŽ¥æ± ä¹‹å‰å¯¹å…¶˜q›è¡Œ‹¹‹è¯•ã€?br />   * Test Table Name: 用于JDBC˜qžæŽ¥‹¹‹è¯•的数据库表名。如果指定了Test FrequencyåQŒåƈ且选择了Test Reserved Connections、Test Created Connections或Test Released ConnectionsåQŒåˆ™Table Name是必需çš?br />
˜qžæŽ¥å±žæ€§å‚数说æ˜?/span>来源于网上,大家从你™å¹ç›®è§’度讄¡½®
最后别忘记ç‚ÒŽœ€ä¸‹é¢çš„APPLY按钮


]]>
三大˜qžæŽ¥æ± çš„参数说明http://www.aygfsteel.com/czmchen/archive/2009/11/11/301919.html陈周æ•?/dc:creator>陈周æ•?/author>Wed, 11 Nov 2009 01:06:00 GMThttp://www.aygfsteel.com/czmchen/archive/2009/11/11/301919.htmlhttp://www.aygfsteel.com/czmchen/comments/301919.htmlhttp://www.aygfsteel.com/czmchen/archive/2009/11/11/301919.html#Feedback0http://www.aygfsteel.com/czmchen/comments/commentRss/301919.htmlhttp://www.aygfsteel.com/czmchen/services/trackbacks/301919.html1. Apache-DBCP

Ø BasicDataSource 相关的参数说æ˜?/p>

Ø åœ¨ä‹Éç”?font face="Times New Roman">DBCP的时候,如果使用默认å€û|¼Œåˆ™æ•°æ®åº“˜qžæŽ¥å› äؓ某种原因断掉后,再从˜qžæŽ¥æ± ä¸­å–å¾—˜qžæŽ¥åˆä¸˜q›è¡ŒéªŒè¯åQŒè¿™æ—¶å–å¾—çš„˜qžæŽ¥å®žé™…上就会是无效的数据库˜qžæŽ¥ã€‚å› æ­¤äØ“äº†é˜²æ­¢èŽ·å¾—çš„æ•°æ®åº“è¿žæŽ¥å¤±æ•ˆï¼Œåœ¨ä‹É用的时候最好保证:

  • username: 登陆数据库所用的帐号
  • validationQueryåQ?font face="Times New Roman">SELECT COUNT(*) FROM DUAL
  • testOnBorrowã€?strong>testOnReturnã€?strong>testWhileIdleåQšæœ€å¥½éƒ½è®¾äØ“true
  • minEvictableIdleTimeMillisåQšå¤§äº?font face="Times New Roman">0 åQŒè¿›è¡Œè¿žæŽ¥ç©ºé—²æ—¶é—´åˆ¤æ–­ï¼Œæˆ–䨓0åQŒå¯¹½Iºé—²çš„连接不˜q›è¡ŒéªŒè¯
  • timeBetweenEvictionRunsMillisåQšå¤±æ•ˆæ£€æŸ¥çº¿½E‹è¿è¡Œæ—¶é—´é—´éš”,如果ž®äºŽ½{‰äºŽ0åQŒä¸ä¼šå¯åŠ¨æ£€æŸ¥çº¿½E?/li>

Ø PS:在构é€?font face="Times New Roman">GenericObjectPool [BasicDataSource在其createDataSource () æ–ÒŽ³•中也会ä‹Éç”?font face="Times New Roman">GenericObjectPool] æ—Óž¼Œä¼šç”Ÿæˆä¸€ä¸ªå†…嵌类EvictoråQŒå®žçŽ°è‡ªRunnable接口。如æž?strong>timeBetweenEvictionRunsMillis大于0åQŒæ¯˜q?strong>timeBetweenEvictionRunsMillis毫秒Evictor会调ç”?font face="Times New Roman">evict()æ–ÒŽ³•åQŒæ£€æŸ¥å¯¹è±¡çš„闲置旉™—´æ˜¯å¦å¤§äºŽ minEvictableIdleTimeMillis毫秒åQ?font face="Times New Roman">_minEvictableIdleTimeMillisž®äºŽ½{‰äºŽ0时则忽略åQŒé»˜è®¤äØ“30分钟åQ‰ï¼Œæ˜¯åˆ™é”€æ¯æ­¤å¯¹è±¡åQŒå¦åˆ™å°±‹È€‹zÕdƈ校验对象åQŒç„¶åŽè°ƒç”?font face="Times New Roman">ensureMinIdleæ–ÒŽ³•‹‚€æŸ¥ç¡®ä¿æ± ä¸­å¯¹è±¡ä¸ªæ•îC¸ž®äºŽ_minIdle。在调用returnObjectæ–ÒŽ³•把对象放回对象池åQŒé¦–先检查该对象是否有效åQŒç„¶åŽè°ƒç”?font face="Times New Roman">PoolableObjectFactory çš?font face="Times New Roman">passivateObjectæ–ÒŽ³•使对象处于非‹zÕdŠ¨çŠ¶æ€ã€‚å†‹‚€æŸ¥å¯¹è±¡æ± ä¸­å¯¹è±¡ä¸ªæ•°æ˜¯å¦å°äº?strong>maxIdleåQŒæ˜¯åˆ™å¯ä»¥æŠŠæ­¤å¯¹è±¡æ”¾å›žå¯¹è±¡æ± åQŒå¦åˆ™é”€æ¯æ­¤å¯¹è±¡

Ø ä¸Šè¿°ç‰ÒŽ€§çš„可设¾|®æ€§å·²åœ¨ä»£ç ä¸­éªŒè¯åQŒå…·ä½“性能是否能实现有待实际验è¯?/strong>

2. C3P0

Ø C3P0的官æ–?font face="Times New Roman">example中ä‹Éç”¨çš„æ•°æ®æºäØ“ComboPooledDataSourceåQŒç½‘上一½‹‡æ–‡ç« è¯¦¾l†ä»‹¾läº†C3P0˜qžæŽ¥æ± é…¾|®ä¸­å„项含义[˜q™äº›é…ç½®™å¹çš„含义在下载解åŽ?font face="Times New Roman">c3p0的压¾~©åŒ…之后目录çš?font face="Times New Roman">doc\index.html中的Configuration部分也有详细的介¾lï¼Œ˜q™é‡Œå·ä¸‹æ‡?font face="Times New Roman">:P]åQŒçŽ°æ‘˜å½•å¦‚ä¸‹åQ?/p>

<c3p0-config>
<default-config>
<!--当连接池中的˜qžæŽ¥è€—尽的时å€?/font>c3p0一‹Æ¡åŒæ—¶èŽ·å–çš„˜qžæŽ¥æ•°ã€?/font>Default: 3 -->
<property name="acquireIncrement">3</property>

<!--定义在从数据库获取新˜qžæŽ¥å¤ÞpÓ|后重复尝试的‹Æ¡æ•°ã€?/font>Default: 30 -->
<property name="acquireRetryAttempts">30</property>

<!--两次˜qžæŽ¥ä¸­é—´é𔿗¶é—ß_¼Œå•位毫秒ã€?/font>Default: 1000 -->
<property name="acquireRetryDelay">1000</property>

<!--˜qžæŽ¥å…³é—­æ—‰™»˜è®¤å°†æ‰€æœ‰æœªæäº¤çš„æ“ä½œå›žæ»šã€?/font>Default: false -->
<property name="autoCommitOnClose">false</property>

<!--c3p0ž®†å¾ä¸€å¼ åä¸?/font>Test的空表,òq¶ä‹É用其自带的查询语句进行测试。如果定义了˜q™ä¸ªå‚数那么
属æ€?/font>preferredTestQueryž®†è¢«å¿½ç•¥ã€‚你不能在这å¼?/font>Test表上˜q›è¡Œä»ÖM½•操作åQŒå®ƒž®†åªä¾?/font>c3p0‹¹‹è¯•
使用�/font>Default: null-->
<property name="automaticTestTable">Test</property>

<!--获取˜qžæŽ¥å¤ÞpÓ|ž®†ä¼šå¼•è“v所有等待连接池来获取连接的¾U¿ç¨‹æŠ›å‡ºå¼‚常。但是数据源仍有æ•?/font>
保留åQŒåƈ在下‹Æ¡è°ƒç”?/font>getConnection()的时候ç‘ô¾l­å°è¯•获取连接。如果设ä¸?/font>trueåQŒé‚£ä¹ˆåœ¨ž®è¯•
获取˜qžæŽ¥å¤ÞpÓ|后该数据源将ç”Ïx˜Žå·²æ–­å¼€òq¶æ°¸ä¹…关闭ã€?/font>Default: false-->
<property name="breakAfterAcquireFailure">false</property>

<!--当连接池用完时客æˆïL«¯è°ƒç”¨getConnection()后等待获取新˜qžæŽ¥çš„æ—¶é—ß_¼Œ­‘…时后将抛出
SQLException,如设ä¸?/font>0则无限期½{‰å¾…。单位毫¿U’ã€?/font>Default: 0 -->
<property name="checkoutTimeout">100</property>

<!--通过实现ConnectionTesteræˆ?/font>QueryConnectionTester的类来测试连接。类名需制定全èµ\径ã€?/font>
Default: com.mchange.v2.c3p0.impl.DefaultConnectionTester-->
<property name="connectionTesterClassName"></property>

<!--指定c3p0 librariesçš„èµ\径,如果åQˆé€šå¸¸éƒ½æ˜¯˜q™æ ·åQ‰åœ¨æœ¬åœ°å›_¯èŽ·å¾—é‚£ä¹ˆæ— éœ€è®„¡½®åQŒé»˜è®?/font>null卛_¯
Default: null-->
<property name="factoryClassLocation">null</property>

<!--Strongly disrecommended. Setting this to true may lead to subtle and bizarre bugs.
åQˆæ–‡æ¡£åŽŸæ–‡ï¼‰ä½œè€…å¼ºçƒˆå¾è®®ä¸ä½¿ç”¨çš„ä¸€ä¸ªå±žæ€?/font>-->
<property name="forceIgnoreUnresolvedTransactions">false</property>

<!--æ¯?/font>60¿U’检查所有连接池中的½Iºé—²˜qžæŽ¥ã€?/font>Default: 0 -->
<property name="idleConnectionTestPeriod">60</property>

<!--初始化时获取三个˜qžæŽ¥åQŒå–值应åœ?/font>minPoolSizeä¸?/font>maxPoolSize之间ã€?/font>Default: 3 -->
<property name="initialPoolSize">3</property>

<!--最大空闲时é—?/font>,60¿U’内未ä‹É用则˜qžæŽ¥è¢«ä¸¢å¼ƒã€‚è‹¥ä¸?/font>0则永不丢弃ã€?/font>Default: 0 -->
<property name="maxIdleTime">60</property>

<!--˜qžæŽ¥æ± ä¸­ä¿ç•™çš„æœ€å¤§è¿žæŽ¥æ•°ã€?/font>Default: 15 -->
<property name="maxPoolSize">15</property>

<!--JDBC的标准参敎ͼŒç”¨ä»¥æŽ§åˆ¶æ•°æ®æºå†…加蝲çš?/font>PreparedStatements数量。但ç”׃ºŽé¢„缓存的statements
属于单个connection而不是整个连接池。所以设¾|®è¿™ä¸ªå‚数需要考虑到多斚w¢çš„å› ç´ ã€?/font>
如果maxStatementsä¸?/font>maxStatementsPerConnectionå‡äØ“0åQŒåˆ™¾~“存被关闭ã€?/font>Default: 0-->
<property name="maxStatements">100</property>

<!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓�/font>statements数�/font>Default: 0 -->
<property name="maxStatementsPerConnection"></property>

<!--c3p0是异步操作的åQŒç¼“慢的JDBC操作通过帮助˜q›ç¨‹å®Œæˆã€‚扩展这些操作可以有效的提升性能
通过多线½E‹å®žçŽ°å¤šä¸ªæ“ä½œåŒæ—¶è¢«æ‰§è¡Œã€?/font>Default: 3-->
<property name="numHelperThreads">3</property>

<!--当用戯‚°ƒç”?/font>getConnection()æ—¶ä‹Érootç”¨æˆ·æˆäØ“åŽ»èŽ·å–è¿žæŽ¥çš„ç”¨æˆ·ã€‚ä¸»è¦ç”¨äºŽè¿žæŽ¥æ± ˜qžæŽ¥é?/font>c3p0
的数据源时�/font>Default: null-->
<property name="overrideDefaultUser">root</property>

<!--�/font>overrideDefaultUser参数对应使用的一个参数�/font>Default: null-->
<property name="overrideDefaultPassword">password</property>

<!--密码�/font>Default: null-->
<property name="password"></property>

<!--定义所有连接测试都执行的测试语句。在使用˜qžæŽ¥‹¹‹è¯•的情况下˜q™ä¸ªä¸€æ˜¾è‘—提高‹¹‹è¯•速度。注意:
‹¹‹è¯•的表必须在初始数据源的时候就存在ã€?/font>Default: null-->
<property name="preferredTestQuery">select id from test where id=1</property>

<!--用户修改¾pȝ»Ÿé…ç½®å‚数执行前最多等å¾?/font>300¿U’ã€?/font>Default: 300 -->
<property name="propertyCycle">300</property>

<!--因性能消耗大请只在需要的时候ä‹É用它。如果设ä¸?/font>true那么在每ä¸?/font>connection提交çš?/font>
时候都ž®†æ ¡éªŒå…¶æœ‰æ•ˆæ€§ã€‚徏议ä‹Éç”?/font>idleConnectionTestPeriodæˆ?/font>automaticTestTable
½{‰æ–¹æ³•来提升˜qžæŽ¥‹¹‹è¯•的性能ã€?/font>Default: false -->
<property name="testConnectionOnCheckout">false</property>

<!--å¦‚æžœè®¾äØ“true那么在取得连接的同时ž®†æ ¡éªŒè¿žæŽ¥çš„æœ‰æ•ˆæ€§ã€?/font>Default: false -->
<property name="testConnectionOnCheckin">true</property>

<!--用户名�/font>Default: null-->
<property name="user">root</property>

<!--早期çš?/font>c3p0版本å¯?/font>JDBC接口采用动态反ž®„代理。在早期版本用途广泛的情况下这个参æ•?/font>
允许用户恢复到动态反ž®„代理以解决不稳定的故障。最新的非反ž®„ä»£ç†æ›´å¿«åÆˆä¸”å·²¾lå¼€å§?/font>
òq¿æ³›çš„被使用åQŒæ‰€ä»¥è¿™ä¸ªå‚数未必有用。现在原先的动态反ž®„与新的非反ž®„代理同时受åˆ?/font>
支持åQŒä½†ä»ŠåŽå¯èƒ½çš„版本可能不支持动态反ž®„代理ã€?/font>Default: false-->
<property name="usesTraditionalReflectiveProxies">false</property>

<property name="automaticTestTable">con_test</property>
    <property name="checkoutTimeout">30000</property>
    <property name="idleConnectionTestPeriod">30</property>
    <property name="initialPoolSize">10</property>
    <property name="maxIdleTime">30</property>
    <property name="maxPoolSize">25</property>
    <property name="minPoolSize">10</property>
    <property name="maxStatements">0</property>
    <user-overrides user="swaldman">
    </user-overrides>
</default-config>
<named-config name="dumbTestConfig">
    <property name="maxStatements">200</property>
    <user-overrides user="poop">
      <property name="maxStatements">300</property>
    </user-overrides>
   </named-config>
</c3p0-config>

Ø ä¸Šè¿°ç‰ÒŽ€§çš„可设¾|®æ€§å·²åœ¨ä»£ç ä¸­éªŒè¯åQŒå…·ä½“性能是否能实现有待实际验è¯?/strong>

Ø ä»Žé…¾|®é¡¹çš„内å®ÒŽ¥çœ‹ï¼ŒC3P0å’?font face="Times New Roman">DBCP都有比较详细的有兌™¿žæŽ¥æ£€‹¹‹ä¿è¯çš„配置åQŒæˆ‘们可以看åˆ?strong>C3P0可以控制数据源内加蝲çš?font face="Times New Roman">PreparedStatements数量åQŒåƈ且可以设¾|®å¸®åŠ©çº¿½E‹çš„æ•°é‡æ¥æå?font face="Times New Roman">JDBC操作的速度åQ?strong>˜q™äº›æ˜?/strong>DBCP未提供的åQ›å¦å¤–从¾|‘络上的评ä­h来看åQ?strong>DBCP出现Bug的频率要大于C3P0åQŒä¸˜q‡è¿™ä¸€ç‚ÒŽœ‰å¾…于我们自己实际的检‹¹‹ã€?/strong>

3. Proxool

Ø Proxoolçš„ä‹É用和dbcp以及c3p0½Eæœ‰ä¸åŒåQŒæˆ‘ä»¬éœ€è¦åÆˆä¸”åªéœ€è¦åœ¨ä½¿ç”¨åŸºæœ¬çš?font face="Times New Roman">java.sql.DriverManager之前加蝲org.logicalcobwebs.proxool.ProxoolDriver驱动¾c?font face="Times New Roman">,òq¶ä¸”按照proxool定义çš?font face="Times New Roman">url格式 ["proxool." + alias + ":" + driverClass + ":" + driverUrl åQŒå…¶ä¸?font face="Times New Roman">aliasæ˜¯äØ“˜qžæŽ¥æ± è‡ªå®šä¹‰çš„别å?font face="Times New Roman">] 来获å¾?font face="Times New Roman">connectionåQ›å…·ä½“的可以参看proxool doc下的UserGuideåQŒæˆ–本文所附的½CÞZ¾‹ä»£ç ã€‚下面对˜qžæŽ¥æ± çš„ç‰ÒŽ€§é…¾|®ä½œè¯¦ç»†è¯´æ˜Ž [˜q™ä¸ªæ˜¯è‡ªå·Þq¿»è¯‘çš„åQŒä¸ä¸€å®šå‡†¼‹®ï¼Œæœ‰é—®é¢˜æ—¶è¯·å‚çœ?font face="Times New Roman">doc下的Properties ~]ã€?/p>

n fatal-sql-exception

以逗号隔开的异常列表,当设¾|®äº†æ­¤é¡¹ä¹‹åŽåQŒæ¯å½“出现SQLExceptionæ—‰™ƒ½ž®†ä¸Žåˆ—表中异帔R¡¹ä½œæ¯”较,如果匚w…åˆ™è®¤ä¸ºå‡ºçްfatal异常åQŒè¿™ž®†å¯¼è‡´connection被丢弃,òq¶ä¸”不论出现ä»ÖM½•情况该异常将被重抛一‹Æ¡ä»¥é€šçŸ¥ç”¨æˆ·å‘生的情å†üc€‚默认å€égØ“null

n fatal-sql-exception-wrapper-class

如果配置äº?font face="Times New Roman">fatal-sql-exceptionåQŒåˆ™é»˜è®¤çš„æ“ä½œæ˜¯ä¸? 弃引起SQLException的原因而只是抛出原始异常。ä‹É用fatal-sql-exception-wrapper-class˜q™ä¸ªç‰ÒŽ€§å¯ä»¥å°† SQLException包装到ç‘ô承SQLException或RunTimeExceptionçš„ä“Q何异常类里。Proxool提供了两个类供ä‹Éç”? FatalSQLExceptionå’ŒFatalRunTimeExceptionåQ›ä‹É用这两个¾cȝš„话就ž®†è¯¥é€‰é¡¹è®„¡½®ä¸? 'org.logicalcobwebs.proxool.FatalSQLException'或è€? 'org.logicalcobwebs.proxool.FatalRuntimeException'。默认å€égØ“null

n house-keeping-sleep-time

proxool自动侦察各个˜qžæŽ¥çŠ¶æ€çš„æ—‰™—´é—´éš”(毫秒),侦察到空闲的˜qžæŽ¥ž®±é©¬ä¸Šå›žæ”?font face="Times New Roman">,­‘…时的销毁,默认å€égØ“30¿U?/p>

n house-keeping-test-sql

如果侦察¾U¿ç¨‹å‘现闲置˜qžæŽ¥åQŒåˆ™ä¼šä‹É用这个SQL语句来对˜q™äº›˜qžæŽ¥˜q›è¡Œ‹‚€æŸ¥ï¼›˜q™é¡¹è®„¡½®çš„语句应该能够被很快的执行,例如查询当前旉™—´ [info.setProperty("proxool.house-keeping-test-sql", "select CURRENT_DATE");] 。如果不讄¡½®åˆ™è¯¥é€‰é¡¹è¢«å¿½ç•?/p>

n injectable-connection-interface�strong>injectable-statement-interface�/strong>injectable-prepared-statement-interface�/strong>injectable-callable-statement-interface

n jmx

å¦‚æžœæ­¤é¡¹è®¾äØ“trueåQŒåˆ™˜qžæŽ¥æ± å°†è¢«ä»¥åç§°"Proxool:type=Pool, name=<alias>"注册为JMS Serverçš„MBean。默认å€égØ“false

n jmx-agent-id

当且仅当jmxé€‰é¡¹è®¾äØ“trueæ—¶ä‹É用,ä¸ÞZ»¥é€—号分隔的连接持注册到的JMS代理名称列表åQ›å¦‚果不讄¡½®åˆ™æ‰€æœ‰æ³¨å†Œçš„JMX Server都将被ä‹Éç”?/p>

n maximum-active-time

¾U¿ç¨‹æœ€å¤§å­˜‹zÀL—¶é—ß_¼Œ­‘…过此时间的¾U¿ç¨‹ž®†è¢«å®ˆæŠ¤¾U¿ç¨‹kill掉,默认å€égØ“5分钟

n maximum-connection-count

到数据库的最大连接数åQŒè¶…˜q‡äº†˜q™ä¸ª˜qžæŽ¥åQŒå†æœ‰è¯·æ±‚æ—¶åQŒå°±æŽ’在队列中等候,最大的½{‰å¾…è¯äh±‚æ•°ç”±simultaneous-build-throttle军_®šåQ›é»˜è®¤å€égØ“15

n maximum-connection-lifetime

˜qžæŽ¥æœ€å¤§å­˜‹zÀL—¶é—ß_¼Œæ¯«ç§’为单位,默认å€égØ“4ž®æ—¶

n minimum-connection-count

不管是否被ä‹É用都保持开æ”?/em>的最ž®è¿žæŽ¥æ•°åQŒé»˜è®¤å€égØ“5

n overload-without-refusal-lifetime

用来判断˜qžæŽ¥æ± çŠ¶æ€ï¼Œå¦‚æžœåœ¨æ­¤é€‰é¡¹è®„¡½®æ—‰™—´å†…ï¼ˆæ¯«ç§’ä¸ºå•ä½ï¼‰æ‹’ç»äº†è¿žæŽ¥ï¼Œåˆ™è®¤ä¸ø™¿‡è´Ÿè²ã€‚默认å€égØ“60¿U?/p>

n prototype-count

最ž®‘保持的½Iºé—²˜qžæŽ¥æ•ŽÍ¼Œæ³¨æ„ä¸Žminimum-connection-count区分。默认å€égØ“0

n simultaneous-build-throttle

最大的½{‰å¾…è¯äh±‚敎ͼŒé»˜è®¤å€égØ“10

n test-before-use

å¦‚æžœè®¾äØ“true则connection在ä‹É用前ž®†ä»¥house-keeping-test-sql讄¡½®çš„语句测试,如果‹¹‹è¯•不通过则该connectionè¢«ä¸¢å¼ƒåÆˆä¼šé‡æ–°åˆ†é…ä¸€ä¸ªconnectionã€‚é»˜è®¤äØ“false

n test-after-use

å¦‚æžœè®¾äØ“true则connection在关闭(攑֛ž˜qžæŽ¥æ± ï¼‰å‰å°†ä»¥house-keeping-test-sql讄¡½®çš„语句测试,如果‹¹‹è¯•不通过connectionž®†è¢«ä¸¢å¼ƒã€‚默认å€égØ“false

Ø ä¸Žå…¶å®ƒè¿žæŽ¥æ± ç‰ÒŽ€§çš„讄¡½®æ–ÒŽ³•不同åQ?font face="Times New Roman">Proxool不提供相应的setæ–ÒŽ³•åQŒæ‰€æœ‰ç‰¹æ€§éƒ½è¦ä»¥è¯¸å¦‚info.setProperty("proxool.jmx", "false");方式讑֮š

Ø ä¸Šè¿°ç‰ÒŽ€§çš„可设¾|®æ€§å·²åœ¨ä»£ç ä¸­éªŒè¯åQŒå…·ä½“性能是否能实现有待实际验è¯?/strong>



]]>
  • dataSource: 要连接的 datasource (通常我们不会定义åœ? server.xml)
  • defaultAutoCommit: 对于事务是否 autoCommit, 默认å€égØ“ true
  • defaultReadOnly: 对于数据库是否只能读å? 默认å€égØ“ false
  • driverClassName:˜qžæŽ¥æ•°æ®åº“所用的 JDBC Driver Class,
  • maxActive: 可以从对象池中取出的对象最大个敎ͼŒä¸?font face="Times New Roman">0则表½Cºæ²¡æœ‰é™åˆÓž¼Œé»˜è®¤ä¸?font face="Times New Roman">8
  • maxIdle: 最大等待连接中的数é‡?è®?0 为没有限åˆ? åQˆå¯¹è±¡æ± ä¸­å¯¹è±¡æœ€å¤§ä¸ªæ•ŽÍ¼‰
  • minIdleåQšå¯¹è±¡æ± ä¸­å¯¹è±¡æœ€ž®ä¸ªæ•?/li>
  • maxWait: 最大等待秒æ•? 单位ä¸?ms, ­‘…过旉™—´ä¼šä¸Ÿå‡ºé”™è¯¯ä¿¡æ?/li>
  • password: 登陆数据库所用的密码
  • url: ˜qžæŽ¥æ•°æ®åº“çš„ URL
  • username: 登陆数据库所用的帐号
  • validationQuery: 验证˜qžæŽ¥æ˜¯å¦æˆåŠŸ, SQL SELECT 指ä×o臛_°‘要返回一è¡?/li>
  • removeAbandoned: 是否自我中断, 默认æ˜?false
  • removeAbandonedTimeout: 几秒后会自我中断, removeAbandoned å¿…é¡»ä¸?true
  • logAbandoned: 是否记录中断事äšg, 默认ä¸?false
  • minEvictableIdleTimeMillisåQšå¤§äº?font face="Times New Roman">0 åQŒè¿›è¡Œè¿žæŽ¥ç©ºé—²æ—¶é—´åˆ¤æ–­ï¼Œæˆ–䨓0åQŒå¯¹½Iºé—²çš„连接不˜q›è¡ŒéªŒè¯åQ›é»˜è®?font face="Times New Roman">30分钟
  • timeBetweenEvictionRunsMillisåQšå¤±æ•ˆæ£€æŸ¥çº¿½E‹è¿è¡Œæ—¶é—´é—´éš”,如果ž®äºŽ½{‰äºŽ0åQŒä¸ä¼šå¯åŠ¨æ£€æŸ¥çº¿½E‹ï¼Œé»˜è®¤-1
  • testOnBorrowåQšå–得对象时是否˜q›è¡ŒéªŒè¯åQŒæ£€æŸ¥å¯¹è±¡æ˜¯å¦æœ‰æ•ˆï¼Œé»˜è®¤ä¸?font face="Times New Roman">false
  • testOnReturnåQšè¿”回对象时是否˜q›è¡ŒéªŒè¯åQŒæ£€æŸ¥å¯¹è±¡æ˜¯å¦æœ‰æ•ˆï¼Œé»˜è®¤ä¸?font face="Times New Roman">false
  • testWhileIdleåQšç©ºé—²æ—¶æ˜¯å¦˜q›è¡ŒéªŒè¯åQŒæ£€æŸ¥å¯¹è±¡æ˜¯å¦æœ‰æ•ˆï¼Œé»˜è®¤ä¸?font face="Times New Roman">false
Tomcat数据源连接经éª?/title><link>http://www.aygfsteel.com/czmchen/archive/2009/11/10/301853.html</link><dc:creator>陈周æ•?/dc:creator><author>陈周æ•?/author><pubDate>Tue, 10 Nov 2009 08:22:00 GMT</pubDate><guid>http://www.aygfsteel.com/czmchen/archive/2009/11/10/301853.html</guid><wfw:comment>http://www.aygfsteel.com/czmchen/comments/301853.html</wfw:comment><comments>http://www.aygfsteel.com/czmchen/archive/2009/11/10/301853.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/czmchen/comments/commentRss/301853.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/czmchen/services/trackbacks/301853.html</trackback:ping><description><![CDATA[Tomcat是一个小巧玲珑的好物åQŒå‘µå‘üc€‚一般开发少不了它ã€?br /> Tomcat现在支持很多技术,下面我把我的TOMCAT上配¾|®çš„æ•°æ®æºç»éªŒå’Œå¤§å®¶åˆ†äín<br /> <br /> 配置前的准备工作åQšå…ˆž®†ä½ çš„连接数据库的JAR COPY到服务器的LIBæ–‡äšg夹下åQŒä¾›æœåŠ¡å™¨è°ƒç”¨ï¼ˆå¦‚çŽ°åœ¨ç”¨çš„æ˜¯TOMCATåQŒé‚£ž®±å°†è¯¥JAR COPY到TOMCAT下的LIBæ–‡äšg夹)<br /> <br /> 打开™å¹ç›®çš„META-INFæ–‡äšg夹下的context.xml的文ä»Óž¼ˆæ²¡æœ‰çš„æ–°å»ÞZ¸€ä¸ªcontext.xmlæ–‡äšgåQ?br /> 修改其中的配¾|®ï¼Œè¯¦ç»†çš„配¾|®ä¿¡æ¯ä»¥ä¸‹ï¼š<br /> <br /> <?xml version="1.0" encoding="UTF-8"?><br /> <Context path="/TomcatDataSources" docBase="TomcatDataSources"<br />     debug="5" reloadable="true" crossContext="true"><br />         <Resource name="jdbc/czmds" auth="Container"<br />         type="javax.sql.DataSource" maxActive="100" maxIdle="30"<br />         maxWait="10000" username="root" password=""<br />         driverClassName="com.mysql.jdbc.Driver"<br />         url="jdbc:mysql://localhost/czm?characterEncoding=utf-8"/>   <br /> </Context><br /> <br /> 说明åQšcontext中的属性pathä¸ÞZ½ çš„项目的上下文èµ\å¾?br />       Resource中的属性name䏸™¯¥æ•°æ®æºçš„别名åQŒè¿™ä¸ªè‡ªå·±å–œ‹Æ¢å®šä¹?br /> <br /> <br /> <br /> 然后在web.xml下加上下面的配置<br /> <resource-ref><br />         <description>DB Connection</description><br />         <res-ref-name>jdbc/czmds</res-ref-name><br />         <res-type>javax.sql.DataSource</res-type><br />         <res-auth>Container</res-auth><br /> </resource-ref><br /> <br /> 说明åQšres-ref-nameä¸ÞZ½ çš„æ•°æ®æºè®‘Ö®šçš„别å?br /> <br /> 最后一步:‹¹‹è¯•˜qžæŽ¥æ˜¯å¦æˆåŠŸåQŒè®°å¾—在JSP™åµé¢æˆ–Servlet上测è¯?br /> <br /> 提示åQšæ•°æ®æºèŽ·å–˜qžæŽ¥çš„代码以下:<br /> javax.naming.Context ctx = new javax.naming.InitialContext();<br /> javax.sql.DataSource ds = (javax.sql.DataSource) ctx<br />                     .lookup("java:/comp/env/jdbc/czmds");<br /> java.sql.Connection conn = ds.getConnection();   <br /> 说明åQšlookup是查找数据源的别名,˜q™ä¸ªž®Þq›´æŽ¥åœ¨java:/comp/env/后加别名åQŒä»¥ä¸?br /> <br /> <br /> 说到最后,一定要记得兌™¿žæŽ?br /> <br /> <img src ="http://www.aygfsteel.com/czmchen/aggbug/301853.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/czmchen/" target="_blank">陈周æ•?/a> 2009-11-10 16:22 <a href="http://www.aygfsteel.com/czmchen/archive/2009/11/10/301853.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">¸Á¶ûÏØ</a>| <a href="http://" target="_blank">ÂÞ¶¨ÊÐ</a>| <a href="http://" target="_blank">ÕѾõÏØ</a>| <a href="http://" target="_blank">¿ªÔ¶ÊÐ</a>| <a href="http://" target="_blank">»ÔÏØÊÐ</a>| <a href="http://" target="_blank">×óÈ¨ÏØ</a>| <a href="http://" target="_blank">°²¿µÊÐ</a>| <a href="http://" target="_blank">ÁúÓÎÏØ</a>| <a href="http://" target="_blank">ÀóÆÖÏØ</a>| <a href="http://" target="_blank">¹±¸ÂÏØ</a>| <a href="http://" target="_blank">ºâË®ÊÐ</a>| <a href="http://" target="_blank">°²ÒåÏØ</a>| <a href="http://" target="_blank">¶¼À¼ÏØ</a>| <a href="http://" target="_blank">ÂíÁúÏØ</a>| <a href="http://" target="_blank">ÇíÖÐ</a>| <a href="http://" target="_blank">Õò°ÍÏØ</a>| <a href="http://" target="_blank">¶Ø»ÍÊÐ</a>| <a href="http://" target="_blank">µÂÁî¹þÊÐ</a>| <a href="http://" target="_blank">¿ª»¯ÏØ</a>| <a href="http://" target="_blank">ÓÀ¼ÃÊÐ</a>| <a href="http://" target="_blank">Ç­Î÷ÏØ</a>| <a href="http://" target="_blank">ÅͰ²ÏØ</a>| <a href="http://" target="_blank">¡µÂÏØ</a>| <a href="http://" target="_blank">µ¤Õ¯ÏØ</a>| <a href="http://" target="_blank">»ôÉ½ÏØ</a>| <a href="http://" target="_blank">ÓÀÊÙÏØ</a>| <a href="http://" target="_blank">Í­É½ÏØ</a>| <a href="http://" target="_blank">¤ÄÏÊÐ</a>| <a href="http://" target="_blank">´ëÇÚÏØ</a>| <a href="http://" target="_blank">ÐìË®ÏØ</a>| <a href="http://" target="_blank">Í­ÁºÏØ</a>| <a href="http://" target="_blank">ÅæÏØ</a>| <a href="http://" target="_blank">ÏÌÄþÊÐ</a>| <a href="http://" target="_blank">¶¨ÏåÏØ</a>| <a href="http://" target="_blank">ÀûÐÁÏØ</a>| <a href="http://" target="_blank">ÕòÐÛÏØ</a>| <a href="http://" target="_blank">µ¤ÀâÏØ</a>| <a href="http://" target="_blank">ʯ¾°É½Çø</a>| <a href="http://" target="_blank">Ëç·ÒºÓÊÐ</a>| <a href="http://" target="_blank">ÄÏÐÛÊÐ</a>| <a href="http://" target="_blank">ÉÛÎäÊÐ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>