SymfowareにJava(JDBC)で接続する



前回はODBC接続を試しました。
今回は、Javaから接続してみます。

公開されているSymfowareのマニュアル
http://software.fujitsu.com/jp/manual/manualindex/P06000707.html
FUJITSU Symfoware Server アプリケーション開発ガイド(JDBCドライバ編)
を参考にしたのですが・・・ネーミングサービス?

うーん。JDBCだけで接続ってできないのかな?
クライアントにドライバを必ず入れないといけないのかと
困っていたのですが、なんとか接続する方法を見つけました。

※たぶん、非推奨です。
 クライアントにドライバをインストールするほうが無難だと思います。


Symfowareクライアントをインストールしたフォルダ
デフォルトだと、
C:\SFWCLNT\JDBC\fjjdbc\lib
ここに
fjsymjdbc2.jar
というファイルがあります。

これがJDBCドライバ本体になります。
Javaをビルドするときのビルドパスに、fjsymjdbc2.jarを含めます。

インストール時に指定したポート2050は、
Symfoware RDBというサービスによって待ちうけが
実行されているのですが、このサービスに対しての
通信はfjsymjdbc2.jar単独ではできないようです。

そこで、Symfoware RDAというサービスに問い合わせを行います。
このサービスの待ち受けポートは、サーバーインストール後に
設定した「RDA-SV(Symfoware)通信環境定義」で指定した
ポート番号になります。


不明であれば、C:\WINDOWS\system32\drivers\etc\servicesの
ファイルを確認し、RDB-SVの記載されている行を確認します。

RDB-SV 2002/tcp


※デフォルトで2002になっていはず。

次に、SymfoWARE RDAサービスを実行します。
コマンドプロンプトで、
net start "SymfoWARE RDA"

として起動するか、サービスの画面からSymfoWARE RDAサービスを
起動してやります。



これで準備は整いました。

使用するクラス名は
com.fujitsu.symfoware.jdbc.RDADriver


このRDAサービスへの接続文字列は、
jdbc:symforda://server_name:2002/DB_Name


となります。
これさえわかれば、後は他のJDBCドライバを使用した
データベースアクセスと同様の手順で操作可能です。

以下、試したサンプルとなります。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Sample {
  public static void main(String[] args) {
    try {
      
      Class.forName("com.fujitsu.symfoware.jdbc.RDADriver");
      //ポート番号は
      //C:\WINDOWS\system32\drivers\etc\servicesを確認
      //RDB-SV 2002/tcp
      Connection con = DriverManager.getConnection("jdbc:symforda://host_name:2002/DB_TEST","Administrator", "password");
      Statement stmt = con.createStatement();
      
      stmt.execute("insert into SC_TEST.M_USER (番号,名前) values ('00002','JDBCから登録')");
      
      ResultSet rs = stmt.executeQuery("SELECT * FROM SC_TEST.M_USER");
      while (rs.next()){
        System.out.print(rs.getString(1));
        System.out.print("\t");
        System.out.println(rs.getString(2));
      }
      stmt.close();
      
      con.close();

    } catch (Exception e){
      e.printStackTrace();
    }
  }
}



ちゃんと登録できたようです。




もどる