Symfoware

Symfowareについての考察blog

Shunsaku にJavaで接続し、ドキュメントを登録する

Shunsakuに接続するためのJavaのAPIが用意されています。
Shunsakuの起動確認のため、ドキュメントを登録するサンプルを動かしてみます。


使用するjarの準備



Shunsakuをインストールした端末の以下のフォルダ
C:\Program Files\Interstage Shunsaku\Shunsaku\lib

ここに4つのjarがあります。
・shunapi.jar
・xercesImpl.jar
・xml-apis.jar
・xmlconv.jar

開発に使用する端末にコピーし、クラスパスに追加します。

Eclipseを使用している場合は、
[プロジェクト]-[プロパティー]で、Javaのビルドパスを選択。
ライブラリータブを開いて、JARの追加ボタンを押し、
追加したいjarを選択で追加できます。



サンプルソース



こんな感じ。

■Test.jara



import com.fujitsu.shun.ShunConnection;
import com.fujitsu.shun.ShunPreparedStatement;
import com.fujitsu.shun.common.ShunException;

public class Test {
    public static void main(String[] args) {
        ShunConnection con = null;
        ShunPreparedStatement pstmt = null;

        try {
            //ShunConnectionオブジェクト作成
            con = new ShunConnection("192.168.1.1", 33101);

            //データ追加用にShunPreparedStatementオブジェクト作成
            pstmt = con.prepareInsert();

            StringBuffer xmlData = new StringBuffer();

            xmlData.append("<doc>");
            xmlData.append("<title>みんなのPython</title>");
            xmlData.append("<title_kn>ミンナノパイソン</title_kn>");
            xmlData.append("<auther>柴田 淳</auther>");
            xmlData.append("<auther_kn>シバタ アツシ</auther_kn>");
            xmlData.append("<size>A5</size>");
            xmlData.append("<page>464</page>");
            xmlData.append("<price>2940</price>");
            xmlData.append("<ISBN1>4-7973-3665-X</ISBN1>");
            xmlData.append("<ISBN2>978-4-7973-3665-8</ISBN2>");
            xmlData.append("<publisher>ソフトバンククリエイティブ</publisher>");
            xmlData.append("<pub_date>2006年08月</pub_date>");
            xmlData.append("</doc>");

            // データを追加
            pstmt.add(xmlData.toString());

            // データ追加を実行
            pstmt.executeInsert();
            System.out.println("追加終了");
            pstmt.close();
            con.close();

        } catch (ShunException ex) {
            int errorLevel = ex.getErrLevel();
            switch (errorLevel) {
            case ShunException.SHUN_ERROR:
                System.out.println("エラーレベル :SHUN_ERROR");
                break;
            case ShunException.SHUN_ERROR_CONNECTION_TERMINATED:
                System.out.println("エラーレベル :SHUN_ERROR_CONNECTION_TERMINATED");
                break;
            }
            System.out.println("エラーメッセージ:" + ex.getMessage());
            ex.printStackTrace();
        } catch (Exception ex) {
            System.out.println("エラーメッセージ:" + ex.getMessage());
            ex.printStackTrace();
        } finally {
            try {
                if (pstmt != null)
                    pstmt.close();
            } catch (ShunException ex) {
                int errorLevel = ex.getErrLevel();
                switch (errorLevel) {
                case ShunException.SHUN_ERROR:
                    System.out.println("エラーレベル :SHUN_ERROR");
                    break;
                case ShunException.SHUN_ERROR_CONNECTION_TERMINATED:
                    System.out
                            .println("エラーレベル :SHUN_ERROR_CONNECTION_TERMINATED");
                    break;
                }
                System.out.println("エラーメッセージ:" + ex.getMessage());
                ex.printStackTrace();
            }
            try {
                if (con != null)
                    con.close();
            } catch (ShunException ex) {
                int errorLevel = ex.getErrLevel();
                switch (errorLevel) {
                case ShunException.SHUN_ERROR:
                    System.out.println("エラーレベル :SHUN_ERROR");
                    break;
                case ShunException.SHUN_ERROR_CONNECTION_TERMINATED:
                    System.out
                            .println("エラーレベル :SHUN_ERROR_CONNECTION_TERMINATED");
                    break;
                }
                System.out.println("エラーメッセージ:" + ex.getMessage());
                ex.printStackTrace();
            }
        }
    }

}



接続は、サーバーのIPとポート番号だけの模様。
IDやパスワード、システム名はいらないみたいです。



実行時エラーその1



上記のプログラムをShunsakuをインストールしていない端末で動かすと、


Exception in thread "main" java.lang.UnsatisfiedLinkError: no f3hyshun in java.library.path



というエラーが発生すると思います。

Shunsakuをインストールした端末のフォルダ
C:\Program Files\Interstage Shunsaku\Shunsaku\bin
ここにある
f3hyshun.dll
このdllを動作させたい端末のC:\WINDOWS\system32にコピーすると
エラーを回避できます。



実行時エラーその2



実行すると、こんなエラーに遭遇するかもしれません。


com.fujitsu.shun.common.ShunException: shn30606u:
Either the director or the conductor has not been started, or the port number is incorrect.



これは、サーバーのShunsakuが起動していないときに発生します。

サーバーのコマンドプロンプトで、


C:\>shunsysstart -n shunsaku



を実行し、Shunsakuを起動します。

【参考】
Shunsaku の起動・終了(shunsysstart・shunsysstop)


はまりポイントは上記2点でしょうか。
私の環境では、ちゃんと「追加終了」と表示されました。


今度は、登録したデータを検索してみます。




関連記事
  1. 2009/09/29(火) 12:15:31|
  2. Shunsaku
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Shunsaku に登録されているデータで条件に一致する件数を取得する | ホーム | Shunsaku の起動・終了(shunsysstart・shunsysstop)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/156-0ba9655a
この記事にトラックバックする(FC2ブログユーザー)