翻訳者:中川@日本アルトマークさん |
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ファイルを修正します。
cd /usr/prj/simpledb/simpledb/presentationWelcome.htmlファイルを編集します。
<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
テーブル#1:テーブル名 = objectid
フィールド#1:フィールド名 = next, データ型 = 数値型, 主キーを指定
objectidテーブルに1行追加し、nextフィールドに1をセットします。
テーブル#2:テーブル名 = person
フィールド#1:フィールド名 = OId, データ型 = 数値型, 主キーを指定
フィールド#2:フィールド名 = version, データ型 = 数値型
フィールド#3:フィールド名 = name, データ型 = テキスト型
personテーブルに1行追加し、nameフィールドに"simpledb works!"を、oidに1を、versionに1を、それぞれセットします。
OIdテーブルに1行追加し、nextフィールドに2をセットします。
※DODSは、"data"ディレクトリが既に存在していると正しく動作しません。
rm -rf /usr/prj/simpledb/simpledb/dataとするとディレクトリを削除できます。
dods <enter>
dods <enter>
左下ウィンドウの<root>パッケージノードを選択します。
[Edit] → [Package] を選択
"simpledb"に名前を変更(引用符は不要)
<OK>ボタンを押します。
左下ウィンドウの<simpledb>パッケージノードを選択します。
[Insert] → [Package] を選択
nameフィールドに新たに"data"と入力(引用符は不要)
<OK>ボタンを押します。
左下ウィンドウの<data>パッケージノードを選択します。
[Insert] → [Data Object] を選択
nameフィールドに新たに"Person"と入力(引用符は不要)
Databaseタブを選択
db Table Nameフィールドに"person"と入力(引用符は不要)
<OK>ボタンを押します。
左下ウィンドウの<Person>データオブジェクトノードを選択します。
[Insert] → [Attribute] を選択
nameフィールドに"name"と入力(引用符は不要)
Databaseタブを選択し、"Can be queried"にチェックを入れます。
<OK>ボタンを押します。
[File] → [Save As]を選択
/usr/prj/simpledbディレクトリを開き、File nameフィールドをsimpledb.domlに変更します。
<OK>ボタンを押します。
[File] → [Build All]を選択
/usr/prj/simpledb/simpledbディレクトリを開き、File nameフィールドを"data"に変更します(引用符は不要)。
<Re/Create Directory>ボタンを押します。
ビルド進行状況を示すDODSの出力を表示するウィンドウがポップアップするでしょう。
<Close>ボタンを押すと、"DODS BUILD COMPLETE"と終了メッセージが表示されます。
/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); } }
ファイルを保存します。
以下テキストのBEGIN_APPENDからEND_APPENDの間を/usr/prj/simpledb/simpledb/simpledb.conf
ファイルの後に追加します。
#----------------------------------------------------------------------------- # 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
アプリケーションをビルドします。
cd /usr/prj/simpledb make
アプリケーションを実行します。
cd output ./start
アプリケーションをテストします。
http://localhost:9000/Welcome.poを読み込みます。
Enhydraサーバを止めます。
Ctl-C
あなたがこれらを全て正しく行ったのなら、newappが生成したアプリケーションにデータベースとDODSの出力が統合されて動作する簡易Enhydraアプリケーションを手中に納めているでしょう。おめでとう!!!
G.W.
最後の改訂: Peter Darrah, peter@lutris.com, March 23, 2000