ナビゲーションをスキップ

WebLogic Server Web アプリケーション、サーブレット、JSP の開発

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

Web アプリケーションの作成とコンフィグレーション

以下の節では、Web アプリケーション リソースを作成およびコンフィグレーションする方法について説明します。

 


ディレクトリ構造

Web アプリケーションは、J2EE 仕様で定義されている標準ディレクトリ構造を採用しています。Web アプリケーションは、このディレクトリ構造を使用するファイルの集合としてデプロイする (展開ディレクトリ形式) か、WAR ファイルと呼ばれるアーカイブ ファイルとしてデプロイできます。展開された Web アプリケーションは、エンタープライズ アプリケーションの一部としてパッケージ化およびデプロイすることをお勧めします。これは、アプリケーションの移行、追加、および変更を容易に行うことができるベスト プラクティスです。また、Web アプリケーションをエンタープライズ アプリケーションの一部としてパッケージ化することにより、分割開発ディレクトリ構造を活用できます。この構造には、従来の単一ディレクトリ構造に比べて多くの利点があります。

WEB-INF ディレクトリには、Web アプリケーションのデプロイメント記述子 (web.xml および weblogic.xml) と、コンパイル済み Java クラスおよびライブラリ JAR ファイルを格納するための 2 つのサブディレクトリが格納されます。サブディレクトリの名前は classes と lib です。JSP taglib は、ステージング ディレクトリの最上位の WEB-INF ディレクトリに格納されます。Java クラスには、サーブレット、ヘルパー クラス、およびコンパイル済みの JSP (必要に応じて) などがあります。

Web アプリケーションに属するすべてのサーブレット、クラス、静的ファイル、およびその他のリソースは、ディレクトリ階層に基づいて配置されます。

DefaultWebApp/

このディレクトリ (Web アプリケーションのドキュメント ルート) には、HTML ファイルなどの静的ファイルと JSP ファイルを配置します。WebLogic Server のデフォルトでは、このディレクトリの名前は DefaultWebApp で、user_domains/mydomain/applications の下に置かれます。

(Web アプリケーションをデフォルトの Web アプリケーションにするには、weblogic.xml デプロイメント記述子ファイルで context-root を "/" に設定する必要があります)

DefaultWebApp/WEB-INF/web.xml

Web アプリケーションをコンフィグレーションする Web アプリケーション デプロイメント記述子です。

DefaultWebApp/WEB-INF/weblogic.xml

WebLogic 固有のデプロイメント記述子ファイルでは、web.xml ファイルで指定されたリソースが WebLogic Server のどのリソースにどのようにマップされるのかを定義します。またこのファイルは、JSP および HTTP セッション属性を定義するために使用されます。

DefaultWebApp/WEB-INF/classes

HTTP サーブレットやユーティリティ クラスなどのサーバサイド クラスが格納されます。

DefaultWebApp/WEB-INF/lib

JSP タグ ライブラリなど、Web アプリケーションによって使用される JAR ファイルが格納されます。

ステージングが終了したら、jar コマンドを使用してディレクトリ全体を WAR ファイルにまとめます。WAR ファイルは、それだけでデプロイすることも、他の Web アプリケーション、EJB コンポーネント、WebLogic Server コンポーネントといった他のアプリケーション コンポーネントと一緒にエンタープライズ アプリケーションの一部としてデプロイする (推奨) こともできます。

JSP ページと HTTP サーブレットは、WebLogic Server で使用可能なすべてのサービスと API にアクセスできます。これらのサービスには、EJB、Java Database Connectivity (JDBC) を介したデータベース接続、JavaMessaging Service (JMS)、XML などがあります。

WEB-INF の情報へのアクセス

WEB-INF ディレクトリは、アプリケーションのパブリック ドキュメント ツリーの一部ではありません。WEB-INF ディレクトリ内には、コンテナによってクライアントへ直接提供されるファイルはありません。ただし、WEB-INF ディレクトリのコンテンツは、ServletContext に対する getResource および getResourceAsStream() メソッド呼び出しを使用するサーブレット コードから認識できる、あるいは RequestDispatcher を使用してインクルード/転送を行います。したがって、サーブレット コードから、Web クライアントに直接公開されるべきでないアプリケーション固有のコンフィグレーション情報へのアクセスを必要とする場合、アプリケーション開発者はこれをこのディレクトリの下に置くことができます。

リクエストは、大文字と小文字を区別してリソース マッピングと照合されるので、たとえば「/WEB-INF/foo」、「/WEb-iNf/foo」に対するクライアント リクエストの結果として、/WEB-INF の下に置かれた Web アプリケーションのコンテンツや、何らかの形のそのディレクトリ リストが返されることはありません。

ディレクトリ構造の例

次に Web アプリケーションのディレクトリ構造の例を示します。ここでは、myWebApp/ がステージング ディレクトリです。

コード リスト 3-1 Web アプリケーションのディレクトリ構造

myWebApp/
	WEB-INF/
		web.xml
		weblogic.xml
		lib/
			MyLib.jar
		classes/
			MyPackage/
				MyServlet.class
	index.html
	index.jsp

 


Web アプリケーションの作成とコンフィグレーションの主な手順

ここでは、分割開発ディレクトリ構造を使用し、エンタープライズ アプリケーションの一部として WebLogic Server アプリケーションを作成する際の手順を示します。『WebLogic Server アプリケーションの開発』の「分割開発ディレクトリ環境の作成」、「分割開発ディレクトリでのアプリケーションのビルド」、および「分割開発ディレクトリからのデプロイメントとパッケージ化」を参照してください。

WebLogic Server に付属の開発者向けツールを使用して Web アプリケーションを作成およびコンフィグレーションできます。「Web アプリケーション開発者向けツール」を参照してください。

手順 1 : エンタープライズ アプリケーション ラッパーの作成

  1. ルート EAR ファイルのディレクトリを作成します。
  2. \src\myEAR\

  3. 次のように環境を設定します。
  4. 次のように、\src\myEAR\ ディレクトリにエンタープライズ アプリケーションをパッケージ化します。
    1. エンタープライズ アプリケーション記述子 (application.xml および weblogic-application.xml) を META-INF\ ディレクトリに入れます。詳細については、『WebLogic Server アプリケーションの開発』の「エンタープライズ アプリケーションのデプロイメント記述子の要素」を参照してください。
    2. 必要に応じてデプロイメント記述子を編集し、エンタープライズ アプリケーションの動作を微調整します。「Web アプリケーション開発者向けツール」を参照してください。
    3. 次の場所にエンタープライズ アプリケーションの .jar ファイルを置きます。
    4. \src\myEAR\APP-INF\lib\

手順 2 : Web アプリケーションの作成

  1. EAR ファイルのルートに Web アプリケーションのディレクトリを作成します。
  2. \src\myEAR\myWebApp

  3. 次のように、\src\myEAR\myWebApp\ ディレクトリに Web アプリケーションをパッケージ化します。
    1. Web アプリケーション記述子 (web.xml および weblogic.xml) を \src\myEAR\myWebApp\WEB-INF\ ディレクトリに入れます。「weblogic.xml デプロイメント記述子の要素」を参照してください。
    2. 必要に応じてデプロイメント記述子を編集し、エンタープライズ アプリケーションの動作を微調整します。「Web アプリケーション開発者向けツール」を参照してください。
    3. すべての HTML ファイル、JSP、イメージ、その他 Web アプリケーションによって参照されるあらゆるファイルを、Web アプリケーションのルートに置きます。
    4. \src\myEAR\myWebApp\images\myimage.jpg

      \src\myEAR\myWebApp\login.jsp

      \src\myEAR\myWebApp\index.html

    5. 次の場所に、Web アプリケーションの Java ソース ファイル (サーブレット、タグ ライブラリ、サーブレットまたはタグ ライブラリによって参照されるその他のクラス) を置きます。
    6. \src\myEAR\myWebApp\WEB-INF\src\

手順 3 : build.xml ファイルの作成

ディレクトリ構造を設定したら、weblogic.BuildXMLGen ユーティリティを使用して build.xml ファイルを作成します。

手順 4 : 分割開発ディレクトリ構造における Ant タスクの実行

  1. wlcompile Ant タスクを実行して javac コンパイラを呼び出します。これにより、Web アプリケーションの Java コンポーネントが出力ディレクトリ /build/myEAR/WEB-INF/classes にコンパイルされます。
  2. wlappc Ant タスクを実行して appc コンパイラを起動します。これにより、デプロイメントのための JSP およびコンテナ固有の EJB クラスがすべてコンパイルされます。
  3. wldeploy Ant タスクを実行して、Web アプリケーションをアーカイブされた、または展開された EAR の一部として、WebLogic Server にデプロイします。
  4. プロダクション環境 (開発環境でなく) の場合は、wlpackage Ant タスクを実行して Web アプリケーションをアーカイブされた、または展開された EAR の一部としてパッケージ化します。
  5. 注意 : wlpackage Ant タスクは、Java ソース ファイルのコンパイルされたバージョンをビルド ディレクトリ (たとえば /build/myEAR/myWebApp/classes) に格納します。

 


クライアントによる Web アプリケーションへのアクセス方法のコンフィグレーション

クライアントが Web アプリケーションにアクセスするために使用する URL は、次のパターンで作成します。

http://hoststring/ContextPath/servletPath/pathInfo

各値の説明は次のとおりです。

hoststring

仮想ホストにマップされるホスト名または hostname:portNumber

ContextPath

Web アプリケーションの名前

servletPath

servletPath にマップされるサーブレット

pathInfo

URL の残りの部分 (通常はファイル名)

仮想ホスティングを使用している場合、URL の hoststring の部分を仮想ホスト名に置き換えることができます。

 


Web アプリケーション用の仮想ホストのコンフィグレーション

WebLogic Server では、Web アプリケーション用の仮想ホストをコンフィグレーションする 2 つの方法をサポートしています。

チャネル ベースの仮想ホストのコンフィグレーション

以下は、チャネル ベースの仮想ホストのコンフィグレーション方法のサンプルです。

<VirtualHost Name="channel1vh" NetworkAccessPoint="Channel1" Targets="myserver"/> 
<VirtualHost Name="channel2vh" NetworkAccessPoint="Channel2" Targets="myserver"/> 

Channel1 および Channel2 は、config.xml ファイル内でコンフィグレーションされる NetworkAccessPoint の名前です。NetworkAccessPoint は、仮想ホストが HTTP リクエストを処理する専用のサーバ チャネル名を表します。特定の HTTP リクエストの NetworkAccessPoint がどの仮想ホストの NetworkAccessPoint とも一致しない場合は、正しい仮想ホストを解決するため、受信 HOST ヘッダは VirtualHostNames と比較されます。受信したリクエストが仮想ホストと一致しない場合、そのリクエストはデフォルトの Web サーバによって処理されます。

ホスト ベースの仮想ホストのコンフィグレーション

以下は、ホスト ベースの仮想ホストのコンフィグレーション方法のサンプルです。

<VirtualHost Name="cokevh" Targets="myserver" VirtualHostNames="coke"/> 
<VirtualHost Name="pepsivh" Targets="myserver" VirtualHostNames="pepsi"/> 

 


仮想ホストへの Web アプリケーションの割り当て

Web アプリケーション コンポーネントは、WebLogic Administration Console を使用してサーバおよび仮想ホストに割り当てることができます。

以前のバージョンの WebLogic Server から移行している場合は、config.xml ファイルの targets 属性で、すべての Web アプリケーションの対象を指定する必要があります。targets 属性は、仮想ホスト属性に取って代わっており、仮想ホストは同一ドメイン内でサーバまたはクラスタと同じ名前を持つことはできません。以下は、Web アプリケーションを仮想ホストに割り当てる方法の例です。

<AppDeployment name="test-app" Sourcepath="/myapps/test-app.ear">
<SubDeployment Name="test-webapp1.war" Targets="virutalhost-1"/>
<SubDeployment Name="test-webapp2.war" Targets="virtualhost-2"/>
...
</AppDeployment>

 


サーブレット、コンテキスト リスナ、およびフィルタのロード

サーブレット、コンテキスト リスナ、およびフィルタは、次の順序でロードおよび破棄されます。

ロードの順序 :

  1. コンテキスト リスナ
  2. フィルタ
  3. サーブレット

破棄の順序 :

  1. サーブレット
  2. フィルタ
  3. コンテキスト リスナ

サーブレットおよびフィルタは、web.xml ファイルでの定義順と同じ順序でロードされ、その逆の順序でアンロードされます。コンテキスト リスナは、次の順序でロードされます。

  1. web.xml ファイル内のすべてのコンテキスト リスナ (ファイルでの指定順)
  2. タグ ライブラリ記述子が含まれるパッケージ化された JAR ファイル
  3. WEB-INF ディレクトリ内のタグ ライブラリ記述子

 


共有 J2EE Web アプリケーション ライブラリ

J2EE Web アプリケーション ライブラリは、デプロイメント時に J2EE アプリケーション コンテナに登録されるスタンドアロン Web アプリケーション モジュールです。WebLogic Server 9.1 を使用すると、複数の Web アプリケーションで簡単に単一の Web アプリケーション モジュールまたはモジュールの集合を共有できます。

Web アプリケーションは、1 つ以上の Web アプリケーション ライブラリを参照できますが、その他の種類のライブラリ (EJB、EAR ファイル、プレーン JAR ファイル) は参照できません。

Web アプリケーション ライブラリは、ライブラリとしてデプロイされる Web アプリケーション モジュールです。これらは、weblogic-application.xml ファイル内のアプリケーション ライブラリの参照に使用されるものと同じ構文を用いて weblogic.xml ファイルから参照されます。ただし、<context-root> 要素は無視されます。

デプロイメント時に、参照された各ライブラリのクラスパスが、Web アプリケーションのクラスパスに付加されます。したがって、すべてのリソースおよびクラスに対する検索は、まず元の Web アプリケーション内で行われ、次に参照されたライブラリ内で行われます。

デプロイメント ツール appc、wlcompile、および BuildXMLGen は、アプリケーション レベルでライブラリをサポートするのと同じように、Web アプリケーション レベルでライブラリをサポートします。共有 J2EE ライブラリとそのデプロイメントの詳細については、『WebLogic Server アプリケーションの開発』の「共有 J2EE ライブラリおよびオプション パッケージの作成」を参照してください。

 

ナビゲーション バーをスキップ  ページの先頭 前 次