2016-04-06

DBCP2とpostgresとドライバーのバージョン

いつの間にかDBCPは、DBCP2へとバージョンが上がっていた。
そして、各バージョンがサポートするものが微妙に異なるという、わかりにくい状態になっている。

Sunが倒産し、JavaがOracleへドナドナされてからというもの、Javaがわかりにくく進化してきているように思える。

自分の中では、以前はすっきりした言語のイメージがあったJavaが、Java5(Tiger)から導入されたアノテーションの進化と共に、Perlのようなわけがわからない言語に育っている気がしてならない。

関数宣言の上につく、@の呪文のようなアノテーションがとてもわかりにくい・・・・。
おかげで、ポインタがややこしくて嫌いだったC++の方が、今では理解しやすく使いやすい言語になってしまい、最近ではもっぱらC++ばかり書くようになった。


久々にJDBCを使ったJAASのLoginModuleを作る事になったので、いつものパターンで作り、postgresのバージョンと同じjarを指定して配布し、サーバー起動。


・・・・・・ 何だ!、このエラーの嵐は!  しかもクライアントアプリは接続できないって終了してるし。
コンパイル通ったし、前に同じコードで作ったやつも動いてるから、ありえないから・・・マジで・・・・

困った、何が悪いのかわからんっ!

という事で、困った時は足元からの格言通りに、サーバーアプリケーションのlibフォルダを除いてみると定番のDBCPのjarの名前に違和感のある2の文字が・・・

DBCPのサイトを除いてみるとDBCP2とある。なになに・・・・

 DBCP now comes in three different versions to support different versions of JDBC.
Here is how it works:

    DBCP 2 compiles and runs under Java 7 only (JDBC 4.1)
    DBCP 1.4 compiles and runs under Java 6 only (JDBC 4)
    DBCP 1.3 compiles and runs under Java 1.4-5 only (JDBC 3)

DBCP 2 binaries should be used by applications running under Java 7.

うーーむ・・・・。いつの間にかDBCPは、新しいバージョンが主流になってて、しかもバージョン毎に、JDBCだけでなくJDKのバージョンまで異なった対応になってるのか・・・・知らなかった。

しかも、 DBCP1.4って今まで使ってきた奴は、Java6限定で、JDBCもjdbc4だけしか使えネーんじゃんか・・・!

ええーーっ、jettyとかで、DBCP1.4で、jdk7とJDBC3のドライバーで動かしちゃってるんですけど・・・・(-_-;)

昨年後半は、セキュリティー脆弱性でさんざんJavaが叩かれた記事を目の当たりにしてきたので、さすがにjdkは1.8を使う事にしたのだが、利用する既存DBがPostgres9.1といういぶし銀バージョンの為、ドライバーはずっと[9.1 Build 903] を使ってきた。

DBCP2先輩曰く、

所でオマエ、オレ使うんなら、jdk1.7とjdbc4.1限定な!、それ以外認めないから・・・・・

ガーーン。先輩、そりゃないっすよ・・・・。

jdk==>java8を使って、-version:"1.7.0_80" でもやって使うしかない。

しかし、JDBCはどうにもならんぞ・・・・・困った。と思いながらpostgresのjdbcサイトを覗くと、

This is the current version of the driver. Unless you have unusual requirements (running old applications or JVMs), this is the driver you should be using. It supports Postgresql 7.2 or newer and requires a 1.6 or newer JVM. 

何ですと!

古いJDKバージョンにアプリケーションが縛られるような状態でもない限り、いっちゃん新しいバージョン使えよな。postgres7.2より新しいのは全部サポートしてっから・・・・

だと・・・・?。  ええーーーーっ、 そういう事?。最新バージョンは下位互換性が保持されてるって、全くしらなかった。じゃーー、

JDBC41 Postgresql Driver, Version 9.4-1208

ってのを使えばいいのか・・・・。というわけで、

postgresql-9.4.1208.jre7.jar をダウンロードしてセットし、

postgresql-9.1-903.jdbc3.jar を削除してから、サーバー起動、クライアント認証実施・・・。

さらーーーっと認証終了ですわ。

0 件のコメント:

コメントを投稿