EnhydraDocumentationへ】

翻訳者:TAKAHIDE YOSHIDA Yoshida_Takahide@ns.icc.ogis-ri.co.jp

エンジニアのために

アンディー・ジョン

Enhydraとは

EnhydraはWebアプリケーション(実際に何かをするような動的なコンテンツをもつWebサイト)を作ろうとしているエンジニアにとって有用です。またWebアプリケーションを作成することに興味がない人でさえ、このServlet技術にかなりの興味を示すのではないでしょうか。

Enhydraは主要な3片から構成されています:

フレームワークは抽象的なアプリケーションです。アプリケーションを作成するために実際の内容を与えてやらなければなりません。貴方のオーバーヘッドのほとんどをフレームワークが処理するので、貴方はどんなページが必要か、ページをどのようにみせるか、そしてページ間の情報の流れなどを決めることに専念できます。

(Enhydraアプリケーションを作成するために、貴方が何を書かなければいけないかと言う観点から)フレームワークに関するもっと多くの情報を得るために、Enhydraアプリケーションドキュメンテーション を見てください。

ツールはコンパイル時に利用されます。

GNU MakeはJavaに特化されたメークルールを使用して実行されます。C言語を使っていた日のころのように"make"とタイプすることで、結果としてソースツリーとなります。(もっと正しく言えば.oファイル、.aファイルは.soファイル、そして実行ファイルが作られるというよりは,始めに.classファイルが作られてから、jarファイルが作られます。)

いくつかのURLは手で書かれたクラスによって処理されますが、大部分は(動的なHTMLをもつもの)はEnhydra Joltで作成されます。これはJavaとHTMLを結合するコンパイラーです。結果として作成されたファイルはJavaオブジェクトへとコンパイルされ、それで仕事のほとんどはコンパイル時に行われます。

実行時の出力はとても高速です。なぜなら毎回、HTMLを構文解析する必要がないからです。後述のXMLCはJavaからHTMLを生成するための別の方法です。XMLCは動的なXMLコンテンツを生成するために利用することが可能です。(HTMLはXMLの単なる類例です。)

さらに後述のDODSを使えば、複合データオブジェクトをグラフィカルに作成できます。DODSはデータベーステーブルを作るためのSQLコードとテーブルをget/set/searchするためのJavaクラスを生成します。

結果として生じるEnhydraアプリケーションはjarファイル(Servlet)と設定ファイルから構成されます。

もし貴方がApacheとJServをもっているなら、簡単に作成したアプリケーションをそれらの中で実行することができます。あるいはどんなServlet実行可能なWebサーバでも実行できます。もし貴方がまだServletサーバを持っていないなら、MultiServerを使用することもできます。またはEnhydraアプリケーションに興味がないなら、Servletを実行するためにMultiServerを使うことができます。MultiServerはServletやアプリケーションを追加/削除/開始/停止するためのグラフィカルな管理者プログラムを持っています。

さまざまな方法でServletをWebにつなぐことができます。または1つのポートを多数のServletに接続することができます。そしてそれは,Enhydraアプリケーションと同様、Servletに取り込むことができる組込みデバッガを持っています。デバッガはリアルタイムでServletに対するリクエストを表示できます。デバッガを使えば、各リクエストは調べられるかもしれません。ブラウザからのリクエストの各プロパティ、ServletがServlet APIを実行するServlet呼出するたびのトレース、テキストとHTML結果に対する出力の複製を含むServletのレスポンスのプロパティ

例としてスクリーンショット を見てください。

MultiServerのデバッグ能力はスタンドアロンServletとしても利用可能です。これでどのようなサーバでどのようなServletもデバッグができます。Enhydraアプリケーションをデバッグしているなら、リクエスト前と後のセッションデータの内容のような、より詳細なデバッグが可能です。結局のところ、デバッガはServlet開発において非常に有効です。

Enhydraは誰にとって有用ですか?

私たちは3つのカテゴリーのユーザを想定しましょう:

Enhydraを試みる方法-10分のツアー

ここまではWebの軌跡を見てきました。すぐにでもドキュメントの終り部分に移って、ソースコードをダウンロードしたい気持は分かりますが、私を信用してください。:)

まずはこれを最初に試してください。ソースコードはずっとそこで貴方を待ってますよ :)

(これはアウトラインです。インストラクションが必要なら、ダウンロードセクションを見てください。)

 

  1. (Windowsのみ)gnuツールをインストールします。これでWindowsがUnixのように使うことができます。
  2. Enhydraのコンパイル済版をダウンロードしてください。
  3. 設定スクリプトを実行してください。
  4. ブラウザでデモをチェックしてください。
  5. "newapp"プログラムで新しいアプリケーションを作成してください。
  6. 作成したアプリケーションをコンパイルしてください。
  7. Webブラウザでチェックしてください。
  8. ヒットカウンターを加えるために若干のコードをコメントを外してください。
  9. アプリケーションを再コンパイルしてください。
  10. ヒットカウンターを加えるために若干のコードをコメントを外してください。
  11. アプリケーションを再コンパイルしてください。
  12. 再度アプリケーションを実行してください。
  13. 再びブラウザでそのページにアクセスして、ヒットカウンターを見てください。

はい。これのすべては10分で行えます。これらを行うことはEnhydraへの最も良いイントロダクションとなるでしょう。完全なインストラクションが必要なら、プラットホームにあったダウンロードセクションを見てください。

単純なサンプル・シナリオ

ここに「どのようにEnhydraを使うことができたか」という実際の例があります。

これはEnhydraの日々のある1日を示しただけで、Enhydraがどれほど優れているかを示しているわけではありません。:データを共有し、内部処理を実行する多くのページをもっている時

私はあるテクノロジー会社のエンジニアです。作業実績をタイムシートフォームに書き込まなければななりません。その作業は大変苦痛です。そしてオフィースマネージャはそれらを回収して、入力しなければなりません。

それで私はこの作業がイントラネット上の単純なアプリケーションとしてぴったりくると思いました。 私はEnhydraを使ってタイムシートアプリケーションを作りました。単純化のため、従業員のリスト(名前/パスワード)を現在のプロジェクトのリストと同様に、アプリケーション設定ファイルに保持しました。

http基本認証セキュリティーを使うことにしました。というのは簡単に実現できるからです。

将来的には、これがより細かいコントロールができるようにカスタムログイン画面に置き換えられるでしょう。基本認証はポストのみのデータにのため受け入れやすいからです。

Enhydraでは、基本認証はある種の例外をスローすることにより処理されるので、それをサポートするために必要なページを準備する必要はないのです。つまり私がただ3つのURLをサポートするだけで済むということです。Form.po,Submit.po,Done.html

ユーザがForm.poにアクセスした時、タイムシートが見えます。タイムシートは大きなHTMLフォームで、設定ファイルから起動時に読み込まれた部門リストから作られます。それぞれのプロジェクトに対して、タイムシートは週の各曜日に対応した7つの入力フィールドを持ちます。

一番したには次のURL Submit.poにデータを送信するサブミットボタンがあります。私はプレースフォルダー形式の見栄えの良いページを作るためにHTMLエディターを使います。ソースツリーの適切な場所にSubmit.jhtmlとして保存しました。そしてそれをタグをつけ,Javaコードを作成しました。メソッドの1つは設定ファイルからデータを読み、HTMLをページに加えます。HTMLのボディーに私はJavaメソッドをコールでフォームを置き換えました。(再びタグを使っています)

私はSubmit.po対してのみJavaの仕事をする必要があるだけだったので、それで手で(クラスSubmit.java)を書くことにしました。このクラスはCGI入力パラメータの長いリストを読み込んで空でない行を見付けます。そして特別なディレクトリにカンマ区切りのファイルとして書き出します。

そして、ある例外をスローすることで、Done.htmlにリダイレクトします。私はこのようにな方法でアプリケーションを作ることを好みます。すべての決定/処理は1つのクラスで行われ、次のページへリダイレクトするか、もしくは入力が正常でなければ戻ります。しかし、これらの処理フローを設計するための方法はたくさんあるでしょう。

私達のエクセルを使っているオフィースマネージャは自分のPCにマウントされた特別なディレクトリを持っています。オフィースマネージャは単にファイルをダブルクリックして、エクセルを起動して、まるで魔法のように使うことができます。

最後のページ Done.htmlはユーザのデータが問題なく提出されたとうことをユーザに通知します。

この単純なアプリケーションにおいて、このページは静的なHTMLページである。私はそのページをアプリケーションに追加しました。それはイメージ通りに静的なページとして動きます。これで、私のアプリケーションは完成です。

私はこのアプリケーションをコンパイルして、Servletと設定ファイルを含むJarファイルにしました。

私は会社のWebサーバに設置したくなかったので、私自身のサーバ上でこのアプリケーションを動かしました。そこで私はMultiServerを使いました。

私はこのアプリケーションについて部署全体に話をした。部署の全員がこのアプリケーションを気に入ってくれました。このアプリケーションは多くの時間と面度な作業を軽減してくれました。

しばらくして、このアプリケーションに新しい支払カテゴリを追加する必要が出てきました。そこで私はMultiServerのグラフィカルな管理プログラムに接続して、ログインした。そして、誰もアプリケーションにログインしなくなるまで待ち、そしてアプリケーションを停止しました。そして、"Modify"をクリックして修正を始めました。

このように、遠隔からアプリケーションの設定ファイルの内容が修正できます。 私は新しいカテゴリを追加して、設定ファイルを保存し、アプリケーションを再起動しました。

次の週、私達のある営業マンが出張することになりました。しかし彼は出張先からタイムシートアプリケーションを使うこと望みました。それで私は会社のメインWebサーバにWAI接続を加えました。これは現在のHTTPポートに追加しておこないました。この地点で社内/社外から社員がこのアプリケーションに接続できるようになりました。

私のアプリケーションは大きな成功を納めました。

私はさらに保存機能と部分的なタイムシート修復機能を加えました。LDAPデータベースで社員情報を管理しているので、私はJDAPを使ってユーザ名とパスワードをLDAPに対して有効となるようにしました。

サブパッケージでデータオブジェクトに全てのデータアクセスコードをいれているので、新しい認証方法に切替えても、残りのプログラムに影響を与えませんでした。

私のアプリケーションは部署にとっても不可欠となったので、情報部門が関与するすることになりました。彼らは部署の公式Webサイトにこのアプリケーションを設置することを考えました。部署の公式サイトは安全に保たれ、バックアップされ、監視されています。

彼らは部署のWebサイトにApacheを使って稼働させています。それでApacheにJServモジュール(これでServletを実行できる)を追加して、私のアプリケーションを追加しました。(ApacheにとってEnhydraアプリケーションは単なるServletである。)

私の上司は私がどれぐらい素晴らしいか悟り、私は昇進と昇級を得ました。

* あなたのマイル数は変わるかもしれません。