Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

Tomcat 5.0 + HiRDB で SQLException が発生

Windows XP SP2 には Windows ファイアウォールというパーソナルファイアウォールの機能がついている。こいつは ZoneAlarm とかと同じように、

  1. ローカルのプログラムがどっかの port を listen してて
  2. そのポートに syn が飛んでくる

と、「通信してもいい?」と聞いてくれる。


……で、この「通信してもいい?」が出てこないプログラムというのがある。

  • ローカルで Tomcat 5.0.28 が動いている
  • リモートで HiRDB 7-02 が動いている
  • ローカルの Tomcat を、インストール先 bin ディレクトリの startup.bat からでなく、 [プログラム]-[Apache Tomcat 5.0]-[Monitor Tomcat] から起動する

という条件下で、

  • ローカルの Web アプリケーションがリモートの HiRDB に SQL を発行しようとすると、次のメッセージが stdout.log に残る
JP.co.Hitachi.soft.HiRDB.JDBC.SQLException: KFPA11732-E Time over, no responce from HiRDB

という場合は、リモートの HiRDB からローカルの Web アプリケーションへの TCP コネクション確立ができていないのが原因かも。
Windows ファイアウォールの設定で、 Tomcat インストール先 bin ディレクトリの tomcat5.exe を「例外」に指定してやると解決するかも。


どうやら HiRDB は、クライアントから SQL を発行すると

  • client -> HiRDB の向きのコネクション
  • HiRDB -> client の向きのコネクション

の両方を張って何かやっているみたい。で、この後者の方が Windows ファイアウォールに無言で引っかかる。


なお、 HiRDB と Web アプリケーションとの通信には、 HiRDB のランタイムについていた Native HiRDB JDBC driver を使いました。

  • tomcat5.exe をなぜか無視する Windows ファイアウォールが悪いのか
  • .bat ファイルから起動したときとスタートメニューから起動したときで port を listen するプログラムが変わる Tomcat が悪いのか
  • 変なコネクションの張りかたをする HiRDB が悪いのか(tcp/4000 番台あたりを listen してました)

これで 1 日潰しちゃったよ、はぁ。