環境。
- java:J2SE v 1.4.2_18
- tomcat:4.1.37
上記の環境をwindowsとlinuxマシンで構築した。windowsで開発して、出来上がったものをlinuxサーバで運用するというイメージ。同じ環境であれば、windowsで作ったものをlinuxでも同じように動くだろうと思いきや、Cannot create resource instanceというエラーが発生してどうしても動かない。発生する場所はjdbc接続でmysqlに接続するときにこのエラーが発生する。この接続エラーが発生する理由については結局わからず終い。jdbcドライバ、mysqlのバージョン、文字コードなどチェックはしたけれど、
DataSource ds = (DataSource)initCon.lookup("java:comp/env/my_DB"); Connection con = ds.getConnection();
のgetConnection();でどうもエラーが発生してresource instanceをcreateできない。原因を探るためにlinuxにeclipseをインストールしてデバッグをしてみようとしたけれど、このlinux版eclipseが死ぬほど重い上にtomcatプラグインが謎のエラーを出してまともに作業できない。何をやってもうまくいかなかったので最後の手段と思ってjavaとtomcatのバージョンを最新バージョンのものへアップグレードすることにした。すると、何の問題もなく動くようになった。インストールしたバージョンは次の通り。
- java:jdk1.6.0_07
- tomcat:5.5.26
もともと玄箱に合わせてあえて古いバージョンを使ってたのだけれど、玄箱があまりに遅いため代わりの別のマシンでサーバを構築することしにしたので、特にソフトのバージョンにこだわる必要がなくなった。
調べてみたら同様のエラーに遭遇している人は割りと多くいる模様。javaのJ2SE v 1.4.2_18とtomcatの4.1.37という組み合わせはあまりよくないのかもしれない。