2008-10-26

如何在 Tomcat 中運用 JNDI 的方式取得 C3P0 的 connection pool

Tomcat 本來內建的 connection pool 是 dbcp,但據說有一堆 bug 沒解,因此想說要把 DBCP 換成 c3p0 以避免這些問題。剛好在網路上看到這個解法,就將它記下來嚕。

首先當然是要先把 c3p0 的 jar 檔及 jdbc driver 放到 tomcat 的 lib 目錄下。

Tomcat 5.0

在 Tomcat 的目錄下 conf/server.xml ,找到 <Context> 修改其內容:

<Resource name="jdbc/pooledDS" auth="Container" type="com.mchange.v2.c3p0.ComboPooledDataSource" /> <ResourceParams name="jdbc/pooledDS">
   <parameter>
      <name>factory</name>
      <value>org.apache.naming.factory.BeanFactory</value>
   </parameter>
   <parameter>
      <name>driverClass</name>
      <value>org.postgresql.Driver</value> 
   </parameter>
   <parameter>
      <name>jdbcUrl</name>
      <value>jdbc:postgresql://localhost/c3p0-test</value> 
   </parameter>
   <parameter>
       <name>user</name>
       <value>swaldman</value>
    </parameter>
    <parameter>
       <name>password</name>
       <value>test</value>
    </parameter>
    <parameter>
       <name>minPoolSize</name>
       <value>5</value>
    </parameter>
    <parameter>
       <name>maxPoolSize</name>
       <value>15</value>
    </parameter>
    <parameter>
       <name>acquireIncrement</name>
       <value>5</value>
    </parameter>
</ResourceParams>

Tomcat 5.5/6.0

在 Tomcat 的目錄下 conf/server.xml ,找到 <GlobalNamingResources> 加上其內容:

<Resource auth="Container"
        description="DB Connection"
        driverClass="com.mysql.jdbc.Driver"
        maxPoolSize="4"
        minPoolSize="2"
        acquireIncrement="1"
        name="jdbc/TestDB"
        user="test"
        password="ready2go"
        factory="org.apache.naming.factory.BeanFactory"
        type="com.mchange.v2.c3p0.ComboPooledDataSource"
        jdbcUrl="jdbc:mysql://localhost:3306/test?autoReconnect=true" />

Web.xml

標準 J2EE 的程式中,需要在 web.xml 中做以下設定:

<resource-ref>
   <res-ref-name>jdbc/pooledDS</res-ref-name>
   <res-type>javax.sql.DataSource</res-type>
   <res-auth>Container</res-auth>
</resource-ref>

如何利用程式取得 DataSource

InitialContext ic = new InitialContext(); DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/pooledDS");

原文參考:http://www.mchange.com/projects/c3p0/index.html#tomcat-specific

2008-10-19

隨身碟病毒

最近很多朋友都中 Kavo 系列的病毒,上網找了一下,有人寫好了刪毒程式,在此記錄一下。 http://reinfors.googlepages.com/main.html 其功能說明:

EFix有下列功能:

  1. 修復因病毒造成隱藏檔選項無法開啟和磁碟雙擊顯示找不到程式的錯誤
  2. 修正工作管理員無法開啟的問題 (因登錄檔關閉造成的話) (4.68版後才有,前面沒有)
  3. 關閉自動撥放功能 (此功能在Ver4.56後取消)
  4. 簡易的病毒檔案刪除 (像KAVO KXVO JVVO TASO AMVO AVPO那一類的,還有部分病毒下載器,如auto.exe等等)
  5. 會產生掃瞄報告供解毒人員分析
  6. 可利用文字腳本方式刪除檔案及登錄值,使用方式請看此篇

EFix Lite有下列功能:

  1. 修復因病毒造成隱藏檔選項無法開啟和磁碟雙擊顯示找不到程式的錯誤
  2. 目前已知的KAVO系列病毒清除

磁碟無法開啟的意思是如下圖顯示: