2009年5月16日土曜日

Java で Berkely DB XML を操作する 第1回

Java で Berkely DB XML を扱う環境が整ったので、チュートリアル「Getting Started with Berkeley DB XML for Java(日本語訳)」を基にJavaで作ってみる。

  1. プロジェクトの作成
    dbxml_gettingstart」という名前でJavaのプロジェクトを新規作成する。
  2. ライブラリの追加
    以下のJar ファイルを追加する。
    • /opt/oracle/dbxml-2.4.16/lib/dbxml.jar
    • /opt/oracle/dbxml-2.4.16/lib/db.jar
  3. DBD XML の例外処理のソースを記述する。
    /*
    * File Name :Chapter2_1.java
    * Created on :2009/05/15, 22:13:25

    * Copyright(c) Exacteye.com All Rights Reserved.
    */

    package dbxml.chapter2;

    import com.sleepycat.dbxml.XmlContainer;
    import com.sleepycat.dbxml.XmlException;
    import com.sleepycat.dbxml.XmlManager;

    /**
    DBXML 例外の処理
    * @author obiwan
    */
    public class Chapter2_1 {

    public static void main(String[] args) throws Throwable{
    XmlContainer myConatiner = null;
    XmlManager myManager = null;
    String theContainer = "container.dbxml";

    // XmlConatiner と XmlManager のオープン
    try {
    myManager = new XmlManager();
    myConatiner = myManager.openContainer(theContainer);
    } catch (XmlException ex) {
    // ここで例外処理を実装する。
    ex.printStackTrace();
    }
    }
    }

  4. 実行させる。ソース上にある、container.dbxml は作成していないのでエラーが出るはず。
    run:
    Exception in thread "main" java.lang.UnsatisfiedLinkError: no db_java-4.6 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1030)
    at com.sleepycat.db.internal.db_javaJNI.(db_javaJNI.java:52)
    at com.sleepycat.db.internal.DbEnv.(DbEnv.java:264)
    at com.sleepycat.dbxml.XmlManager.(XmlManager.java:78)
    at com.sleepycat.dbxml.XmlManager.(XmlManager.java:102)
    at dbxml.chapter2.Chapter2_1.main(Chapter2_1.java:27)
    Java Result: 1
    構築成功 (合計時間: 1 秒)
    java.lang.UnsatisfiedLinkError: no db_java-4.6 in java.library.path」って違うエラーが出た。検索したら、「Thread: java.lang.UnsatisfiedLinkError on Mac OS X with 2.4.16」が参考になった。
    プロジェクトのプロパティを表示させ、VMオプションに「-Djava.library.path=/opt/oracle/dbxml-2.4.16/lib」を追加した。


  5. 再度、実行。
    run:
    com.sleepycat.dbxml.XmlException: Error: container.dbxml: container file not found, or not a container, errcode = CONTAINER_NOT_FOUND
    at com.sleepycat.dbxml.dbxml_javaJNI.XmlManager_openContainer__SWIG_2(Native Method)
    at com.sleepycat.dbxml.XmlManager.openContainer(XmlManager.java:585)
    at com.sleepycat.dbxml.XmlManager.openContainer(XmlManager.java:218)
    at com.sleepycat.dbxml.XmlManager.openContainer(XmlManager.java:160)
    at dbxml.chapter2.Chapter2_1.main(Chapter2_1.java:28)
    構築成功 (合計時間: 1 秒)

    今度は想定していた、「container.dbxml」が無い例外が発生する。

0 コメント:

コメントを投稿