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();
}
}
}
ちゃんと登録できたようです。

もどる