翻訳者:中川@日本アルトマークさん

簡易データベース処理を可能にするEnhydraアプリケーション作成

Author: G.W. Estep II

Author's Email: GW.Estep@riva.com

Authors Website: http://www.riva.com/
 

概要

私のEnhydraについての初めての経験は、他の人達の様にはいかず大変に欲求不満の募るものでした。私は方々に散らばったドキュメントを発見しましたが、そこには完成した入門用の例題はありませんでした。DODSプロダクトは完全ではなく、それゆえ文書も不完全であることを私は理解しました。

そこで、"newapp"とDODSとXMLCを使った例題として、簡単なデータベースに接続するEnhydraアプリケーション作成を行おうとある日考え、それは3日程度かけて私のラップトップ上で実行できました(途中でEnhydraの一部が必要です)。私はデータベースの指導者でもjavaの指導者もありませんがどちらの面でも多少の働きはできたものと少しは期待しています。私の会社には他にも同じような経験をした者がいるし、私自身がそうして解決してきたのだから。

私の簡単な要件は以下のとおり。

進行のために以下の手続きが必要です。


プロジェクトディレクトリのセットアップとテスト

あなたのルートプロジェクトディレクトリを作成したいディレクトリに移動します。ここでは、そのディレクトリを /usr/prj として、以後例題を通してこれを使います。異なるディレクトリをあなたが選択するなら、その選択のもとにすべての /usr/prj/... という表記を置き換えてください。

cd /usr/prj

プロジェクトツリーを作成するためEnhydraのnewappコマンドを実行します。

newapp simpledb

新規Enhydraアプリケーションをビルドします。

cd /usr/prj/simpledb
make

新規Enhydraアプリケーションを実行します。

cd /usr/prj/simpledb/output
./start

新規Enhydraアプリケーションをテストします。
ブラウザで以下のURLを読み込みます。最初にそのページを読み込む際、少し(1分かそれ以上)時間がかかりますが辛抱します。

http://localhost:9000/Welcome.po

Enhydraサーバを止めます。

Ctl-C


データベースへの簡単な参照を含む為の、デフォルトHTMLプレゼンテーションファイル修正

HTMLファイルを修正します。

cd /usr/prj/simpledb/simpledb/presentation
Welcome.htmlファイルを編集します。
</BODY>タグの直前に、以下の行を挿入します。

<P><SPAN ID="name">このテキストはこのアプリケーションが完全に動作した時に置き換えられるでしょう。</SPAN><P>

ファイルを保存します。

新規Enhydraアプリケーションを再びビルドします。

cd /usr/prj/simpledb    

make

新規Enhydraアプリケーションを再び実行します。

cd /usr/prj/simpledb/output

./start

新規Enhydraアプリケーションを再びテストします。
ブラウザで以下のURLを読み込みます。最初にそのページを読み込む際、少し(1分かそれ以上)時間がかかりますが辛抱します。

http://localhost:9000/Welcome.po
ページのいちばん下に、HTMLファイル内に入力した行が見えるはずです。
ここでは、まだデータベースへの参照は行っていません。

Enhydraサーバを止めます。

Ctl-C


Enhydraで動作させるMS Accessデータベースの作成

  1. Accessを開きます。
  2. "空のデータベース"オプションを選択します。
  3. <OK>ボタンを押します。
  4. /usr/prj/simpledb/simpledb.mdb のファイル名で保存します。
  5. 以下のように2つのテーブルを作成します。
  6. Accessを終了します。

simpledbへのODBCデータソースを構成する

  1. [スタート]メニュー → [設定(S)] → [コントロール パネル(C)] → [ODBC データソース] を開きます。
  2. "ユーザー DSN"タブを選択します。
  3. [追加(D)...]ボタンを押します。
  4. "Microsoft Access Driver"を選択します。
  5. [完了]ボタンを押します。
  6. "データ ソース名(N)"項目に"simpledb"と入力します(引用符は不要)
  7. [選択(S)...]ボタンを押します。
  8. 先ほど作成したsimpledb.mdbファイルを表示させて、それを選択します。
  9. [OK]ボタンを押します。
  10. [OK]ボタンを押して、ODBCデータソース アドミニストレータを閉じます。

プロジェクトのデータオブジェクトを作成するためDODSを実行

※DODSは、"data"ディレクトリが既に存在していると正しく動作しません。

rm -rf /usr/prj/simpledb/simpledb/data
とするとディレクトリを削除できます。


データベースからいくつかのデータを取り出し、HTMLファイル中のフィールドとそれを置き換える為のWelcome.javaファイルの修正

/usr/prj/simpledb/simpledb/presentation/Welcome.javaファイルを編集します。

以下の赤字のコードをWelcome.javaファイルに挿入する事により、DODSが生成したデータオブジェクトパッケージへのアクセスを追加します。

package simpledb.presentation;

import java.util.Date;
import com.lutris.xml.xmlc.*;
import com.lutris.appserver.server.httpPresentation.*;

import simpledb.data.*;
import com.lutris.dods.builder.generator.query.*;

public class Welcome implements HttpPresentation {

    public void run(HttpPresentationComms comms) 
        throws HttpPresentationException,
        NonUniqueQueryException, DataObjectException  {

        String now = new Date().toString();
        WelcomeHTML welcome = 
                (WelcomeHTML)comms.xmlcFactory.create(WelcomeHTML.class);
        welcome.setTextTime(now);
    
        PersonDO person;
        PersonQuery pquery = new PersonQuery();
        person = pquery.getNextDO();
        welcome.setTextName( person.getName() );
                   
        comms.response.writeHTML(welcome);
    }
}

ファイルを保存します。


simpledb.confファイルにデータベース要素を追加

以下テキストのBEGIN_APPENDからEND_APPENDの間を/usr/prj/simpledb/simpledb/simpledb.confファイルの後に追加します。

BEGIN_APPEND
#-----------------------------------------------------------------------------
#         Database Manager Configuration
#-----------------------------------------------------------------------------

#

# The databases that are used by CSAM. Each of these databases
# has configuration parameters set under DatabaseManager.DB."databaseName".
#

DatabaseManager.Databases[] = "simpledb"

#
# The default database used in this application.
#

DatabaseManager.DefaultDatabase = "simpledb"

#
# Turn on/off debugging for transactions or queries. Valid values
# are "true" or "false".
#

DatabaseManager.Debug = "false"

#
# The type of database. Normally this is "Standard".
#

DatabaseManager.DB.simpledb.ClassType = "Standard"

#
# The jdbc driver to use. 
#

DatabaseManager.DB.simpledb.JdbcDriver = "sun.jdbc.odbc.JdbcOdbcDriver"

#
# Database url.
#

DatabaseManager.DB.simpledb.Connection.Url = "jdbc:odbc:simpledb"

#
# Database user name.  All connection are allocated by this user.
#

DatabaseManager.DB.simpledb.Connection.User = "Admin"

#
# Database user password. Microsoft Access default is "Admin".
# The default password is blank.

DatabaseManager.DB.simpledb.Connection.Password = ""

#
# The maximum number of connections that a connection
# pool will hold.  If set to zero, then connections
# are allocated indefinitly or until the database
# refuses to allocate any new connections.
#

DatabaseManager.DB.simpledb.Connection.MaxPoolSize = 30

#
# Maximum amount of time that a thread will wait for
# a connection from the connection pool before an
# exception is thrown. This will prevent possible dead
# locks. The time out is in milliseconds. If the
# time out is zero, the allocation of connections
# will wait indefinitely.
#

DatabaseManager.DB.simpledb.Connection.AllocationTimeout = 10000

#
# Used to log database (SQL) activity.
#

DatabaseManager.DB.simpledb.Connection.Logging = false

#
# The number of object identifiers that are allocated
# as a group and held in memory.  These identifiers
# are assigned to new data objects that are inserted
# into the database.  
#

DatabaseManager.DB.simpledb.ObjectId.CacheSize = 20

DatabaseManager.DB.simpledb.ObjectId.MinValue = 1
END_APPEND

再びアプリケーションのビルド,実行,テストを行う

アプリケーションをビルドします。

cd /usr/prj/simpledb
make

アプリケーションを実行します。

cd output
./start

アプリケーションをテストします。

http://localhost:9000/Welcome.po
を読み込みます。
動作している("simpledb works!")というメッセージとともにこのアプリケーションが動作する時、そこにあった元のテキストが言及していた様に、テキストが置き換えられたのを見ることができるはずです。

Enhydraサーバを止めます。

Ctl-C


あなたがこれらを全て正しく行ったのなら、newappが生成したアプリケーションにデータベースとDODSの出力が統合されて動作する簡易Enhydraアプリケーションを手中に納めているでしょう。おめでとう!!!

G.W.

最後の改訂: Peter Darrah, peter@lutris.com, March 23, 2000