Eclipse on Windows7 + PostgreSQL の開発

いやぁ、ハマったね。久しぶりにハマったねw

まず、以下の環境にて開発をしていますた。

  • Windows7 64bit
  • Eclipse (Pleiades JAVA)
  • CentOS on VMware
  • PostgreSQL on CentOS

開発したいのは、Exlipse 上のTomcatでAxis2を用いてWebServiceを展開し、バックエンドのDBはVMware上、ClientはWindows上のC# で作成したSmartClientから利用する形。C#の開発環境はExpress Edition 2010です。で、wsdlはAxis2が作成してくれるので、それを利用して、簡単にメソッド呼び出ししましょうと考えたわけです。

さて、ここで問題は、PostgreSQLはVMware上のCentOSで動いているということ。さらに、VMwareのネットワークはBridgeです。ということは、すでに別サーバで動いているということですね。

まず、第一のハマり。

Visual C# Express Edition 2010では、「サービスの参照」というのがあります。これが、今まではWebサービスと同義だと思っていたのですが、どうも違うらしく、別途「Webサービスの参照」というのがあります。これにしないと、Tomcat側がwsdlのリクエストで

http://localhost:8080/MySVS/services/test?wsdl/$metadata not found

みたいなエラーはいて、C#上で正しくCallできるメソッドを作成してくれません。

これが、第一のハマり。

次に第二のハマり。

JDNIを正しく設定して、やっとことさPostgreSQLにアクセスできると思ったら、

Cannot create PoolableConnectionFactory

って言われて、アクセスできません。pg_hda.confやpostgresql.confなどをいじってみましたが、まったく効かず。さらに、同じWindows上のPgAdminからはアクセスできるし、Eclipse上のERMasterからもJDBCでアクセスできる…。

まったくもって理解不能と途方に暮れていた朝方6時ごろ(すでに3時間くらい悩んでましたw)、やっと解決。

原因は、Windowsのファイヤーウォール。Eclipseが外部からのアクセスをもらうことができなくなっていた。それを無効にしてやると…見事解決。なんだかねぇ…。

ただ、なんで同じEclipse上のERMasterがアクセスできていたかはちょっとわからん。とりあえず、アクセスできてよかったので、まずは、これで終わりw

ではでは。