第1回 Webサイトの構成とJ2EEサーバ
樫山友一
2002/1/25
J2EEアプリケーション・サーバは、商用Webサイトだけでなく、企業内のイントラネットなどにも広く用いられる時代になりました。また、クライアント/サーバで構築されていたいままでのシステムが、順次Webベースのシステムへと置き換えられています。そのために、Visual Basic(以下VB)などでクライアント/サーバシステムを構築していたエンジニアもJ2EEアプリケーション・サーバのシステム開発に携わることが多くなるでしょう。
この連載では、これからJavaベースのWebサイト開発に携わる人に、J2EEアプリケーションサーバをベースにしたWebシステムを、素早く理解していただくための知識を提供していきます。
第1回は、J2EEアプリケーション・サーバとは何か、その中で利用されている技術の概要とシステム構成について解説します。
アプリケーション・サーバを利用したシステム構成 |
JavaをベースとしてWebサイトを開発する場合は、J2EEアプリケーション・サーバを利用するのが一般的です。代表的なJ2EEアプリケーション・サーバを以下に紹介します。
会社名 | アプリケーション・サーバ名 |
BEA Systems | WebLogic Server 6.1 |
IBM | WebSphere Application Server V4.0 |
iPlanet E-Commerce Solutions | iPlanet |
Oracle | Oracle 9iAS |
Macromedia | JRun 3.0 |
HP | HP Application Server 8.0 |
富士通 | INTERSTAGE 4 |
日立製作所 | Cosminexus 4 |
Silverstream | SilverStream Application Server 3.7.3 |
Apacheコンソーシアム | Tomcat |
J2EEアプリケーション・サーバは、Javaで実装されているケースが多く、1つのアプリケーション・サーバで多くのプラットフォームをサポートしています。よって、システム構成を決めるうえで、プラットフォームを柔軟に選択することが可能です。
J2EEアプリケーション・サーバを用いたシステム構成例を図1に示します。VBなどで構築されるクライアント/サーバシステムでは、PCとデータベースサーバによる構成であるのに対して、アプリケーション・サーバがPCとデータベース・サーバの間に入る構成になります。
図1 アプリケーション・サーバを用いたシステム構成 |
クライアント/サーバシステムとアプリケーション・サーバを用いた3階層のシステムでは、システム構成が異なるのと同時に、論理的な構造(役割)も異なります。
アプリケーション・サーバでは論理構造はどう違う? |
では、具体的にどう違うのかを見ていきましょう。図2にクライアント/サーバシステムの論理構造を示します。クライアント/サーバシステムでは、クライアントが多くの機能を持つことになります。実際にユーザーが操作する画面はもとより、データを操作するロジック、また操作されたデータを画面に変換する表示層までがクライアントの機能として備わっています。また、サーバ側も一部ビジネスロジックを担当するケースもあります。
クライアント/サーバシステムでは、サーバ側は、ご存じのとおりデータベースサーバです。よって、一部のビジネスロジックは、データベースの中で動作します。クライアント/サーバシステムは、システム構成が単純で、開発するプログラム自体が単純であれば開発しやすいというメリットがありますが、複雑なビジネスロジックを持ったアプリケーションを開発するような場合には、不利な点もあります。
図2 クライアント/サーバシステムの論理構造 |
特に、クライアントで3つの処理(ユーザーインターフェイス/表示層/ビジネスロジック)を行うために、プログラムの構造を機能ごとに分けて設計することがとても難しくなります。それで、これを解決するために3層構造のシステムが利用されるようになったわけです。アプリケーション・サーバを用いた論理的な構造はどうでしょう。これを図3に示します。
図3 アプリケーション・サーバを用いた3層構造 |
アプリケーション・サーバを用いる場合、一般的に、クライアントではユーザーインターフェイスとしてWebブラウザが用いられます。アプリケーション・サーバでは、クライアントからの要求によりデータベースへアクセスし、必要な処理をして、最終的にHTMLを作成してクライアントのWebブラウザに返します。一見するだけでは、アプリケーション・サーバがクライアント/サーバのクライアント部分と同じくらいの仕事をしていて、プログラムが複雑になってしまうと思われるかもしれません。実は、それをうまく解決しているのがJ2EEのアプリケーション・サーバなのです。
では、J2EEアプリケーション・サーバでは、どのように複雑にならないようにプログラムを構成するのでしょうか。ここで、多くのWebアプリケーションに採用されているMVCモデルを図4に示します。MVCとは、それぞれModel、View、Controllerの略です。
図4 MVCモデル |
J2EEアプリケーション・サーバは、MVCモデルを構築するのに適する仕様を持っています。MVCモデルを説明するまえに、まず、それらの仕様がどのようなものであるかを説明しましょう。
<J2EEアプリケーション・サーバで利用されている技術> JSP(JavaServer Page) HTMLの中にJavaのコードを埋め込み、このコードによってHTMLを生成することができます。静的なHTMLと、Webブラウザからのリクエストに応じて変化する動的なHTMLを合わせて記述することができます。これは、マイクロソフトの仕様であるASP(Active Server Page)に当たるものであると考えればよいでしょう。 Servlet EJB(
Enterprise Java Beans) Session EJB(Session Bean) Message Driven EJB(Message Driven Bean) |
MVCの役割はどうなっているか? |
では、実際にJ2EEアプリケーション・サーバの中ではどのような動作をするのでしょうか。図5にデータの書き込みを行う場合の一般的な動作を示します。
Viewは、2つの部分に分けて構成されています。これは、画面からの入力チェックを行う部分と結果を表示する部分の役割を分担させ、変更に強くするためです。最初に受け取ったWebブラウザからのリクエストをControllerに渡すまでを最初のView部が担当して、結果を受け取って結果の画面を表示する部分を2つ目のView部が行います。Controllerは、リクエストを受け取るとどのモデルを用いて処理をするのか、どういった順番で処理をするのかというロジックを持っています。よって、いくつかのModelを用いて作業を行います。
図5 MVCの一般的な動作 |
このように、VBなどを用いてクライアント/サーバでシステムを開発するのに比べて、どの機能をどの部分に持たせるかが明確であり、分担作業にも適しています。また、EJBはコンポーネントであるために再利用も可能となります。実際、汎用的にソフトウェア部品として使えるEJBコンポーネントを流通させる試みも始まっています(コンポーネントスクエア、cBankなど)。
データベースへのアクセスはJDBCで行う |
VBでは、ODBCを用いてデータベースへのアクセスを行いますが、Javaの仕様ではJDBC(Java DataBase Connectivity)を用いてデータベースへのアクセスを行います。
クライアント/サーバシステムでは、クライアントとデータベース・サーバで1対1の接続を行いますが、アプリケーション・サーバではアプリケーション・サーバからデータベース・サーバへ複数の接続を行います。
図6 クライアント/サーバシステムでのデータベース接続 |
図7 アプリケーション・サーバとデータベースの接続 |
J2EEアプリケーション・サーバを用いる場合は、まずデータベースへの接続をコネクションプールとして、アプリケーション・サーバに登録することになります。このコネクションプールは、アプリケーション・サーバの起動時にデータベースへの接続を行い、必要と思われる接続数を確保しておくものです。プログラムからは、必要に応じてコネクションプールを取り出して、データベースへのアクセスを行います。
コネクションプールを用いない場合は、データベースの利用時にデータベースへの接続を行うことになります。データベースの接続は非常にコストが高い(時間がかかる)ために、コネクションプールは、パフォーマンスの面からも効率がいい手段といえるのです。コネクションプールの設定は、アプリケーション・サーバごとに異なるので、それぞれのマニュアルを参照して設定することになります。
また、コネクションプールの取り出しは、JSP、Servlet、EJBそれぞれの部分から行うことが可能です。
◆
今回は、J2EEアプリケーション・サーバとは何か、その中で利用されている技術の概要とシステム構成について紹介しました。次回は、JavaベースのWebサイトの開発プロジェクトの始めの段階で決めておくべき項目について解説します。
プロフィール |
樫山友一(かしやま ゆういち) 大手電機メーカー研究所でオブジェクト指向によるシステム開発に従事する。1996年よりJavaへの取り組みをはじめ、J2EEアプリケーションサーバを活用したWebシステム構築のコンサルタントとして多数のプロジェクトを手掛ける。 2001年3月にイーズ・コミュニケーションズ株式会社の設立に参加し、最高技術責任者に就任。 著書に「わかりやすいUML入門」、「Webサイトがわかる本」(いずれもオーム社)がある。 |
Java Solution全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|