tomcat 5.0 upgrade tomcat 5.5 記實

話說現在正在進行的某案
使用 jdk1.4.2+tomcat5.0.28 一直 run 得爽爽地
其中有個需求是要 post 別人家的某個 url (https)
放大假前找了一個 free lib (HTTPClient) 寫 httpclient
(原因是 jdk 裡的基本 function 沒處理到 timeout)

放完假回來 ~ 馬上被告知 ~ https 不 work
原來我那時還沒測到那就閃人了 :D
急忙再做做功課 ~ 原來原作者沒把 https implement 完就懶得維護了
不過卻有其它使用者幫它把 https 補好 ~
而且還有各種 solution -> HTTPClient patch HTTPS
(網路上提供這些 freeware 的大大們真的功德無量 ~ )

開心地選了 java 官方 JSSE 的這組 patch ~~~
lib 重新 build 過一放 ~ ㄟ ~ 就 work 了
(不會這麻順利吧)
實際上真的還就 work 了

就這樣過了一個月 .........
..........................
..........................

突然有一天 ~ 又不行了 >___________<
雙方查了半天 ~ 程式都沒動呀
可是就是老出現一個 error
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

對咱們自己家的 https web 測一下奇怪就可以呀
又追了好幾天後發現 ~
對方的 web server 更新了 SSL 憑證 ~ 而且 key 長度是 256 bytes
請教了 google 大神 ~
原來 jdk1.4 內建的 JSSE 並不支援到這樣的長度 ~ 原出處
它裡頭提供了兩個解決方案
1.用一套 lib Bouncy Castle Provider, 它有支援到 256 的 key len
2.直接將 jdk 升到 5.0, 內建的 JSSE 即可支援這長度

我一直對 jdk 升級有種恐懼 ~ 所以先試試第一種 ...

測的過程跳過 ~
有個重點是要去抓 unrestricted policy files 這東東回來蓋掉原來的 ~
用來解開啥米美國的出口限制三小的 ...
(到 J2SE 1.4.2 download page 這兒最下頭抓)
不過結果是 ~ try 不出來 ~ 怎麻樣 error 都還是一樣

so 只好 ~ 試著來將 jdk 升級 ........... 希望不會出差錯 ~

抓了 jdk5.0.14 回來一放 ~ tomcat 連起都起不來 ...

peter 說 tomcat5.0 不支援 jdk5.0 >___<

so, 連 tomcat 都得換新的喲 ..

再抓了 tomcat5.5.26 回來一試 ~ 耶 ~ 就 work 了咧, 256 bytes 的 SSL ... 呼 ~~~

正當在爽的時候 ~ 再試一下 database .. (我們用的是 oracle by dbcp)
又出 error :
Cannot create JDBC driver of class '' for connect URL 'null'

又到了請教 google 大神的時候
找到了好多種說法
不過其實看官方的最簡單 ~ 這兒
就兩個重點地方
1.server.xml 裡 Context 段 db 的設定要改 (tomcat5.0 -> tomcat5.5 異動)
<Context path="/DBTest" docBase="DBTest" ...>
<Resource name="jdbc/TestDB" auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="javauser" password="javadude"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@IP:1521:SID"/>
</Context>

2.ap 的 web.xml 加上這段
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

ps1.tomcat5.5只認得 .jar 的 lib, so oracle 原來用的 classes12.zip 要 rename classes12.jar
ps2.oracle 的 driver 它建議由 oracle.jdbc.driver.OracleDriver 換成 oracle.jdbc.OracleDriver

以上, 還有再補充

留言

這個網誌中的熱門文章

水煙殺蟲劑 ~ 好神奇的東東呀

[coding] 在 vss 裡救回被刪除的目錄

彤彤參加爬爬比賽