﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-czmchen</title><link>http://www.blogjava.net/czmchen/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 21:38:39 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 21:38:39 GMT</pubDate><ttl>60</ttl><item><title>让Tomcat5.5支持el表达式</title><link>http://www.blogjava.net/czmchen/archive/2010/04/19/318752.html</link><dc:creator>陈周敏</dc:creator><author>陈周敏</author><pubDate>Mon, 19 Apr 2010 09:33:00 GMT</pubDate><guid>http://www.blogjava.net/czmchen/archive/2010/04/19/318752.html</guid><wfw:comment>http://www.blogjava.net/czmchen/comments/318752.html</wfw:comment><comments>http://www.blogjava.net/czmchen/archive/2010/04/19/318752.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/czmchen/comments/commentRss/318752.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/czmchen/services/trackbacks/318752.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #000000;">web.xml加入<br />
&lt;taglib&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;taglib-uri&gt;/WEB-INF/c.tld&lt;/taglib-uri&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;taglib-location&gt;/WEB-INF/c.tld&lt;/taglib-location&gt;<br />
&lt;/taglib&gt;<br />
<br />
c.tld一般在jstl JAR里面可以找到！<br />
<br />
在JSP中加入文件头<br />
&lt;%</span><span style="color: #000000;">@&nbsp;taglib&nbsp;&nbsp;uri</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">/WEB-INF/c.tld</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;prefix</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">c</span><span style="color: #000000;">"</span><span style="color: #000000;">%&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;%</span><span style="color: #000000;">@&nbsp;page&nbsp;isELIgnored</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">false</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">%&gt;</span><span style="color: #000000;"><br />
<br />
接着就可以使用EL表达式了<br />
</span></div>
<img src ="http://www.blogjava.net/czmchen/aggbug/318752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/czmchen/" target="_blank">陈周敏</a> 2010-04-19 17:33 <a href="http://www.blogjava.net/czmchen/archive/2010/04/19/318752.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>查找表里重复的数据</title><link>http://www.blogjava.net/czmchen/archive/2010/04/15/318433.html</link><dc:creator>陈周敏</dc:creator><author>陈周敏</author><pubDate>Thu, 15 Apr 2010 08:23:00 GMT</pubDate><guid>http://www.blogjava.net/czmchen/archive/2010/04/15/318433.html</guid><wfw:comment>http://www.blogjava.net/czmchen/comments/318433.html</wfw:comment><comments>http://www.blogjava.net/czmchen/archive/2010/04/15/318433.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/czmchen/comments/commentRss/318433.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/czmchen/services/trackbacks/318433.html</trackback:ping><description><![CDATA[SQL语句：<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;tableName&nbsp;</span><span style="color: #0000ff;">where</span><span style="color: #000000;">&nbsp;tableName.id&nbsp;</span><span style="color: #808080;">in</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff00ff;">max</span><span style="color: #000000;">(tableName.id)&nbsp;</span><span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;tableName&nbsp;</span><span style="color: #0000ff;">group</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">by</span><span style="color: #000000;">&nbsp;tableName.name&nbsp;</span><span style="color: #0000ff;">having</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff00ff;">count</span><span style="color: #000000;">(tableName.id)&nbsp;</span><span style="color: #808080;">&gt;</span><span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">&nbsp;)</span></div>
<br />
<br />
<img src ="http://www.blogjava.net/czmchen/aggbug/318433.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/czmchen/" target="_blank">陈周敏</a> 2010-04-15 16:23 <a href="http://www.blogjava.net/czmchen/archive/2010/04/15/318433.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>select的使用</title><link>http://www.blogjava.net/czmchen/archive/2010/04/06/317574.html</link><dc:creator>陈周敏</dc:creator><author>陈周敏</author><pubDate>Tue, 06 Apr 2010 09:52:00 GMT</pubDate><guid>http://www.blogjava.net/czmchen/archive/2010/04/06/317574.html</guid><wfw:comment>http://www.blogjava.net/czmchen/comments/317574.html</wfw:comment><comments>http://www.blogjava.net/czmchen/archive/2010/04/06/317574.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/czmchen/comments/commentRss/317574.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/czmchen/services/trackbacks/317574.html</trackback:ping><description><![CDATA[标记下，总结下经验<br />
<br />
<br />
select清空option<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 128);">1</span>&nbsp;<span style="color: rgb(0, 0, 0);">document.getElementById(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">type</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">).options.length&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;</span></div>
select创建option<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 128);">1</span>&nbsp;<span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">2</span>&nbsp;<span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">&nbsp;addOption(objSelect,optionVal,optionText)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: rgb(0, 128, 128);">3</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;_o&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;document.createElement(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">option</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">4</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_o.text&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;optionText;<br />
</span><span style="color: rgb(0, 128, 128);">5</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_o.value&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;optionVal;<br />
</span><span style="color: rgb(0, 128, 128);">6</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objSelect.add(_o);<br />
</span><span style="color: rgb(0, 128, 128);">7</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;}<br />
</span><span style="color: rgb(0, 128, 128);">8</span>&nbsp;</div>
<br />
<br />
<img src ="http://www.blogjava.net/czmchen/aggbug/317574.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/czmchen/" target="_blank">陈周敏</a> 2010-04-06 17:52 <a href="http://www.blogjava.net/czmchen/archive/2010/04/06/317574.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>让xfire的ws-security跑起来</title><link>http://www.blogjava.net/czmchen/archive/2010/01/15/309638.html</link><dc:creator>陈周敏</dc:creator><author>陈周敏</author><pubDate>Fri, 15 Jan 2010 01:51:00 GMT</pubDate><guid>http://www.blogjava.net/czmchen/archive/2010/01/15/309638.html</guid><wfw:comment>http://www.blogjava.net/czmchen/comments/309638.html</wfw:comment><comments>http://www.blogjava.net/czmchen/archive/2010/01/15/309638.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/czmchen/comments/commentRss/309638.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/czmchen/services/trackbacks/309638.html</trackback:ping><description><![CDATA[由于开发的需要，要用到xfire，对于开发我比较关心的是安全和速度！所以就找了xfire中的ws-security，利用它的安全证书和key，安全足够了<br />
<br />
先到网上下载最新版的xfire,一般都去官方网站下载，了解下详情！其官网为<a href="http://xfire.codehaus.org">http://xfire.codehaus.org</a><br />
现在最新版为1.2.6,把<a href="http://repository.codehaus.org/org/codehaus/xfire/xfire-all/1.2.6/xfire-all-1.2.6.jar" class="external-link">xfire-all-1.2.6.jar</a> 和 <a href="http://repository.codehaus.org/org/codehaus/xfire/xfire-distribution/1.2.6/xfire-distribution-1.2.6.zip" class="external-link"> xfire-distribution-1.2.6.zip</a>下载<br />
<br />
准备前，先看看ws-securitye的步骤，在<a href="http://xfire.codehaus.org/WS-Security">http://xfire.codehaus.org/WS-Security</a>里面可以看到，它提示我们installed Unlimited Strength Jurisdiction Policy Files，我就在<strong><a href="http://java.sun.com/j2se/1.5.0/download.jsp">http://java.sun.com/j2se/1.5.0/download.jsp</a></strong>里面下载两个包，因为我安装的是jdk1.6最新版，在<strong><a href="http://java.sun.com/j2se/1.5.0/download.jsp">http://java.sun.com/j2se/1.5.0/download.jsp</a></strong>最下面的Other Downloads的Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 5.0，点击下载，下载下来后，按照里面的步骤，把这两个jar放到<br />
Java/jre6/lib/security里面，修改java.security，把<br />
security.provider.6=com.sun.security.sasl.Provider改为<br />
security.provider.6=org.bouncycastle.jce.provider.BouncyCastleProvider<br />
其效果为<br />
security.provider.1=sun.security.provider.Sun<br />
security.provider.2=sun.security.rsa.SunRsaSign<br />
security.provider.3=com.sun.net.ssl.internal.ssl.Provider<br />
security.provider.4=com.sun.crypto.provider.SunJCE<br />
security.provider.5=sun.security.jgss.SunProvider<br />
security.provider.6=org.bouncycastle.jce.provider.BouncyCastleProvider<br />
#security.provider.6=com.sun.security.sasl.Provider<br />
security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI<br />
security.provider.8=sun.security.smartcardio.SunPCSC<br />
security.provider.9=sun.security.mscapi.SunMSCAPI<br />
<br />
<br />
<br />
准备工作做好后，解压xfire-distribution-1.2.6.zip，然后你会看到xfire-1.2.6这个文件夹，进去，你会看到有个examples文件夹，再进去，你就发现很多demo啦，在这里就找到了ws-security的demo<br />
<br />
启动Myeclipse，看到里面的.classpath和.project文件，这个是eclipse的项目!用myeclipse打开，你发现都不正确，这些错误我就不理！<br />
<br />
新建一个Web Progect项目,项目名随你命名。设置下该项目，点击该项目，右键，properties,找到Java Compiler,修改项目的jdk为1.5以上（里面用到的有注入）！解压xfire-distribution-1.2.6.zip，进入ws-security文件夹下，进入src下，再进入main的文件夹，把里面的文件全部都拷贝到你新建的项目的src下。点中该项目，右键，新建Source Folder,命名为test。后退，找到test的文件夹，把里面的文件全部拷贝到项目test的文件夹下。后退，再把web-inf里面的web.xml拷贝到项目里面，替换。最后在项目中加入jar,在xfire-1.2.6根文件夹下面有个lib,把这些lib全部放到项目的web-inf下的lib文件夹中，把xfire-all-1.2.6.jar也加入到项目中。整个项目的结构为：<br />
<img src="http://www.blogjava.net/images/blogjava_net/czmchen/22.jpg" alt="" border="0" /><br />
<br />
<br />
生成key：在ws-security根目录下有个keys的文件夹，双击进去，运行generateServerKey.bat，将默认的key生成。里面的参数让你们研究，很好用（上面我跳过不安装j2se1.4就是因为有这个）！生成后，将serverKey.rsa和serverStore.jks扔到META-INF\xfire下，有个相同的那就替换，clientStore.jks同理<br />
<br />
修改服务器参数：在org.codehaus.xfire.client下的BookClient.java,把变量SERVICE_NAMESPACE的值改为<br />
http://localhost:端口号/上下文路径/BookService,下面的都同理。要修改到的文件META-INF\xfire下的services.xml。记得把http://xfire.codehaus.org修改为http://localhost:端口号/上下文路径/BookService。因为http://xfire.codehaus.org不开放那些接口<br />
<br />
<br />
修改完毕后，把项目部署到tomcat,启动服务器后，org.codehaus.xfire.client下运行BookClientEnc.java<br />
。运行后会报下面的错误<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">Running&nbsp;client&nbsp;:&nbsp;Encryption&nbsp;Client<br />
Looking&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;isbn&nbsp;:&nbsp;</span><span style="color: #000000;">0123456789</span><span style="color: #000000;">&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" />.Exception&nbsp;in&nbsp;thread&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">main</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;java.lang.NoClassDefFoundError:&nbsp;org</span><span style="color: #000000;">/</span><span style="color: #000000;">apache</span><span style="color: #000000;">/</span><span style="color: #000000;">xml</span><span style="color: #000000;">/</span><span style="color: #000000;">utils</span><span style="color: #000000;">/</span><span style="color: #000000;">URI$MalformedURIException<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.ws.security.message.WSSecEncrypt.doEncryption(WSSecEncrypt.java:</span><span style="color: #000000;">407</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.ws.security.message.WSSecEncrypt.doEncryption(WSSecEncrypt.java:</span><span style="color: #000000;">399</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.ws.security.message.WSSecEncrypt.encryptForInternalRef(WSSecEncrypt.java:</span><span style="color: #000000;">306</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.ws.security.message.WSSecEncrypt.build(WSSecEncrypt.java:</span><span style="color: #000000;">264</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.ws.security.action.EncryptionAction.execute(EncryptionAction.java:</span><span style="color: #000000;">62</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.ws.security.handler.WSHandler.doSenderAction(WSHandler.java:</span><span style="color: #000000;">192</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.codehaus.xfire.security.wss4j.WSS4JOutHandler.invoke(WSS4JOutHandler.java:</span><span style="color: #000000;">158</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:</span><span style="color: #000000;">131</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.codehaus.xfire.client.Invocation.invoke(Invocation.java:</span><span style="color: #000000;">79</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.codehaus.xfire.client.Invocation.invoke(Invocation.java:</span><span style="color: #000000;">114</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.codehaus.xfire.client.Client.invoke(Client.java:</span><span style="color: #000000;">336</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:</span><span style="color: #000000;">77</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:</span><span style="color: #000000;">57</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;$Proxy0.findBook(Unknown&nbsp;Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.codehaus.xfire.client.BookClient.executeClient(BookClient.java:</span><span style="color: #000000;">63</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.codehaus.xfire.client.BookClientEnc.main(BookClientEnc.java:</span><span style="color: #000000;">23</span><span style="color: #000000;">)<br />
Caused&nbsp;by:&nbsp;java.lang.ClassNotFoundException:&nbsp;org.apache.xml.utils.URI$MalformedURIException<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.net.URLClassLoader$</span><span style="color: #000000;">1</span><span style="color: #000000;">.run(Unknown&nbsp;Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.security.AccessController.doPrivileged(Native&nbsp;Method)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.net.URLClassLoader.findClass(Unknown&nbsp;Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.lang.ClassLoader.loadClass(Unknown&nbsp;Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;sun.misc.Launcher$AppClassLoader.loadClass(Unknown&nbsp;Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.lang.ClassLoader.loadClass(Unknown&nbsp;Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.lang.ClassLoader.loadClassInternal(Unknown&nbsp;Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" />&nbsp;</span><span style="color: #000000;">16</span><span style="color: #000000;">&nbsp;more<br />
</span></div>
<br />
这是因为你还没把xalan.jar加入去，到<a href="http://www.apache.org/dyn/closer.cgi/xml/xalan-j">http://www.apache.org/dyn/closer.cgi/xml/xalan-j</a> 下载最新版<br />
，现在最新去到2_7_1，找到xalan-j_2_7_1-bin.zip，把其下载后，添加xalan.jar到项目<br />
<br />
再运行，如果出现下面的结果，那就正常啦<br />
Running client : Encryption Client<br />
Looking for isbn : 0123456789 ....Using XFire : Dan Diephouse<br />
<br />
<br />
我的做好的示例文件在<a href="http://www.blogjava.net/Files/czmchen/ws-security.rar">http://www.blogjava.net/Files/czmchen/ws-security.rar</a>可以下载，下载后要做的事情就是把jar按上面的方法加进去，因为jar太大了，上传不上！还有要改下tomcat的端口为8001，再部署项目<br />
<br />
<a href="http://repository.codehaus.org/org/codehaus/xfire/xfire-distribution/1.2.6/xfire-distribution-1.2.6.zip" class="external-link"></a>
<img src ="http://www.blogjava.net/czmchen/aggbug/309638.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/czmchen/" target="_blank">陈周敏</a> 2010-01-15 09:51 <a href="http://www.blogjava.net/czmchen/archive/2010/01/15/309638.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>weblogic connection pool设置</title><link>http://www.blogjava.net/czmchen/archive/2010/01/08/308750.html</link><dc:creator>陈周敏</dc:creator><author>陈周敏</author><pubDate>Fri, 08 Jan 2010 09:22:00 GMT</pubDate><guid>http://www.blogjava.net/czmchen/archive/2010/01/08/308750.html</guid><wfw:comment>http://www.blogjava.net/czmchen/comments/308750.html</wfw:comment><comments>http://www.blogjava.net/czmchen/archive/2010/01/08/308750.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/czmchen/comments/commentRss/308750.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/czmchen/services/trackbacks/308750.html</trackback:ping><description><![CDATA[进入weblogic后台<span><font color="#000000">，</font>配置数据库连接池</span>。因为我的项目数据库是ORACLE，那就以Oracle的配置作为示例：<br />
<br />
我的示例weblogic是8.x，其他版本都同理，找到参数后即可<br />
<br />
进入后台后，单击左边的<span>mydomain—&gt;Services—&gt;JDBC—<span>&gt;Connection Pools </span></span><br />
新建我就不说了，在我的文章里面有weblogic的数据源连接create<br />
<br />
9.x的要解锁，那就先解锁。点击你想设置的数据源的名称进去。进去后点击上面的菜单Connections<br />
<br />
看到参数设置了吧。<br />
<br />
<span id="wl_control_weblogic_management_configuration_JDBCConnectionPoolMBean_InitialCapacity_label" class="dialog-label">Initial Capacity</span><span class="dialog-label">:100&nbsp;&nbsp; （初始化容器的连接数）<br />
</span><span id="wl_control_weblogic_management_configuration_JDBCConnectionPoolMBean_MaxCapacity_label" class="dialog-label">Maximum Capacity</span><span class="dialog-label">:</span>1000&nbsp; （容器中最大的连接数1000，如果超过/还没到1000就会报超出最大连接的错误,原因你的Oracle安装数据库的时候其池没设置大小，现在你也可以设置。设置方法：找到Oracle的init.ora文件这个文件一般在oracle/admin/数据库SID/pfile里面。找到large_pool_size这一句，把这一句删除，那就不受限制了。注意：没受限制的情况下不要调这个参数太大了，35000就OK了，太大的时候数据库会承受不起）<br />
<span id="wl_control_weblogic_management_configuration_JDBCConnectionPoolMBean_CapacityIncrement_label" class="dialog-label">Capacity Increment</span><span class="dialog-label">:15&nbsp;&nbsp; (一次增加多少个connection)</span><br />
<span id="wl_control_weblogic_management_configuration_JDBCConnectionPoolMBean_StatementCacheSize_label" class="dialog-label">Statement Cache Size</span><span class="dialog-label">:</span><span id="result_box" class="short_text"><span style="background-color: #ffffff;" title="Statement Cache Size">50 (缓存大小</span></span>)<br />
<br />
按下下面的<span class="advancedtitle">Advanced Options "</span>Show",设置详细的配置<br />
下面是JNDI的自动回收设置，比较重要，调几个重要的参数，其他的默认<br />
<span id="wl_control_weblogic_management_configuration_JDBCConnectionPoolMBean_TestFrequencySeconds_label" class="dialog-label">Test Frequency</span><span class="dialog-label">:3600（测试</span><span id="result_box" class="short_text"><span style="background-color: #ffffff;" title="Frequency">频率，这个会消耗资源。这个看你的项目需要，一般代码写得比较好的可以设置长点时间</span></span><span class="dialog-label">）</span><br />
把下面三个都打上勾。通过测试，发现连接没关的就会被回收（详细说明可以看下面的参数说明）<br />
<script language="javascript">
var lock_wl_control_weblogic_management_configuration_JDBCConnectionPoolMBean_TestConnectionsOnReserve = false;
</script>
<span id="wl_control_weblogic_management_configuration_JDBCConnectionPoolMBean_TestConnectionsOnReserve_label" class="dialog-label">Test Reserved Connections<br />
</span><span id="wl_control_weblogic_management_configuration_JDBCConnectionPoolMBean_TestConnectionsOnCreate_label" class="dialog-label">Test Created Connections<br />
</span>
<script language="javascript">
var lock_wl_control_weblogic_management_configuration_JDBCConnectionPoolMBean_TestConnectionsOnRelease = false;
</script>
<span id="wl_control_weblogic_management_configuration_JDBCConnectionPoolMBean_TestConnectionsOnRelease_label" class="dialog-label">Test Released Connections</span><br />
<br />
<span id="wl_control_weblogic_management_configuration_JDBCConnectionPoolMBean_InactiveConnectionTimeoutSeconds_label" class="dialog-label">Inactive Connection Timeout</span><span class="dialog-label">:60（</span><span id="result_box" class="short_text"><span style="background-color: #ffffff;" title="Inactive Connection Timeout">无效连接超时</span></span><span class="dialog-label">！这个会在指定的时间内，回收无效连接）</span><br />
<br />
网上有些人说设置这些参数后一定的时间会出现java.lang.OutOfMemoryError的错误<br />
解决的方法就是调大JVM的内存，在启动时对jvm设置内存限度<br />
通过修改commom\bin\commEnv.cmd文件来增加内存分配<br />
修改的部分如下：<br />
:bea<br />
if "%PRODUCTION_MODE%" == "true" goto bea_prod_mode<br />
set JAVA_VM=-jrockit<br />
set MEM_ARGS=-Xms768m -Xmx1024m<br />
set JAVA_OPTIONS=%JAVA_OPTIONS% -Xverify:none<br />
goto continue<br />
:bea_prod_mode<br />
set JAVA_VM=-jrockit<br />
set MEM_ARGS=-Xms768m -Xmx1024m//这些看你内存定1G的就设置=-Xms256m -Xmx512m<br />
goto continue<br />
<br />
:sun<br />
if "%PRODUCTION_MODE%" == "true" goto sun_prod_mode<br />
set JAVA_VM=-client<br />
set MEM_ARGS=-Xms768m -Xmx1024m <span style="color: red;">-XX:MaxPermSize=256m</span><br />
set JAVA_OPTIONS=%JAVA_OPTIONS% -Xverify:none<br />
goto continue<br />
:sun_prod_mode<br />
set JAVA_VM=-server<br />
set MEM_ARGS=-Xms768m -Xmx1024m <span style="color: red;">-XX:MaxPermSize=256m</span>//这个就解决了java.lang.OutOfMemoryError的错误<br />
goto continue<br />
将这里的内存分配修改后见效。<br />
<a href="../../amigoxie/archive/2007/02/11/99330.html" target="_blank" class="l" onmousedown="return clk(0,'','','res','1','','0CAcQFjAA')"><em></em></a>
<p><span>连接属性参数说明：</span> </p>
&nbsp;
* Initial Capacity:创建连接池时所创建的数据库连接的数目。<br />
&nbsp; * Maximum Capacity: 连接池中连接的最大数目。<br />
&nbsp; * Capacity Increment: 连接池容量在最大容量限制范围内的增量。<br />
&nbsp; * LoginDelay: 在创建每个物理数据库连接之前要延迟的秒数。<br />
&nbsp; * Allow Shrinking: 将该项设置为true时，如果没有使用额外的连接，则允许连接池把容量减小到InitialCapacity。<br />
&nbsp; * Shrink Frequency: 在减小连接池容量之前要等待的秒数。如果将Shrink Frequency设置为true，那么也必须将Allow Shrinking设置为true。<br />
&nbsp; * Test Frequency: 数据库连接测试之间间隔的秒数。在每个Refresh Period时间间隔之后，如果设置了TestTableName，就会使用TestTableName测试未使用的数据库连接。<br />
&nbsp; * Test Reserved Connections: 如果选择了这个选项，服务器会在把连接提供给客户端之前对其进行测试。<br />
&nbsp; * Test Created Connections: 如果选择了这个选项，就会在创建一个JDBC连接之后和在把它添加到JDBC连接池中的可用连接列表之前，对该JDBC连接进行测试。<br />
&nbsp; * Test Released Connections: 如果选择了这个选项，服务器就会在把连接返回给连接池之前对其进行测试。<br />
&nbsp; * Test Table Name: 用于JDBC连接测试的数据库表名。如果指定了Test Frequency，并且选择了Test Reserved Connections、Test Created Connections或Test Released Connections，则Table Name是必需的<br />
<br />
<span>连接属性参数说明</span>来源于网上，大家从你项目角度设置<br />
最后别忘记点最下面的APPLY按钮<br />
<img src ="http://www.blogjava.net/czmchen/aggbug/308750.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/czmchen/" target="_blank">陈周敏</a> 2010-01-08 17:22 <a href="http://www.blogjava.net/czmchen/archive/2010/01/08/308750.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle关闭某个用户的连接</title><link>http://www.blogjava.net/czmchen/archive/2010/01/06/308378.html</link><dc:creator>陈周敏</dc:creator><author>陈周敏</author><pubDate>Wed, 06 Jan 2010 00:37:00 GMT</pubDate><guid>http://www.blogjava.net/czmchen/archive/2010/01/06/308378.html</guid><wfw:comment>http://www.blogjava.net/czmchen/comments/308378.html</wfw:comment><comments>http://www.blogjava.net/czmchen/archive/2010/01/06/308378.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/czmchen/comments/commentRss/308378.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/czmchen/services/trackbacks/308378.html</trackback:ping><description><![CDATA[最近开发用的Weblogic的JNDI数据源连接，可是JNDI没有自动回收连接的功能！<br />
项目不知道哪里代码写的时候没有关闭连接，造成有些连接是死连接<br />
这样很容易造成数据库崩溃或者没连接<br />
<br />
我的思路就是想把这个项目的用户都关闭，回收资源<br />
我的PL/SQL中运行命令<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;s.Sid,&nbsp;s.Serial#,p.spid,&nbsp;s.USERNAME,s.OSUser,<br />
s.Program&nbsp;&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;&nbsp;V$Process&nbsp;p,V$session&nbsp;s&nbsp;</span><span style="color: #0000ff">WHERE</span><span style="color: #000000">&nbsp;p.addr</span><span style="color: #808080">=</span><span style="color: #000000">s.paddr(</span><span style="color: #808080">+</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">ORDER</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">BY</span><span style="color: #000000">&nbsp;s.Sid</span></div>
<br />
有人用<br />
<p class="style27">alter system kill session '<span class="style24"><em><font color="#ff0000">sid,serial#</font></em></span>' ;这个命令来杀死，可是资源不立刻回收</p>
<p class="style27"><br />
</p>
运行下面的语句就可以回收资源<br />
查出连接用户后，在CMD中输入orakill 数据库名 SPID（EXP：orakill orcl XXX）<br />
<br />
<br />
<img src ="http://www.blogjava.net/czmchen/aggbug/308378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/czmchen/" target="_blank">陈周敏</a> 2010-01-06 08:37 <a href="http://www.blogjava.net/czmchen/archive/2010/01/06/308378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>html dom获取option的值</title><link>http://www.blogjava.net/czmchen/archive/2009/12/17/306303.html</link><dc:creator>陈周敏</dc:creator><author>陈周敏</author><pubDate>Thu, 17 Dec 2009 07:01:00 GMT</pubDate><guid>http://www.blogjava.net/czmchen/archive/2009/12/17/306303.html</guid><wfw:comment>http://www.blogjava.net/czmchen/comments/306303.html</wfw:comment><comments>http://www.blogjava.net/czmchen/archive/2009/12/17/306303.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/czmchen/comments/commentRss/306303.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/czmchen/services/trackbacks/306303.html</trackback:ping><description><![CDATA[记录dom的学习经验。下次忘记的时候直接来拿<br />
<br />
&lt;select id="typevalue" onChange="modifyType();"&gt;<br />
<br />
&lt;option value="1" id="0"&gt;11&lt;/option&gt;<br />
<br />
&lt;option value="2" id="1"&gt;22&lt;/option&gt;<br />
<br />
&lt;option value="3" id="2"&gt;33&lt;/option&gt;<br />
<br />
&lt;option value="4" id="3"&gt;44&lt;/option&gt;<br />
<br />
&lt;option value="5" id="4"&gt;55&lt;/option&gt;<br />
<br />
&lt;option value="6" id="5"&gt;66&lt;/option&gt;<br />
<br />
&lt;option value="7" id="10"&gt;77&lt;/option&gt;<br />
<br />
&lt;/select&gt;<br />
<br />
<br />
<br />
获取选中的option的text值<br />
var typevalue = document.getElementById("typevalue");<br />
var typevalueText = typevalue.options[typevalue.selectedIndex].text;<br />
<br />
获取选中的option的ID值<br />
var typevalue = document.getElementById("typevalue");<br />
var typevalueId = typevalue.options[typevalue.selectedIndex].id;<br />
<br />
<img src ="http://www.blogjava.net/czmchen/aggbug/306303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/czmchen/" target="_blank">陈周敏</a> 2009-12-17 15:01 <a href="http://www.blogjava.net/czmchen/archive/2009/12/17/306303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>三大连接池的参数说明</title><link>http://www.blogjava.net/czmchen/archive/2009/11/11/301919.html</link><dc:creator>陈周敏</dc:creator><author>陈周敏</author><pubDate>Wed, 11 Nov 2009 01:06:00 GMT</pubDate><guid>http://www.blogjava.net/czmchen/archive/2009/11/11/301919.html</guid><wfw:comment>http://www.blogjava.net/czmchen/comments/301919.html</wfw:comment><comments>http://www.blogjava.net/czmchen/archive/2009/11/11/301919.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/czmchen/comments/commentRss/301919.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/czmchen/services/trackbacks/301919.html</trackback:ping><description><![CDATA[<h2>1. Apache-DBCP</h2>
<p align="left">&#216; BasicDataSource 相关的参数说明</p>
<ul type="disc">
    <li><strong>dataSource:</strong> 要连接的 datasource (通常我们不会定义在
    server.xml)</li>
    <li><strong>defaultAutoCommit:</strong> 对于事务是否 autoCommit, 默认值为
    true</li>
    <li><strong>defaultReadOnly:</strong> 对于数据库是否只能读取, 默认值为 false</li>
    <li><strong>driverClassName:</strong>连接数据库所用的 JDBC Driver
    Class,</li>
    <li><strong>maxActive:</strong> 可以从对象池中取出的对象最大个数，为<font face="Times New Roman">0</font>则表示没有限制，默认为<font face="Times New Roman">8</font></li>
    <li><strong>maxIdle:</strong> 最大等待连接中的数量,设 0 为没有限制
    （对象池中对象最大个数）</li>
    <li><strong>minIdle</strong>：对象池中对象最小个数</li>
    <li><strong>maxWait:</strong> 最大等待秒数, 单位为 ms, 超过时间会丟出错误信息</li>
    <li><strong>password:</strong> 登陆数据库所用的密码</li>
    <li><strong>url:</strong> 连接数据库的 URL</li>
    <li><strong>username:</strong> 登陆数据库所用的帐号</li>
    <li><strong>validationQuery:</strong> 验证连接是否成功, SQL SELECT
    指令至少要返回一行</li>
    <li><strong>removeAbandoned:</strong> 是否自我中断, 默认是 false</li>
    <li><strong>removeAbandonedTimeout:</strong> 几秒后会自我中断,
    removeAbandoned 必须为 true</li>
    <li><strong>logAbandoned:</strong> 是否记录中断事件, 默认为 false</li>
    <li><strong>minEvictableIdleTimeMillis</strong>：大于<font face="Times New Roman">0</font> ，进行连接空闲时间判断，或为<font face="Times New Roman">0</font>，对空闲的连接不进行验证；默认<font face="Times New Roman">30</font>分钟</li>
    <li>
    <strong>timeBetweenEvictionRunsMillis</strong>：失效检查线程运行时间间隔，如果小于等于<font face="Times New Roman">0</font>，不会启动检查线程，默认<font face="Times New Roman">-1</font></li>
    <li>
    <strong>testOnBorrow</strong>：取得对象时是否进行验证，检查对象是否有效，默认为<font face="Times New Roman">false</font></li>
    <li>
    <strong>testOnReturn</strong>：返回对象时是否进行验证，检查对象是否有效，默认为<font face="Times New Roman">false</font></li>
    <li>
    <strong>testWhileIdle</strong>：空闲时是否进行验证，检查对象是否有效，默认为<font face="Times New Roman">false</font></li>
</ul>
<p>&#216; 在使用<font face="Times New Roman">DBCP</font>的时候，如果使用默认值，则数据库连接因为某种原因断掉后，再从连接池中取得连接又不进行验证，这时取得的连接实际上就会是无效的数据库连接。因此为了防止获得的数据库连接失效，在使用的时候最好保证：</p>
<ul type="disc">
    <li><strong>username:</strong> 登陆数据库所用的帐号</li>
    <li><strong><font face="Times New Roman">validationQuery</font></strong>：<font face="Times New Roman">SELECT COUNT(*) FROM DUAL</font></li>
    <li><strong><font face="Times New Roman">testOnBorrow</font></strong>、<strong><font face="Times New Roman">testOnReturn</font></strong>、<strong><font face="Times New Roman">testWhileIdle</font></strong>：最好都设为<font face="Times New Roman">true</font></li>
    <li><strong><font face="Times New Roman">minEvictableIdleTimeMillis</font></strong>：大于<font face="Times New Roman">0</font>
    ，进行连接空闲时间判断，或为<font face="Times New Roman">0</font>，对空闲的连接不进行验证</li>
    <li><strong><font face="Times New Roman">timeBetweenEvictionRunsMillis</font></strong>：失效检查线程运行时间间隔，如果小于等于<font face="Times New Roman">0</font>，不会启动检查线程</li>
</ul>
<p>&#216; <strong><font face="Times New Roman">PS:</font></strong>在构造<font face="Times New Roman">GenericObjectPool
<strong>[BasicDataSource</strong></font><strong>在其<font face="Times New Roman">createDataSource ()</font></strong>
<strong>方法中也会使用<font face="Times New Roman">GenericObjectPool]</font></strong>
时，会生成一个内嵌类<font face="Times New Roman">Evictor</font>，实现自<font face="Times New Roman">Runnable</font>接口。如果<strong><font face="Times New Roman">timeBetweenEvictionRunsMillis</font></strong>大于<font face="Times New Roman">0</font>，每过<strong><font face="Times New Roman">timeBetweenEvictionRunsMillis</font></strong>毫秒<font face="Times New Roman">Evictor</font>会调用<font face="Times New Roman">evict()</font>方法，检查对象的闲置时间是否大于
<font face="Times New Roman"><strong>minEvictableIdleTimeMillis</strong></font>毫秒（<font face="Times New Roman">_minEvictableIdleTimeMillis</font>小于等于<font face="Times New Roman">0</font>时则忽略，默认为<font face="Times New Roman">30</font>分钟），是则销毁此对象，否则就激活并校验对象，然后调用<font face="Times New Roman">ensureMinIdle</font>方法检查确保池中对象个数不小于<font face="Times New Roman">_minIdle</font>。在调用<font face="Times New Roman">returnObject</font>方法把对象放回对象池，首先检查该对象是否有效，然后调用<font face="Times New Roman">PoolableObjectFactory</font>
的<font face="Times New Roman">passivateObject</font>方法使对象处于非活动状态。再检查对象池中对象个数是否小于<strong><font face="Times New Roman">maxIdle</font></strong>，是则可以把此对象放回对象池，否则销毁此对象</p>
<p>&#216; <strong>上述特性的可设置性已在代码中验证，具体性能是否能实现有待实际验证</strong></p>
<h2><strong><font size="3">2. C3P0</font></strong></h2>
<p>&#216; <font face="Times New Roman">C3P0</font>的官方<font face="Times New Roman">example</font>中使用的数据源为<font face="Times New Roman">ComboPooledDataSource</font>，网上一篇文章详细介绍了<font face="Times New Roman">C3P0</font>连接池配置中各项含义<font face="Times New Roman">[</font>这些配置项的含义在下载解压<font face="Times New Roman">c3p0</font>的压缩包之后目录的<font face="Times New Roman">doc\index.html</font>中的<font face="Times New Roman">Configuration</font>部分也有详细的介绍，这里偷下懒<font face="Times New Roman"><strong>:P</strong>]</font>，现摘录如下：</p>
<p>&lt;c3p0-config&gt;<br />
&lt;default-config&gt;<br />
&lt;!--<font face="宋体">当连接池中的连接耗尽的时候</font>c3p0<font face="宋体">一次同时获取的连接数。</font>Default: 3 --&gt;<br />
&lt;property
name="acquireIncrement"&gt;3&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">定义在从数据库获取新连接失败后重复尝试的次数。</font>Default: 30
--&gt;<br />
&lt;property
name="acquireRetryAttempts"&gt;30&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">两次连接中间隔时间，单位毫秒。</font>Default:
1000 --&gt;<br />
&lt;property
name="acquireRetryDelay"&gt;1000&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">连接关闭时默认将所有未提交的操作回滚。</font>Default: false
--&gt;<br />
&lt;property
name="autoCommitOnClose"&gt;false&lt;/property&gt;<br />
<br />
&lt;!--c3p0<font face="宋体">将建一张名为</font>Test<font face="宋体">的空表，并使用其自带的查询语句进行测试。如果定义了这个参数那么</font><br />
<font face="宋体">属性</font>preferredTestQuery<font face="宋体">将被忽略。你不能在这张</font>Test<font face="宋体">表上进行任何操作，它将只供</font>c3p0<font face="宋体">测试</font><br />
<font face="宋体">使用。</font>Default: null--&gt;<br />
&lt;property
name="automaticTestTable"&gt;Test&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效</font><br />
<font face="宋体">保留，并在下次调用</font>getConnection()<font face="宋体">的时候继续尝试获取连接。如果设为</font>true<font face="宋体">，那么在尝试</font><br />
<font face="宋体">获取连接失败后该数据源将申明已断开并永久关闭。</font>Default:
false--&gt;<br />
&lt;property
name="breakAfterAcquireFailure<wbr>"&gt;false&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">当连接池用完时客户端调用</font>getConnection()<font face="宋体">后等待获取新连接的时间，超时后将抛出</font><br />
SQLException,<font face="宋体">如设为</font>0<font face="宋体">则无限期等待。单位毫秒。</font>Default: 0 --&gt;<br />
&lt;property
name="checkoutTimeout"&gt;100&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">通过实现</font>ConnectionTester<font face="宋体">或</font>QueryConnectionTester<font face="宋体">的类来测试连接。类名需制定全路径。</font><br />
Default:
com.mchange.v2.c3p0.impl.DefaultConnectionTester--&gt;<br />
&lt;property
name="connectionTesterClassNam<wbr>e"&gt;&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">指定</font>c3p0
libraries<font face="宋体">的路径，如果（通常都是这样）在本地即可获得那么无需设置，默认</font>null<font face="宋体">即可</font><br />
Default: null--&gt;<br />
&lt;property
name="factoryClassLocation"&gt;null&lt;/property&gt;<br />
<br />
&lt;!--Strongly disrecommended. Setting this to true
may lead to subtle and bizarre bugs.<br />
<font face="宋体">（文档原文）作者强烈建议不使用的一个属性</font>--&gt;<br />
&lt;property
name="forceIgnoreUnresolvedTra<wbr>nsactions"&gt;false&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">每</font>60<font face="宋体">秒检查所有连接池中的空闲连接。</font>Default: 0 --&gt;<br />
&lt;property
name="idleConnectionTestPeriod<wbr>"&gt;60&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">初始化时获取三个连接，取值应在</font>minPoolSize<font face="宋体">与</font>maxPoolSize<font face="宋体">之间。</font>Default: 3
--&gt;<br />
&lt;property
name="initialPoolSize"&gt;3&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">最大空闲时间</font>,60<font face="宋体">秒内未使用则连接被丢弃。若为</font>0<font face="宋体">则永不丢弃。</font>Default: 0
--&gt;<br />
&lt;property
name="maxIdleTime"&gt;60&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">连接池中保留的最大连接数。</font>Default: 15
--&gt;<br />
&lt;property
name="maxPoolSize"&gt;15&lt;/property&gt;<br />
<br />
&lt;!--JDBC<font face="宋体">的标准参数，用以控制数据源内加载的</font>PreparedStatements<font face="宋体">数量。但由于预缓存的</font>statements<br />
<font face="宋体">属于单个</font>connection<font face="宋体">而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。</font><br />
<font face="宋体">如果</font>maxStatements<font face="宋体">与</font>maxStatementsPerConnection<font face="宋体">均为</font>0<font face="宋体">，则缓存被关闭。</font>Default:
0--&gt;<br />
&lt;property
name="maxStatements"&gt;100&lt;/property&gt;<br />
<br />
&lt;!--maxStatementsPerConnecti<wbr>on<font face="宋体">定义了连接池内单个连接所拥有的最大缓存</font>statements<font face="宋体">数。</font>Default: 0 --&gt;<br />
&lt;property
name="maxStatementsPerConnecti<wbr>on"&gt;&lt;/property&gt;<br />
<br />
&lt;!--c3p0<font face="宋体">是异步操作的，缓慢的</font>JDBC<font face="宋体">操作通过帮助进程完成。扩展这些操作可以有效的提升性能</font><br />
<font face="宋体">通过多线程实现多个操作同时被执行。</font>Default:
3--&gt;<br />
&lt;property
name="numHelperThreads"&gt;3&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">当用户调用</font>getConnection()<font face="宋体">时使</font>root<font face="宋体">用户成为去获取连接的用户。主要用于连接池连接非</font>c3p0<br />
<font face="宋体">的数据源时。</font>Default: null--&gt;<br />
&lt;property
name="overrideDefaultUser"&gt;root&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">与</font>overrideDefaultUser<font face="宋体">参数对应使用的一个参数。</font>Default: null--&gt;<br />
&lt;property
name="overrideDefaultPassword"&gt;password&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">密码。</font>Default:
null--&gt;<br />
&lt;property
name="password"&gt;&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">定义所有连接测试都执行的测试语句。在使用连接测试的情况下这个一显著提高测试速度。注意：</font><br />
<font face="宋体">测试的表必须在初始数据源的时候就存在。</font>Default:
null--&gt;<br />
&lt;property
name="preferredTestQuery"&gt;select id from test where
id=1&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">用户修改系统配置参数执行前最多等待</font>300<font face="宋体">秒。</font>Default:
300 --&gt;<br />
&lt;property
name="propertyCycle"&gt;300&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">因性能消耗大请只在需要的时候使用它。如果设为</font>true<font face="宋体">那么在每个</font>connection<font face="宋体">提交的</font><br />
<font face="宋体">时候都将校验其有效性。建议使用</font>idleConnectionTestPeriod<font face="宋体">或</font>automaticTestTable<br />
<font face="宋体">等方法来提升连接测试的性能。</font>Default: false
--&gt;<br />
&lt;property
name="testConnectionOnCheckout<wbr>"&gt;false&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">如果设为</font>true<font face="宋体">那么在取得连接的同时将校验连接的有效性。</font>Default: false
--&gt;<br />
&lt;property
name="testConnectionOnCheckin"&gt;true&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">用户名。</font>Default:
null--&gt;<br />
&lt;property
name="user"&gt;root&lt;/property&gt;<br />
<br />
&lt;!--<font face="宋体">早期的</font>c3p0<font face="宋体">版本对</font>JDBC<font face="宋体">接口采用动态反射代理。在早期版本用途广泛的情况下这个参数</font><br />
<font face="宋体">允许用户恢复到动态反射代理以解决不稳定的故障。最新的非反射代理更快并且已经开始</font><br />
<font face="宋体">广泛的被使用，所以这个参数未必有用。现在原先的动态反射与新的非反射代理同时受到</font><br />
<font face="宋体">支持，但今后可能的版本可能不支持动态反射代理。</font>Default:
false--&gt;<br />
&lt;property
name="usesTraditionalReflectiv<wbr>eProxies"&gt;false&lt;/property&gt;</p>
<p>&lt;property
name="automaticTestTable"&gt;con_test&lt;/property&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;property
name="checkoutTimeout"&gt;30000&lt;/property&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;property
name="idleConnectionTestPeriod<wbr>"&gt;30&lt;/property&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;property
name="initialPoolSize"&gt;10&lt;/property&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;property
name="maxIdleTime"&gt;30&lt;/property&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;property
name="maxPoolSize"&gt;25&lt;/property&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;property
name="minPoolSize"&gt;10&lt;/property&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;property
name="maxStatements"&gt;0&lt;/property&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;user-overrides
user="swaldman"&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;/user-overrides&gt;<br />
&lt;/default-config&gt;<br />
&lt;named-config
name="dumbTestConfig"&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;property
name="maxStatements"&gt;200&lt;/property&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;user-overrides user="poop"&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;property
name="maxStatements"&gt;300&lt;/property&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;/user-overrides&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>
&lt;/named-config&gt;<br />
&lt;/c3p0-config&gt;</p>
<p>&#216; <strong>上述特性的可设置性已在代码中验证，具体性能是否能实现有待实际验证</strong></p>
<p>&#216; 从配置项的内容来看，<font face="Times New Roman">C3P0</font>和<font face="Times New Roman">DBCP</font>都有比较详细的有关连接检测保证的配置，我们可以看到<strong><font face="Times New Roman">C3P0</font></strong><strong>可以控制数据源内加载的<font face="Times New Roman">PreparedStatements</font></strong><strong>数量，并且可以设置帮助线程的数量来提升<font face="Times New Roman">JDBC</font></strong><strong>操作的速度</strong>，<strong>这些是</strong><strong><font face="Times New Roman">DBCP</font></strong><strong>未提供的</strong>；另外从网络上的评价来看，<strong><font face="Times New Roman">DBCP</font></strong><strong>出现<font face="Times New Roman">Bug</font></strong><strong>的频率要大于<font face="Times New Roman">C3P0</font></strong><strong>，不过这一点有待于我们自己实际的检测。</strong></p>
<h2><font size="3">3. Proxool</font></h2>
<p>&#216; <font face="Times New Roman">Proxool</font>的使用和<font face="Times New Roman">dbcp</font>以及<font face="Times New Roman">c3p0</font>稍有不同，我们需要并且只需要在使用基本的<font face="Times New Roman">java.sql.DriverManager</font>之前加载<font face="Times New Roman">org.logicalcobwebs.proxool.ProxoolDriver</font>驱动类<font face="Times New Roman">,</font>并且按照<font face="Times New Roman">proxool</font>定义的<font face="Times New Roman">url</font>格式
<font face="Times New Roman"><strong>["proxool." + alias + ":" +
driverClass + ":" + driverUrl</strong></font>
<strong>，其中<font face="Times New Roman">alias</font></strong><strong>是为连接池自定义的别名<font face="Times New Roman">]</font></strong>
来获得<font face="Times New Roman">connection</font>；具体的可以参看<font face="Times New Roman">proxool
doc</font>下的<font face="Times New Roman">UserGuide</font>，或本文所附的示例代码。下面对连接池的特性配置作详细说明
<font face="Times New Roman"><strong>[</strong></font>这个是自己翻译的，不一定准确，有问题时请参看<font face="Times New Roman">doc</font>下的<font face="Times New Roman">Properties
~<strong>]</strong></font>。</p>
<p>n <strong>fatal-sql-exception</strong></p>
<p>
以逗号隔开的异常列表，当设置了此项之后，每当出现SQLException时都将与列表中异常项作比较，如果匹配则认为出现fatal异常，这将导致connection被丢弃，并且不论出现任何情况该异常将被重抛一次以通知用户发生的情况。默认值为<strong><em>null</em></strong></p>
<p>n <strong>fatal-sql-exception-wrapper-class</strong></p>
<p>如果配置了<font face="Times New Roman">fatal-sql-exception</font>，则默认的操作是丢
弃引起SQLException的原因而只是抛出原始异常。使用fatal-sql-exception-wrapper-class这个特性可以将
SQLException包装到继承SQLException或RunTimeException的任何异常类里。Proxool提供了两个类供使用
FatalSQLException和FatalRunTimeException；使用这两个类的话就将该选项设置为
'org.logicalcobwebs.proxool.FatalSQLException'或者
'org.logicalcobwebs.proxool.FatalRuntimeException'。默认值为<strong><em>null</em></strong></p>
<p>n <strong>house-keeping-sleep-time</strong></p>
<p><font face="Times New Roman">proxool</font>自动侦察各个连接状态的时间间隔<font face="Times New Roman">(</font>毫秒<font face="Times New Roman">),</font>侦察到空闲的连接就马上回收<font face="Times New Roman">,</font>超时的销毁，默认值为<font face="Times New Roman">30</font>秒</p>
<p>n <strong>house-keeping-test-sql</strong></p>
<p>如果侦察线程发现闲置连接，则会使用这个SQL语句来对这些连接进行检查；这项设置的语句应该能够被很快的执行，例如查询当前时间
<strong>[info.setProperty("proxool.house-keeping-test-sql", "select
CURRENT_DATE");]</strong> 。如果不设置则该选项被忽略</p>
<p>n
<strong>injectable-connection-interface</strong>、<strong>injectable-statement-interface</strong><strong>、</strong><strong>injectable-prepared-statement-interface</strong><strong>、</strong><strong>injectable-callable-statement-interface</strong></p>
<p>n <strong>jmx</strong></p>
<p>如果此项设为<font face="Times New Roman">true</font>，则连接池将被以名称"Proxool:type=Pool,
name=&lt;alias&gt;"注册为JMS
Server的MBean。默认值为<strong><em>false</em></strong></p>
<p>n <strong>jmx-agent-id</strong></p>
<p>当且仅当jmx选项设为true时使用，为以逗号分隔的连接持注册到的JMS代理名称列表；如果不设置则所有注册的JMX
Server都将被使用</p>
<p>n <strong>maximum-active-time</strong></p>
<p>线程最大存活时间，超过此时间的线程将被守护线程kill掉，默认值为5分钟</p>
<p>n <strong>maximum-connection-count</strong></p>
<p>
到数据库的最大连接数，超过了这个连接，再有请求时，就排在队列中等候，最大的等待请求数由simultaneous-build-throttle决定；默认值为15</p>
<p>n <strong>maximum-connection-lifetime</strong></p>
<p>连接最大存活时间，毫秒为单位，默认值为4小时</p>
<p>n <strong>minimum-connection-count</strong></p>
<p>不管是否被使用都保持<strong><em>开放</em></strong>的最小连接数，默认值为5</p>
<p>n <strong>overload-without-refusal-lifetime</strong></p>
<p>用来判断连接池状态，如果在此选项设置时间内（毫秒为单位）拒绝了连接，则认为过负载。默认值为<font face="Times New Roman">60</font>秒</p>
<p>n <strong>prototype-count</strong></p>
<p>
最少保持的<strong><em>空闲</em></strong>连接数，注意与minimum-connection-count区分。默认值为<font face="Times New Roman">0</font></p>
<p>n <strong>simultaneous-build-throttle</strong></p>
<p>最大的等待请求数，默认值为<font face="Times New Roman">10</font></p>
<p>n <strong>test-before-use</strong></p>
<p>
如果设为true则connection在使用前将以house-keeping-test-sql设置的语句测试，如果测试不通过则该connection被丢弃并会重新分配一个connection。默认为false</p>
<p>n <strong>test-after-use</strong></p>
<p>
如果设为true则connection在关闭（放回连接池）前将以house-keeping-test-sql设置的语句测试，如果测试不通过connection将被丢弃。默认值为false</p>
<p>&#216; 与其它连接池特性的设置方法不同，<font face="Times New Roman">Proxool</font>不提供相应的<font face="Times New Roman">set</font>方法，所有特性都要以诸如<font face="Times New Roman">info.setProperty("proxool.jmx",
"false");</font>方式设定</p>
<p>&#216; <strong>上述特性的可设置性已在代码中验证，具体性能是否能实现有待实际验证</strong></p>
<img src ="http://www.blogjava.net/czmchen/aggbug/301919.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/czmchen/" target="_blank">陈周敏</a> 2009-11-11 09:06 <a href="http://www.blogjava.net/czmchen/archive/2009/11/11/301919.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat数据源连接经验</title><link>http://www.blogjava.net/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.blogjava.net/czmchen/archive/2009/11/10/301853.html</guid><wfw:comment>http://www.blogjava.net/czmchen/comments/301853.html</wfw:comment><comments>http://www.blogjava.net/czmchen/archive/2009/11/10/301853.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/czmchen/comments/commentRss/301853.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/czmchen/services/trackbacks/301853.html</trackback:ping><description><![CDATA[Tomcat是一个小巧玲珑的好物，呵呵。一般开发少不了它。<br />
Tomcat现在支持很多技术，下面我把我的TOMCAT上配置的数据源经验和大家分享<br />
<br />
配置前的准备工作：先将你的连接数据库的JAR COPY到服务器的LIB文件夹下，供服务器调用（如现在用的是TOMCAT，那就将该JAR COPY到TOMCAT下的LIB文件夹）<br />
<br />
打开项目的META-INF文件夹下的context.xml的文件（没有的新建一个context.xml文件）<br />
修改其中的配置，详细的配置信息以下：<br />
<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;Context path="/TomcatDataSources" docBase="TomcatDataSources"<br />
&nbsp;&nbsp;&nbsp; debug="5" reloadable="true" crossContext="true"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Resource name="jdbc/czmds" auth="Container"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="javax.sql.DataSource" maxActive="100" maxIdle="30"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxWait="10000" username="root" password=""<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; driverClassName="com.mysql.jdbc.Driver"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url="jdbc:mysql://localhost/czm?characterEncoding=utf-8"/&gt;&nbsp;&nbsp; <br />
&lt;/Context&gt;<br />
<br />
说明：context中的属性path为你的项目的上下文路径<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Resource中的属性name为该数据源的别名，这个自己喜欢定义<br />
<br />
<br />
<br />
然后在web.xml下加上下面的配置<br />
&lt;resource-ref&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;DB Connection&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;res-ref-name&gt;jdbc/czmds&lt;/res-ref-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;res-auth&gt;Container&lt;/res-auth&gt;<br />
&lt;/resource-ref&gt;<br />
<br />
说明：res-ref-name为你的数据源设定的别名<br />
<br />
最后一步：测试连接是否成功，记得在JSP页面或Servlet上测试<br />
<br />
提示：数据源获取连接的代码以下：<br />
javax.naming.Context ctx = new javax.naming.InitialContext();<br />
javax.sql.DataSource ds = (javax.sql.DataSource) ctx<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .lookup("java:/comp/env/jdbc/czmds");<br />
java.sql.Connection conn = ds.getConnection();&nbsp;&nbsp; <br />
说明：lookup是查找数据源的别名，这个就直接在java:/comp/env/后加别名，以上<br />
<br />
<br />
说到最后，一定要记得关连接<br />
<br />
<img src ="http://www.blogjava.net/czmchen/aggbug/301853.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/czmchen/" target="_blank">陈周敏</a> 2009-11-10 16:22 <a href="http://www.blogjava.net/czmchen/archive/2009/11/10/301853.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>浅谈proxool连接池经验</title><link>http://www.blogjava.net/czmchen/archive/2009/11/10/301843.html</link><dc:creator>陈周敏</dc:creator><author>陈周敏</author><pubDate>Tue, 10 Nov 2009 07:47:00 GMT</pubDate><guid>http://www.blogjava.net/czmchen/archive/2009/11/10/301843.html</guid><wfw:comment>http://www.blogjava.net/czmchen/comments/301843.html</wfw:comment><comments>http://www.blogjava.net/czmchen/archive/2009/11/10/301843.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/czmchen/comments/commentRss/301843.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/czmchen/services/trackbacks/301843.html</trackback:ping><description><![CDATA[连接池是负责分配、管理和释放数据库连接，它允许应用程序重复使用一个现有的数据库连接，而再不是重新建立一个；释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能<br />
<br />
<br />
所以一个项目访问数据库比较频繁的时候，就要用到连接池，一般连接池本人都觉得proxool比较好（这个网上的都是这样说，呵呵），我以前一直都用C3P0连接池，发觉速度还不错，不过不大稳定！<br />
不说那么多，浅谈下我的proxool的经验<br />
<br />
准备前的工作：<br />
到proxool官网http://proxool.sourceforge.net/上下载JAR包和文档<br />
然后解压，把里面的proxool-0.9.1.jar和proxool-cglib.jar放到你的服务器的lib下面（好像我用的是TOMCAT，就放到TOMCAT的lib里面，供TOMCAT调用）<br />
<br />
先在WEB-INF下建立以个proxool.xml的文件<br />
详细的配置以下：<br />
<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;!--<br />
&nbsp;&nbsp;&nbsp; Document&nbsp;&nbsp; : proxool.xml<br />
&nbsp;&nbsp;&nbsp; Created on : 2009年11月9日, 下午3:15<br />
&nbsp;&nbsp;&nbsp; Author&nbsp;&nbsp;&nbsp;&nbsp; : Administrator<br />
&nbsp;&nbsp;&nbsp; Description:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Purpose of the document follows.<br />
--&gt;<br />
&lt;something-else-entirely&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;proxool&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;alias&gt;mypool&lt;/alias&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-url&gt;jdbc:mysql://localhost/czm?characterEncoding=utf-8&lt;/driver-url&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-class&gt;com.mysql.jdbc.Driver&lt;/driver-class&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-properties&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="user" value="root"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="password" value=""/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/driver-properties&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;house-keeping-sleep-time&gt;300000&lt;/house-keeping-sleep-time&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--最大的等待请求数,即因没有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;proxool.simultaneous-build-throttle&gt;200&lt;/proxool.simultaneous-build-throttle&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- maximum-new-connections&gt;50&lt;/maximum-new-connections--&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 最少保持的空闲连接数--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prototype-count&gt;5&lt;/prototype-count&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 允许最大连接数,超过了这个连接，再有请求时，就排在队列中等候，最大的等待请求数由maximum-new-connections决定--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;maximum-connection-count&gt;100&lt;/maximum-connection-count&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 最小连接数--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;minimum-connection-count&gt;25&lt;/minimum-connection-count&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;maximum-active-time&gt;300000&lt;/maximum-active-time&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;maximum-connection-lifetime&gt;3600000&lt;/maximum-connection-lifetime&gt;<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;house-keeping-test-sql&gt;select CURRENT_DATE&lt;/house-keeping-test-sql&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;/proxool&gt;<br />
&lt;/something-else-entirely&gt;<br />
<br />
<br />
<br />
接着在web.xml下做个插件<br />
详细配置以下：<br />
<br />
&lt;servlet&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;ServletConfigurator&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;org.logicalcobwebs.proxool.configuration.ServletConfigurator&lt;/servlet-class&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;xmlFile&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;WEB-INF/proxool.xml&lt;/param-value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;servlet&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;Admin&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;org.logicalcobwebs.proxool.admin.servlet.AdminServlet&lt;/servlet-class&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;servlet-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;Admin&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/proxool&lt;/url-pattern&gt;&lt;!--这个设置是你的项目的上下文路径--&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/servlet-mapping&gt;<br />
<br />
web.xml配置完后，剩下的就是写个测试连接类<br />
新建一个jsp页面，页面内容以下：<br />
<br />
&lt;%@page contentType="text/html" pageEncoding="UTF-8"%&gt;<br />
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"<br />
"http://www.w3.org/TR/html4/loose.dtd"&gt;<br />
<br />
&lt;html&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;head&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;JSP Page&lt;/title&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/head&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;body&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java.sql.Connection conn = java.sql.DriverManager.getConnection("proxool.myself");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("conn:" + conn);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.print("conn:" + conn);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
<br />
OK.运行该页面看看是否成功？<br />
以前我就是在类中测试，发觉它连接不上，报<br />
java.sql.SQLException: No suitable driver found for proxool.myself<br />
的错误。<br />
所以一定要用JSP或servlet来测试，因为它调用到服务器<br />
<br />
<br />
<img src ="http://www.blogjava.net/czmchen/aggbug/301843.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/czmchen/" target="_blank">陈周敏</a> 2009-11-10 15:47 <a href="http://www.blogjava.net/czmchen/archive/2009/11/10/301843.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>