2.2. プログラミング・開発ガイド

Developer’s StudioのWebアプリケーション開発環境では、Webアプリケーション開発の生産性を向上させる機能を提供しています。

2.2.1. Webアプリケーションの作成

2.2.1.1. Webアプリケーションとは

Webアプリケーションは、複数のコンポーネントの集まりです。一般的にWebアプリケーションは以下のコンポーネントを1つまたは複数組み合わせて作成されます。

2.2.1.2. Webアプリケーションのディレクトリ構造

Webアプリケーションは、通常、ディレクトリの階層構造を構成し、ほとんどのWebコンテナがサーブレット仕様で推奨されているディレクトリ階層構造に準拠しています。階層内のルートディレクトリがWebアプリケーションのドキュメントルート(コンテキストルート)となり、その配下にコンポーネントを配置します。
WTPでプロジェクトを作成する場合、コンテキストルートの名前やコンテキストディレクトリを指定することができます。
デフォルトでは、コンテキストルートの名前:"プロジェクト名"、コンテキストディレトリ:"WebContent" になります。
Webアプリケーションのディレクトリ階層内には、次に挙げる特別なディレクトリがあります。
表2.2.1.2-1
ディレクトリ名
説明
WEB-INF
Webアプリケーションに関連するメタ情報のリポジトリです。このディレクトリ配下のリソースは、クライアント(WEBブラウザ)からアクセスすることはできません。Webアプリケーション内のServletやJavaクラスからはアクセス可能です。
WEB-INF/classes
Servletクラスはユーティリティクラスやリソースプロパティファイル(*.properties)などを配置します。クラスがJavaパッケージ内に存在する場合、classes配下にはパッケージ名に対応するサブディレクトリが存在しなければなりません。
WEB-INF/lib
Webアプリケーション用のクラスローダでロードしたいJARファイルを配置します。ここに配置したJARファイル中のクラスファイルはWebアプリケーションから参照することができます。
上記のディレクトリの他に、特殊なファイルとしてWebアプリケーションのデプロイメント記述子であるweb.xmlファイルがあります。一般に、web.xmlファイルはWEB-INFディレクトリ配下に配置されます。

Memo
Webコンテナとは、Java EE 6のWeb層で動作するアプリケーション(Servlet、JSP)を制御・管理・実行するコンテナを指します。

2.2.1.3. WARファイル

Webアプリケーションは、WAR(WebArchive)ファイルとしてパッケージ化することができます。WARファイルは、.warという拡張子でなければなりません。WARファイルとしてパッケージする際には、コンテキストルートからの相対的なWebアプリケーションのディレクトリ構造を維持しなければなりません。

2.2.1.4. MVCモデル2

Webアプリケーションの開発モデルとして、オブジェクト指向プログラミング言語のひとつ「Smalltalk」に使用されていたアプリケーション・アーキテクチャ「MVC」が、あらためて注目されています。MVCをWebアプリケーションに応用したものを「MVCモデル2」とよびます。WebアプリケーションにおけるMVCのModel、View、Controlの役割はそれぞれ、以下のようになります。
MVCのメリットとして、次の点が挙げられます。
このメリットを含み、開発(設計・コーディング・テスト)の効率化の観点から、アプリケーション構築時に生じる問題を解決する手段を提供したものが、MVCベースのWebアプリケーション・フレームワークです。Webアプリケーション・フレームワークには、JSF(JavaServerFaces)や多くのWebシステムで採用されているStrutsフレームワークなどがあります。

2.2.1.5. Webアプリケーションの定義

Webアプリケーションの定義ファイルとして、デプロイメント記述子であるweb.xmlファイルがあります。このファイルはWebコンテナに配備する際に必要となります。定義する内容には以下のものがあります。
Servlet2.5仕様からweb.xmlがXMLスキーマベースになったことにより、特定のスキーマを指定することで新しい要素を追加することができます。web.xmlのルート要素であるweb-app要素の記述は以下のようになります。(赤字は、WTPで作成したプロジェクトのweb.xmlで追加されます)
<web-appid="WebApp_ID"
xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-app_2_5.xsd"
   version="2.5">
     (ここに上述した設定内容に対応する定義を記述します。)
</web-app>

2.2.1.6. Web Application Bundle (WAB)

WABプロジェクトの作成
  1. Webアプリケーションを作成します。
  2. マニフェストファイル(WebContent/META-INF/MANIFEST.MF)に次の記述を追加します。
記述を追加したマニフェストファイルの例を以下に示します。
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: WAB_ProjName001
Bundle-SymbolicName: WAB_ProjName001
Bundle-Version: 1.0.0.qualifier
Bundle-ClassPath: WEB-INF/classes/
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: javax.el,
 javax.servlet,
 javax.servlet.http,
 javax.servlet.jsp,
 javax.servlet.jsp.el,
 javax.servlet.jsp.tagext
Web-ContextPath: /WAB_ProjName001
WABプロジェクトの配備
配備コマンド実行時に "--type osgi" オプションを指定します。
「サーバで実行」機能を用いた配備での "--type osgi" オプションの指定方法については、 [ アプリケーション開発ガイド(共通) > 6. サーバツール > 6.2. サーバで実行 > 6.2.1. WebOTXの設定 ] の、コマンドの設定をご覧ください。

2.2.1.7. 動的Webプロジェクト・ウィザードの活用

Webプロジェクト・ウィザードは、Webアプリケーションを開発するためのプロジェクトを作成します。
メニュー ファイル新規プロジェクト を選択して、新規プロジェクトダイアログを表示します。
新規プロジェクト画面のWeb配下の動的Webプロジェクトを選択して、次へ をクリックします。


図2.2.1.7-1

プロジェクト名にプロジェクトの名前を入力します。
プロジェクト・コンテンツでは、プロジェクトの保管先をデフォルト以外の場所に変更することができます。
ターゲット・ラインタイムでは、Webアプリケーションを実行するサーバー・ランタイム環境を指定できます。
プロジェクト名を入力すれば、完了 をクリックすることで 動的Webプロジェクトを作成することができます。


図2.2.1.7-2

プロジェクト名を入力、ターゲット・ラインタイムを選択した後、終了で動的Webプロジェクトを作成した場合、次の図に示されるディレクトリ構成で作成されます。


図2.2.1.7-3

作成されるディレクトリ構成について、次の表で説明します。
表2.2.1.7-1
項目
説明
プロジェクトルート(MyWeb) プロジェクトのルートディレクトリです。任意のHTML・JSPファイルやイメージファイル・ディレクトリなどを配置します。
src Webプロジェクトのソース・フォルダーです。Webアプリケーションで利用するJavaファイルやサーブレットのJavaファイルをパッケージ構成で格納します。
EAR ライブラリー
JREシステム・ライブラリー
Web App ライブラリー
WebOTX Application Server(Local)
プロジェクトが参照するライブラリです。
WebContent コンテキストディレクトリです。プロジェクト作成時に、任意のディレクトリに変更することができます。
META-INF/MANIFEST.MF マニフェストファイルです。
WEB-INF Webアプリケーションの隠蔽ディレクトリです。この配下のリソースには、クライアント(WEBブラウザ)からアクセスすることはできません。Webアプリケーション・プログラムが利用する定義ファイルなどを格納します。
build/classes Webプロジェクトの出力フォルダです。ソース・フォルダー中のソースファイルのコンパイルにより生成されたファイルが格納されます。
WEB-INF/lib 開発するWebアプリケーションで利用するライブラリ(JARファイル)を格納します。
WEB-INF/web.xml Webアプリケーションのデプロイメント記述子です。Servlet3.0ではデフォルトで生成されません。

動的 Web プロジェクトプロジェクト名を入力後、構成変更をクリックすると、プロジェクト・ファセットが表示されます。
プロジェクト・ファセットでは、作成するWebプロジェクトの以下の設定を行います。


図2.2.1.7-4

表2.2.1.7-2
項目
説明
動的 Web モジュール
必須。プロジェクトをDynamic Web Moduleとして配備可能にします。
Java
必須。Javaのサポートを可能にします。

OKをクリックすると動的Webプロジェクトページに戻ります。
次へ をクリックするとJavaページが表示されます。
Javaページでは、作成するWebプロジェクトの以下の設定を行います。
変更が必要な場合のみ値を変更して、次へ をクリックします。


図2.2.1.7-5

表2.2.1.7-3
項目
説明
Java ソース・フォルダー
Javaのソース・フォルダーの指定ができます。

次へ をクリックするとWeb モジュールページが表示されます
Web モジュールページでは、作成するWebプロジェクトの以下の設定を行います。
変更が必要な場合のみ値を変更して、完了 をクリックします。


図2.2.1.7-6

表2.2.1.7-4
項目
説明
コンテキスト・ルート
コンテキストルートの変更が可能です。
デフォルトはプロジェクト名です。
コンテンツ・ディレクトリー
コンテントディレクトリの変更が可能です。
デフォルトはWebContent です。
web.xmlデプロイメント記述個の生成
web.xmlを生成するかを設定します。
Servlet2.5のデフォルトはOFFですが、Servlet3.0以上のデフォルトはONです。

2.2.1.8. 実行支援ライブラリの活用

パッケージエクスプローラ以外の場合はメニュー ウィンドウパースペクティブを開くよりJavaを選択し、パッケージエクスプローラを表示します。
利用したいプロジェクト上で、右クリックメニュー Web プロジェクト支援ライブラリの追加 を選択します。


図2.2.1.8-1

プロジェクト設定ページでは、Webプロジェクトが利用するライブラリの選択を行うことができます。
開発するWebアプリケーションで利用するライブラリを選択します。JARファイルやTLDファイルをプロジェクトの所定の位置に配置します。
プロジェクト設定ページで選択できる項目の詳細を次の表で説明します。
表2.2.1.8-1
項目
説明
Webアプリケーション実行支援ライブラリ
Webアプリケーションを開発する際に汎用的に利用できるライブラリです。JARファイルとTLDファイルをプロジェクトに配置します。プロジェクト作成時に文字エンコードフィルタの利用選択ができます。

Memo
文字エンコードフィルタを利用する場合、エンコード種別 URLパターンの指定は必須です。



2.2.2. Sevletの作成

2.2.2.1. Servletとは

Servletは、Servletコンテナにより管理される動的コンテンツを生成するJavaテクノロジをベースとしたWebコンポーネントです。他のJavaテクノロジをベースとしたコンポーネントと同様に、Servletはプラットフォームに依存しないJavaクラスです。このJavaクラスは、JavaテクノロジをサポートするWebサーバーにより動的にロードされ実行されるプラットフォーム中間バイトコードです。Servletエンジンとも呼ばれる、Servletコンテナとは、Servlet機能を提供するWebサーバー拡張です。Servletは、Servletコンテナにより実装されるrequest/responseパラダイムを経由するWebクライアントと相互作用します。
つまり、Servletとは、ブラウザによって発せられたリクエストに応答し、レスポンスを組み立てるためのJavaクラスです。

2.2.2.2. Servletコンテナとは

Servletコンテナは、MIMEベースにデコードしたり、MIMEベースにフォーマットされるリクエストとレスポンスのネットワーク・サービスを提供するWebサーバーまたはアプリケーション・サーバーの一部です。また、Servletコンテナは、Servletのライフサイクルを制御・管理します。
Servletコンテナはホスト・Webサーバーに組み込むことや、そのサーバーのネイティブ拡張APIによってWebサーバーへのアドオン・コンポーネントとしてインストールすることもできます。また、Webが使用可能なアプリケーションサーバーへ組み込むことや、インストールすることも可能です。
すべてのServletコンテナはリクエストとレスポンス用のプロトコルとしてHTTPをサポートしています。また、HTTPS(SSLの上のHTTP)のような追加のリクエスト/レスポンスペースのプロトコルをサポートしている場合もあります。コンテナが実装するHTTPのバージョンはHTTP/1.0およびHTTP/1.1です。コンテナがRFC2616(HTTP/1.1)のキャッシングメカニズムを持つ場合、コンテナはServletにリクエストを配達する前にクライアントからのリクエストを修正したり、あるいはクライアントにレスポンスを送る前にServletによって生成されたレスポンスを修正したり、RFC2616に従い、Servletにそれらを配達せずに、レスポンスを返却することが可能です。
Servletコンテナは、Servletが実行される環境に対してセキュリティ制限を設けることができます。Java 2プラットフォーム、スタンダード・エディションあるいはJava 2プラットフォーム エンタープライズ・エディション環境では、これらの制限がJava 2プラットフォームによって定義されるパーミッション・アーキテクチャを使用して設けられている可能性があります。

2.2.2.3. Servletのインタフェース

Servletプログラムを作成する上で必要なインタフェースやクラスを説明します。
javax.servlet.Servletインタフェース
Servletは直接的、もしくは、間接的にjavax.servlet.Servletインタフェースを実装している必要があります。javax.servlet.Servletインタフェースには、Servletプログラムが必ず実装しなければならないメソッドが定義されています。
javax.servlet.GenericServletクラス
javax.servlet.Servletインタフェースを実装したクラスで、プロトコルに依存しないServletを作成する際に使用します。
javax.servlet.http.HttpServletクラス
javax.servlet.GenericServletクラスを継承したクラスで、HTTPプロトコルベースのServletプログラムを作成する際に使用します。通常このクラスを継承してServletを作成します。HttpServletクラスは抽象クラスなので、このクラスを継承したServletプログラムは必ず1つのメソッドをオーバライドする必要があります。

2.2.2.4. Servletのライフサイクル

Servletコンテナは、次のライフサイクルでServletを管理します。
ロードとインスタンス化
各ベンダ製品により多少異なりますが、Servletコンテナは、以下のような契機で、Servletをロードしてインスタンス化します。
初期化
Servletに初めてリクエストが行われたとき、Servletコンテナは最初にServletの初期化を行います。その際、Servletコンテナは、 init()メソッドを一度だけ呼び出します。init()メソッドでは、Servletの処理で必要となる、事前の準備に相当する処理などを記述します。具体的には、次のような処理が該当します。
リクエストのハンドリング
Servletの初期化が正常に行われた後、Servletコンテナはクライアントからのリクエストをハンドリングします。リクエストは、 ServletRequest型のオブジェクトとして表現されます。レスポンスは、 ServletResponse型のオブジェクトとして表現されます。HTTPプロトコル通信の場合には、 HttpServletRequest型とHttpServletResponse型がServletコンテナにより提供されます。 HttpServletクラスを継承してServletを作成する場合、 HttpServletの次のメソッドをオーバライドします。
表2.2.2.4-1
戻り型
メソッド
説明
protected void
doGet(HttpServletRequest,HttpServletResponse)
リクエストのHTTPメソッドがGETメソッドの場合、Servletコンテナが呼び出すメソッドです。
protected void
doPost(HttpServletRequest, HttpServletResponse)
リクエストのHTTPメソッドがPOSTメソッドの場合、Servletコンテナが呼び出すメソッドです。
protected void
doDelete(HttpServletRequest, HttpServletResponse)
リクエストのHTTPメソッドがDELETEメソッドの場合、Servletコンテナが呼び出すメソッドです。
protected void
doHead(HttpServletRequest,HttpServletResponse)
リクエストのHTTPメソッドがHEADメソッドの場合、Servletコンテナが呼び出すメソッドです。
protected void
doPut(HttpServletRequest,HttpServletResponse)
リクエストのHTTPメソッドがPUTメソッドの場合、Servletコンテナが呼び出すメソッドです。
一般に、doGet()メソッド、もしくは、doPost()メソッドをオーバライドします。
その他のサーブレットメソッド
前述のリクエストのハンドリング以外に、Servletのライフサイクルを維持するリソースを管理したい場合に使用されるinitメソッド および destroyメソッド、Servletが自身の情報を提供する目的で使用するgetServletInfoメソッドなどがあります。
表2.2.2.4-2
戻り型
メソッド
説明
public void
init()
Servletコンテナが呼び出すメソッドです。 このServletがサービスを開始できる状態になったことを示します。
public String
getServletInfo()
作者、バージョン、著作権といったServletに関する情報を返します。デフォルトではこのメソッドは空の文字列を返すだけです。 このメソッドをオーバライドして意味のある値が返るようにしてください。
public void
destroy()
Servletコンテナが呼び出すメソッドです。このServlet がサービス提供を停止するときに呼び出されます。
サービスの停止
Servletコンテナのリソースが少なくなり、一定時間Servletにアクセスがない場合や、Servletコンテナを終了する場合などに、ServletコンテナはServletのサービスを停止します。その際に destroy()メソッドが呼ばれます。destroy()メソッドでは、終了処理などを記述します。具体的には、次のような処理が該当します。

2.2.2.5. Servletとスレッド

通常のServletは、複数のユーザからの同時アクセスがある場合、複数のスレッドとして並列処理を行います。このとき、各スレッドは同じServletインスタンスのservice()メソッドに同時にアクセスします。これは、Servletがスレッドセーフにプログラミングされていることを前提とした動作です。つまり、Servletの開発ではスレッドセーフを意識することが重要となります。
この問題の一つの解として、javax.servlet.SingleThreadModelインタフェースの利用があります。これはServletのインスタンスとスレッドが1対1にマッピングされるモデルで、ブラウザからのアクセス数に合わせてServletのインスタンスを複数用意することにより、Servletのインスタンス変数をスレッドセーフとすることができます。しかし、SingleThreadModelインタフェースには、以下のような問題があるため、利用することは望ましくありません。
スレッドセーフなServletプログラミングの考え方は、マルチスレッド環境でのJavaプログラミングと同様です。ポイントとしては、以下のものが挙げられます。
マルチスレッドの問題は開発するアプリケーションの要件により、さまざまなケースが考えられます。スレッドセーフを意識したプログラミング・開発を心がけましょう。

2.2.2.6. Servletの定義

作成したServletはweb.xmlに定義をします。Servletの定義はweb-app要素の子要素であるservlet要素とservlet-mapping要素で定義します。servlet要素では、ServletのクラスとServletの名前(web.xml内で一意)を定義して、servlet-mapping要素ではservlet要素で定義したServletとURLのマッピングを定義します。以下にServletの定義例を記載します。
<servlet>
  <servlet-name>TestServlet</servlet-name>
  <servlet-class>servlet.TestServlet</servlet-class>
  <servlet-mapping>
    <servlet-name>TestServlet</servlet-name>
    <url-pattern>/TestServletUri</url-pattern>
  </servlet-mapping>
</servlet>
この記述例の意味は、servlet.TestServletTestServletという名前で定義して、/TestServletのURLでアクセスされるとTestServletにリクエストを渡すということです。

2.2.2.7. サーブレットウィザードの活用

サーブレットウィザードでは、Servletを作成して、さらに、Webプロジェクト中のweb.xmlファイルに作成したServletの定義を追加することができます。
メニュー ファイル新規その他 を選択して、新規画面を表示します。


図2.2.2.7-1

新規画面のWeb配下のサーブレットウィザードを選択して、次へ をクリックします。


図2.2.2.7-2

ソース・フォルダーにWebプロジェクトのソース・フォルダーが設定されていることを確認します。
クラス名には、作成するServletのクラス名を入力します。
Java パッケージには、作成するServletが属するパッケージを入力します。
スーパークラスには、初期値でHttpServletクラスが設定されています。
完了 をクリックしてServletクラスを作成します。
次へ をクリックすると、サーブレット・デプロイメント記述子固有情報を入力する画面が表示されます。


図2.2.2.7-3

デプロイメント記述子固有情報入力画面では、 Servletの配備記述を入力します。次の表で入力項目の説明をします。
表2.2.2.7-1
名称
説明
名前
@WebServletアノテーションのname属性の値となります。
または、servlet要素とservlet-mapping要素の子要素であるservlet-name要素の値となります。
説明
@WebServletアノテーションのdescription属性の値となります。
または、servlet要素の子要素であるdescription要素の値となります。
URL マッピング
@WebServletアノテーションのurlPatterns属性の値となります。
または、servlet-mapping要素の子要素であるurl-pattern要素の値となります。
初期化 パラメーター
@WebServletアノテーションのinitParams属性の値となります。
または、servlet要素の子要素であるinit-param要素の定義を編集できます。

Memo
Servlet2.5以下の場合、デプロイメント記述子固有情報がweb.xmlに記入されます。
Servlet3.0以上の場合、デプロイメント記述子固有情報がServletクラスの @WebServletアノテーションに記入されます。

名前URLマッピングは必須項目です。

初期化パラメーターの右端にある追加をクリックすると初期化パラメーターダイアログが表示されます。
名前の入力値が @WebInitParamアノテーションのname属性の値、またはweb.xmlのparam-name要素の値になります。
の入力値が @WebInitParamアノテーションのvalue属性の値、またはweb.xmlのparam-value要素の値になります。
説明の入力値が @WebInitParamアノテーションのdescription属性の値、またはweb.xmlのdescription要素の値になります。


図2.2.2.7-4

次へ をクリックすると、以下の画面が表示されます。


図2.2.2.7-5

この画面では、サーブレットの修飾子、実装するインタフェース、および生成するメソッドのスタブを指定することができます。次の表で入力項目の説明をします。
表2.2.2.7-2
名称
説明
メソッド・スタブの作成
作成するメソッドのスタブクラスを選択します。メソッドの詳細は、
前述のリクエストのハンドリングおよび その他のサーブレットメソッドを参照してください。

2.2.3. JSPファイルの作成

2.2.3.1. JSPとは

JSP(JavaServer Pages)は、HTML要素などで表現される静的コンテンツとJSP要素で表現される動的コンテンツの2つのタイプを含むテキストドキュメントです。JSPは、通常のJavaのソースコードと違ってコンパイルする必要がありません。JSPのソースコードをサーバー(Webコンテナ)に配置するだけで実行可能になります。Webコンテナは、JSPファイルにリクエストが発生した時点でそれをServletとしてコンパイルして実行します。

2.2.3.2. JSP要素

JSPは、HTMLをベースに記述します。JSP固有の記述には次の表の8種類があります。
表2.2.3.2-1
名前
記述イメージ
説明
ディレクティブ
<%@ ... %>
WebコンテナにJSPページの情報を指示します。
コメント
<%-- ... %>
コメントを記述します。
スクリプティング
スクリプトレット
<% ... %>
記述されるJavaコードを実行します。

<%= ... %>
式を文字列として記述します。
宣言
<%! ... %>
変数の定義などJavaコードに関する宣言をします。
アクション
<jsp:include...>など
JSP内でオブジェクトを利用、編集や生成したりします。
暗黙オブジェクト
request、responseなど
JSP内のJavaプログラムで利用できるオブジェクトです。
EL(ExpressionLanguage)
${param.value}など
シンプルな記述でテンプレートデータや属性値を表現できます。JSP2.0仕様より導入されました。
ディレクティブ
ディレクティブには、page、taglib、includeの3つがあります。まず、pageディレクティブは、そのページに依存する設定をWebコンテナに知らせます。
pageディレクティブのシンタックスを以下に示します。
<%@ page(pageディレクティブ属性)%>
pageディレクティブ属性 ::= {language="scriptingLanguage"}
                            {extends="className"}
                            {import="importList" }
                            {session="true|false" }
                            {buffer="none|sizekb" }
                            {autoFlush="true|false" }
                            {isThreadSafe="true|false" }
                            {info="info_text" }
                            {errorPage="error_url" }
                            {isErrorPage="true|false" }
                            {contentType="ctinfo" }
                            {pageEncoding="peinfo" }
                            {isELIgnored="true|false" }
通常、1つの宣言に複数の属性を定義するのではなく、1つのインポート宣言で1つのpageディレクティブ、1つの文字エンコード関連で1つのpageディレクティブと、分けて記述します。
pageディレクティブに設定できる属性を以下に示します。
表2.2.3.2-2
属性
説明
language
スクリプトレットで使用するスクリプト言語を定義します。デフォルトの言語は"java"です。
extends
JSPサーブレットが継承するスーパークラスを指定します。これは、JSPファイルをJSPサーブレットに変換するときに使用され、Java言語のextendsに相当します。
import
宣言、スクリプトレット、式で使用するパッケージをインポートします。デフォルトでインポートされるパッケージは、"java.lang.*"と"javax.servlet.*"と"javax.servlet.jsp.*"と"javax.servlet.http.*"です。
session
HTTPセッションを使用するかをtrue/falseで指定します。trueを指定すると、暗黙オブジェクト"session"が利用できます。デフォルトの定義はtrueです。
buffer
クライアントに送信するデータをバッファに蓄積する際のバッファの容量をkb単位で指定します。バッファに蓄積しない場合はnoneを指定します。サイズを小さくすると、サーバーのメモリ負荷が軽減され、クライアント側でのレスポンスが向上します。デフォルトは、8kbです。
autoFlush
バッファリングされたデータを自動的にフラッシュするかどうかをtrue/falseで指定します。trueの場合、バッファがいっぱいになると自動的にWebブラウザにデータが送信されます。falseの場合、バッファがいっぱいになってもフラッシュせず、例外を発生させてWebブラウザにエラーを表示します。falseを指定する場合はbuffer属性に適切な値を指定する必要があります。また、buffer="none"を定義する場合、autoFlush="false"を定義することはできません。デフォルトの定義はtrueです。
isThreadSafe
複数のクライアントからのリクエストに対して同時に処理できるかどうかをtrue/falseで指定します。デフォルトはtrueです。
info
JSPファイルの作成者やバージョンなどの情報を記述したいときに利用します。この情報はServletインタフェースのgetServletInfo()メソッドで取得できます。デフォルトは空の文字列が設定されています。
isErrorPage
このJSPがエラーページかどうかをtrue/falseで指定します。trueの場合、JSPページ内でエラーへの参照となる暗黙オブジェクト、"exception"が利用できます。falseの場合、"exception"は利用できません。デフォルトはfalseです。
errorPage
JSPファイル内で対応していない例外が発生した場合に転送するエラーページを指定します。autoFlush="true"でバッファがフラッシュされた後に例外が発生した場合、指定したエラーページに転送することはできません。また、buffer属性が"none"の場合、例外が発生する前にJSPの出力があると、エラーページに転送することができません。
contentType
JSPのレスポンスのMIMEタイプと文字エンコード方式を指定します。定義できるMIMEタイプについては、IANAの『MIME Media Type』を、文字エンコード方式については、IANAの『CHARACTER SETS』を参照してください。
pageEncoding
JSPファイルの文字エンコード方式を指定します。JSPがServletに変換される際に利用されます。定義できる文字エンコード方式については、IANAの『CHARACTER SETS』を参照してください。
isELIgnored
JSP2.0から利用できるようになった式言語(EL)をJSPファイルで利用するかをtrue/falseで指定します。trueの場合、EL式はWebコンテナに無視されます。falseの場合、EL式がWebコンテナに認識されます。
以下に簡単な利用例を記述します。
次に、taglibディレクティブについて説明します。taglibディレクティブは、JSPで利用するカスタムタグライブラリの宣言です。
taglibディレクティブのシンタックスは次のようになります。
<%@taglib ( uri="タグライブラリURI" |
tagdir="タグライブラリディレクトリ")
prefix="カスタムタグの接頭辞" %>
taglibディレクティブに設定できる属性は次のようになります。
表2.2.3.2-3
属性
説明
uri
prefix属性の定義値に対応するタグライブラリ記述子(TLDファイル)の絶対URI、相対URIを定義します。
prefix
JSPファイル内に記述するカスタムタグライブラリの接頭辞を定義します。
tagdir
uri属性の代わりとして、Webアプリケーション内のタグライブラリ記述子の格納ディレクトリを定義することができます。"WEB-INF/tags"で始まらない定義値はWebコンテナによりエラーとなります。
最後にincludeディレクティブについて説明します。includeディレクティブは、外部のテキストファイルやJSPファイルをインクルードするときに利用します。
includeディレクティブのシンタックスは次のようになります。
<%@include file="インクルードファイルの相対URL" %>

Memo
IANAとはインターネット上で利用されるアドレス資源(IPアドレス、ドメイン名、プロトコル番号など)の標準化や割り当てを行なっていた組織でした。1998年10月、インターネット資源の管理・調整を行なう国際的な非営利法人ICANNが設立されて、2000年2月には、ICANN、南カリフォルニア大学、アメリカ政府の三者合意により、IANAが行なっていた各種資源の管理はICANNに移管されました。現在では、IANAはICANNにおける資源管理・調整機能の名称として使われています。

スクリプティング
スクリプティングには、スクリプトレット・式・宣言の3つがあります。以下にそれぞれの使用例を説明します。
アクション
JSPで利用できる主なアクションには次のようなものがあります。
表2.2.3.2-4
アクション
説明
<jsp:useBean>
JavaBeansをインスタンス化して特定のスコープに登録を行い、JSPページから使用可能にするアクションタグです。
<jsp:setProperty>
<jsp:useBean>などで生成したインスタンスに対して、値の設定を行うアクションタグです。
<jsp:getProperty>
<jsp:useBean>などで生成したインスタンスに対して、取得・表示を行うアクションタグです。
<jsp:include>
リソース(ページ)のインクルードをするアクションタグです。
<jsp:forward>
リクエストを転送するアクションタグです。
<jsp:param>
キーと値のペアの情報を扱うアクションタグです。このアクションタグを利用して<jsp:include>や<jsp:forward>に値を渡すことができます。
<jsp:plugin>
JavaプラグインをダウンロードしてアプレットやJavaBeansコンポーネントを実行するHTMLを生成します。
<jsp:params>
<jsp:plugin>の一部として利用するアクションタグです。アプレットに渡すパラメーターなどを指定します。
<jsp:fallback>
<jsp:plugin>の一部として利用するアクションタグです。ブラウザがサポートしていないタグがある場合に表示するテキストを指定します。
暗黙オブジェクト
JSPで利用できる暗黙オブジェクトには次のようなものがあります。
表2.2.3.2-5
オブジェクト
スコープ
説明
request
request
HTTPリクエスト(javax.servlet.http.HttpServletRequest)のオブジェクトです。
response
page
HTTPレスポンス(javax.servlet.http.HttpServletResponse)のオブジェクトです。
pageContext
page
このJSPページ(javax.servlet.jsp.PageContext)のオブジェクトです。
session
session
HTTPセッション(javax.servlet.http.HttpSession)オブジェクトです。
application
application
Servletコンテキスト(javax.servlet.ServletContext)のオブジェクトです。
out
page
出力用ストリーム(javax.servlet.jsp.JspWriter)のオブジェクトです。
config
page
Servletの設定(javax.servlet.ServletConfig)のオブジェクトです。
page
page
このページを実装するクラスのインスタンス(java.lang.Object)です。
なお、スコープとはデータの有効範囲のことで、Webアプリケーションでは以下のスコープがあります。
表2.2.3.2-6
スコープ
説明
request
リクエスト間でデータを共有したい場合に使用します。
session
HTTPセッション間でデータを共有したい場合に使用します。これにより、異なるページ間でブラウザを閉じるまで、もしくはセッションが解放されるまでデータを共有することができます。
application
Webアプリケーション間でデータを共有したい場合に使用します。Webアプリケーション間とは、サーブレットコンテナに設定されるWebアプリケーション内のことを指します。
page
ひとつのJSPファイル中でデータを共有したい場合に使用します。
EL(Expression Language)
EL(ExpressionLanguage)はJSP2.0で追加された機能です。式の結果を出力するために使用され、アクションタグに属性の値として与えることもできます。ただ、EL単独では高度なロジックを書くことはできません。JSTLなどのカスタムタグと組み合わせることにより、JSPページの中からスクリプトレットを排除することで、コードの簡素化をすることができます。
従来の式の例
   <%=o.getDta() %>
ELの例
   ${o.data }
ELには次の専用の暗黙オブジェクトがあります。
表2.2.3.2-7
オブジェクト
説明
pageContext
PageContextオブジェクトです。
pageScope
pageスコープに格納されたキーと値のMap型オブジェクトです。
requestScope
requestスコープに格納されたキーと値のMap型オブジェクトです。
sessionScope
sessionスコープに格納されたキーと値のMap型オブジェクトです。
applicationScope
applicationスコープに格納されたキーと値のMap型オブジェクトです。
param
リクエストパラメーターのパラメーター名とパラメーター値を格納するMap型オブジェクトです。(パラメーター値は、ServletRequest.getParameter("パラメーター名")で取得できる値です。)
paramValues
リクエストパラメーターのパラメーター名とパラメーター値(複数)を格納するMap型オブジェクトです。(パラメーター値は、ServletRequest.getParameterValues("パラメーター名")で取得できる値です。)
header
ヘッダのキーと値を格納するMap型オブジェクトです。(値は、ServletRequest.getHeader("キー")で取得できる値です。)
headerValue
ヘッダのキーと値(複数)を格納するMap型オブジェクトです。(値は、ServletRequest.getHeaders("キー")で取得できる値です。)
cookie
Cookieのキーと値を格納するMap型オブジェクトです。
initParam
コンテキストの初期化パラメーターのキーと値を格納するMap型のオブジェクトです。(値は、ServletContext.getInitParameter("キー")で取得できる値です。)

2.2.3.3. JSPウィザードの活用

JSPウィザードの画面について、説明します。
メニュー ファイル新規その他 を選択して、新規ダイアログを表示します。
新規ダイアログで WebJSP File を選択して、次へ をクリックします。


図2.2.3.3-1

親フォルダ(JSPファイルの作成場所)をツリーもしくは直接入力により指定します。
このときWebContentディレクトリ配下を指定するようにします。
ここで、ファイル名(M)を入力し、完了をクリックすると JSPファイルが作成されます。
 次へをクリックすると作成時の JSPファイルの詳細な設定を行うJSP詳細が表示されます。


図2.2.3.3-2

完了のクリックにより、作成される JSPファイルを以下に示します。
<%@pagelanguage="java"contentType="text/html;charset=windows-31j"
   pageEncoding="windows-31j"%>
<!DOCTYPE Html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
この記述をもとに、用途に応じてJSPファイルの編集を行って下さい。
次へをクリックした場合、 JSPテンプレートの選択が表示されます。
選択したテンプレートをもとに、JSPファイルが作成されます。
新規にJSPのテンプレートを作成して利用することも可能です。


図2.2.3.3-3

JSP テンプレートで選択できる項目の詳細について、次の表で説明します。
表2.2.3.3-1
項目
説明
New JSP File(html)
HTML マークアップつきのJSPファイルを作成します。
New JSP File(xhtml)
XHTML マークアップつきのJSPファイルを作成します。
New JSP File(xhtml, xml syntax)
XHTML マークアップつきおよびXMLスタイル構文のJSPファイルを作成します。
New JSP File(xhtml, xml syntax, JSP 2.0)
JSP 2.0仕様のタグ、XHTML マークアップつきおよびXMLスタイル構文のJSPファイルを作成します。

2.2.3.4. JSP事前コンパイル

JSP事前コンパイルについて説明します。Warファイルの配備後、最初のJSPへのアクセス時にServletコンテナはJSPのコンパイルを行います。このため、JSPの多いWTP動的アプリケーションでは、JSPコンパイルの処理のために最初のレスポンスに時間がかかってしまいます。JSP実行時のコンパイル時間を省略することで、レスポンス性能を向上させるために、JSPファイルの事前コンパイル機能を提供します。

Memo
コマンドラインからJSPコンパイルを実行する方法については、 [ ドメイン構築・基本設定ガイド > 13. 付録 > 13.1. JSPの事前コンパイル方法 ] を参照してください。

単独JSPファイルのコンパイル
JSPファイルを右クリックすると、ポップアップメニューにWebプロジェクトが表示されます。


図2.2.3.4-1

Webプロジェクトを選択すると、JSPコンパイルが表示されます。


図2.2.3.4-2

JSPコンパイルを選択すると、JSPのコンパイルが行われます。


図2.2.3.4-3

JSP事前コンパイルを行うと、JSPファイルに対応するServletソースが、プロジェクトのソース・フォルダーに作成されます。


図2.2.3.4-4

さらに、このServletソースの定義はweb.xmlファイルに自動的に追加されます。
web.xmlの例を以下に示します。
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name>DynamicWebPJ</display-name>
  <servlet>
   <servlet-name>org.apache.jsp.index_jsp</servlet-name>
   <servlet-class>org.apache.jsp.index_jsp</servlet-class>
  </servlet>
  <servlet-mapping>
   <servlet-name>org.apache.jsp.index_jsp</servlet-name>
   <url-pattern>/index.jsp</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
   <welcome-file>index.html</welcome-file>
   <welcome-file>index.htm</welcome-file>
   <welcome-file>index.jsp</welcome-file>
   <welcome-file>default.html</welcome-file>
   <welcome-file>default.htm</welcome-file>
   <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>
一括JSPファイルのコンパイル
動的Webプロジェクトの右クリックメニュー で Webプロジェクトが表示されます。


図2.2.3.4-5

Webプロジェクト一括JSPコンパイルが表示されます。


図2.2.3.4-6

一括JSPコンパイルを選択すると、動的Webプロジェクト内のJSPが一括してコンパイルされます。


図2.2.3.4-7

一括JSPコンパイルを行うと、JSPファイルに対応するServletソースがWEB-INF/src配下に作成され、Servletソースの定義がweb.xmlファイルに自動的に追加されます。 なお、一括JSPコンパイルの結果は、全JSPを個別にJSPコンパイルするのと同じです。
JSP事前コンパイルの異常処理
Servlet2.4の動的Webプロジェクトの「WEB-INF」配下にweb.xmlが存在しない場合、JSPコンパイルを実行すると、以下の確認ダイアログが表示されます。


図2.2.3.4-8

web.xmlが存在していても、内容が不正な場合、JSPコンパイルを実行すると、以下web.xml更新エラーダイアログが表示されます。 赤枠で囲んだ理由が、エラー原因を表しています。


図2.2.3.4-9

動的Webプロジェクト以外のJSPファイルをJSPコンパイルすると、以下の、確認ダイアログが表示されます。


図2.2.3.4-10

2.2.3.5. JSPコンパイル結果ビューの説明

JSPコンパイルでエラーが発生すると、以下のJSPコンパイル結果ビューが開き、エラー情報が表示されます。


図2.2.3.5-1

表示されたエラー項目をダブルクリックすると、対応するJSPファイルのエラー箇所がエディターで開きます。


図2.2.3.5-2

2.2.4. フィルターの作成

2.2.4.1. フィルターとは

フィルターは、HTTPリクエストやHTTPレスポンス、ヘッダ情報などの内容を変換する、再利用可能なオブジェクトで、Servlet2.3仕様より導入されています。フィルターの利用例を以下に挙げます。
これら以外にも、用途に応じていろいろなフィルターを開発することができます。

2.2.4.2. フィルターのインタフェース

フィルターはjavax.servlet.Filterインタフェースを実装して作成します。javax.servlet.Filterインタフェースで実装しなければならないメソッドには以下のものがあります。
表2.2.4.2-1
メソッド
説明
void init(FilterConfig filterConfig)
throws ServletException
初期化メソッドです。フィルター処理が開始される際にWebコンテナによって1度だけ呼び出されます。
void doFilter(ServletRequest request, ServletResponseresponse, FilterChain chain)
throws java.io.IOException,ServletException
フィルターが適用されるリクエストがあるたびに呼び出されるメソッドです。このメソッドでリクエストやレスポンス、ヘッダ情報を加工する処理を実装します。『chain.doFilter()』で次のフィルター、もしくは、リソースに処理を渡します。
void destroy()
フィルター処理の終了の際にWebコンテナによって呼び出されるメソッドです。
javax.servlet.Filterインタフェースの他に、フィルター関連のインタフェースとして、javax.servlet.FilterChainインタフェースとjavax.servlet.FilterConfigインタフェースがあります。

2.2.4.3. フィルターの定義

作成したフィルターを、web.xmlにfilter要素とfilter-mapping要素で定義します。 filter要素でフィルターのクラス名とフィルターの名前(web.xml内で一意)を定義し、filter-mapping要素でフィルターをどのURL、もしくは、Servletにマッピングするかを定義します。以下にフィルターの定義例を記載します。
<filter>
  <filter-name>TestFilter</filter-name>
  <filter-class>filter.TestFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>TestFilter</filter-name>
  <url-pattern>/TestServlet</url-pattern>
</filter-mapping>
この例では、filter.TestFilterTestFilterという名前で定義し、 /TestServletと言うURLでアクセスすることでTestFilterのフィルター処理が行われるよう定義しています。

2.2.4.4. フィルターウィザード

フィルターウィザードでは、フィルターを作成して、さらに、Webプロジェクト中のweb.xmlファイルに作成するフィルターの定義を追加することができます。
メニュー ファイル新規その他 を選択して、新規画面のWeb配下のフィルターを選択して、次へをクリックします。


図2.2.4.4-1

この画面では、Webプロジェクトで作成したWebプロジェクトを指定することができます。ソース・フォルダーにWebプロジェクトのソース・フォルダーを指定することができます。また、フィルターのjavaパッケージクラス名スーパークラスを指定することができます。


図2.2.4.4-2

入力項目は以下の通りです。
表2.2.4.4-1
名称
説明
プロジェクト
Webプロジェクト名です。
ソース・フォルダー
Webプロジェクトのソース・フォルダーです。
Javaパッケージ
フィルターのJavaパッケージです。
クラス名
フィルターのクラス名です。
スーパークラス
フィルターの継承するスーパークラスです。
既存フィルター・クラスを使用
既存フィルター・クラスを使用する場合に、指定します。
次へをクリックすると、フィルターのデプロイメント記述子固有の情報入力画面が表示されます。


図2.2.4.4-3

入力項目は以下の通りです。
表2.2.4.4-2
名称
説明
名前
@WebFilterアノテーションのfilterName属性の値となります。
または、filter要素とfilter-mapping要素の子要素であるfilter-name要素の値となります。
説明
@WebFilterアノテーションのdescription属性の値となります。
または、filter要素の子要素であるdescription要素の値となります。
初期化パラメーター
@WebFilterアノテーションのinitParams属性の値となります。
または、filter要素の子要素であるinit-param要素の定義を編集できます。
フィルター・マッピング
@WebFilterアノテーションのurlPatterns属性及びdispatcherTypes属性の値となります。
または、filter-mapping要素の子要素であるurl-pattern及びdispatcher要素の値となります。

Memo
Servlet2.5以下の場合、デプロイメント記述子固有情報がweb.xmlに記入されます。
Servlet3.0以上の場合、デプロイメント記述子固有情報がフィルタークラスの @WebFilterアノテーションに記入されます。

名前URLパターン/サーブレット名は必須です。

初期化パラメーターの右側の追加をクリックすると初期化パラメーターダイアログが表示されます。 この画面では初期化パラメーターを追加することができます。


図2.2.4.4-4

入力項目は以下の通りです。
表2.2.4.4-3
名称
説明
名前
@WebInitParamアノテーションのname属性の値、またはparam-name要素の値になります。

@WebInitParamアノテーションのvalue属性の値、またはparam-value要素の値になります。
説明
@WebInitParamアノテーションのdescription属性の値、またはdescription要素の値になります。

フィルター・マッピングの右側の追加をクリックするとフィルター・マッピングダイアログが表示されます。この画面ではフィルター・マッピングを追加することができます。


図2.2.4.4-5

入力項目は以下の通りです。
表2.2.4.4-4
名称
説明
パターン
@WebFilterアノテーションのurlPatterns属性の値となります。
または、filter-mapping要素の子要素であるurl-pattern要素の値となります。
Select Dispathcers
@WebFilterアノテーションのdispatcherTypes属性の値となります。
または、filter-mapping要素の子要素であるdispatcher要素の値となります。

フィルターのデプロイメント記述子固有の情報入力画面で次へをクリックすると、以下の画面が表示されます。この画面では、フィルターの修飾子、実装するインタフェースを指定することができます。


図2.2.4.4-6

2.2.5. リスナーの作成

2.2.5.1. リスナーとは

Webアプリケーション内のイベントをキャッチして、そのイベントが発生した際に、それに応じた処理を行うための仕組みです。イベントの対象として、ServletContextとHttpSessionとServletRequestがあります。イベントの種類には次のものがあります。
表2.2.5.1-1
イベント
説明
コンテキストの生成と破棄
Webコンテナの起動時やWebアプリケーションの配備時に、Webアプリケーションが起動する際に、コンテキスト(ServletContext)が生成されます。Webコンテナの停止などにより、Webアプリケーションが停止する際にコンテキストは破棄されます。
コンテキスト属性の操作
コンテキスト属性を追加、削除、置換したときです。
セッションの生成と破棄
セッションが生成されるときとタイムアウトなどにより破棄されるときです。
セッション属性の操作
セッション属性を追加、削除、置換したときです。
セッションの活性化と非活性化
セッションが活性化、または、非活性化されたときです。
リクエストの発生と終了
Webコンテナでリクエストを受け付けたとき(HttpServletRequestを作成したとき)とリクエストが終了するときです。
リクエスト属性の操作
リクエスト属性を追加、削除、置換したときです。

Memo
セッションの活性化と非活性化は、分散環境やセッションを永続的に保持するWebコンテナなどで有用です。利用する環境やWebコンテナを意識した使い分けが必要となります。

2.2.5.2. リスナーのインタフェース

Listenerは次に挙げるインタフェースを実装して作成します。
表2.2.5.2-1
インタフェース
説明
javax.servlet.
ServletContextListener
コンテキストの生成と破棄のイベントが発生したときの処理を実装します。contextInitialized(ServletContextEventsce)メソッドとcontextDestroyed(ServletContextEvent sce)メソッドを実装します。
javax.servlet.
ServletContextAttributeListener
コンテキスト属性を操作したイベントが発生したときの処理を実装します。attributeAdded(ServletContextAttributeEventscab)メソッドとattributeRemoved(ServletContextAttributeEventscab)メソッドとattributeReplaced(ServletContextAttributeEventscab)メソッドを実装します。
javax.servlet.http.
HttpSessionListener
セッションの生成と破棄のイベントが発生したときの処理を実装します。sessionCreated(HttpSessionEventse)メソッドとsessionDestroyed(HttpSessionEvent se)メソッドを実装します。
javax.servlet.
HttpSessionAttributeListener
セッション属性の操作のイベントが発生したときの処理を実装します。attributeAdded(HttpSessionBindingEventse)メソッドとattributeRemoved(HttpSessionBindingEventse)メソッドとattributeReplaced(HttpSessionBindingEventse)メソッドを実装します。
javax.servlet.
HttpSessionActivationListener
セッションの活性化と非活性化のイベントが発生したときの処理を実装します。sessionDidActivate(HttpSessionEvent se)メソッドとsessionWillPassivate(HttpSessionEvent se)メソッドを実装します。
javax.servlet.
HttpSessionBindingListener
valueBound(HttpSessionBindingEventevent)メソッドとvalueUnbound(HttpSessionBindingEventevent)メソッドを実装します。

2.2.5.3. リスナーウィザード

リスナーウィザードでは、リスナーを作成して、さらに、Webプロジェクト中のweb.xmlファイルに作成するリスナーの定義を追加することができます。
メニュー ファイル新規その他を選択して、新規画面のWeb配下のリスナーを選択して、次へをクリックします。


図2.2.5.3-1

この画面では、Webプロジェクトを指定することができます。ソース・フォルダーにWebプロジェクトのソース・フォルダーを指定することができます。


図2.2.5.3-2

入力項目は以下の通りです。
表2.2.5.3-1
名称
説明
プロジェクト
Webプロジェクト名です。
ソース・フォルダー
Webプロジェクトのソース・フォルダーです。
Javaパッケージ
リスナーのJavaパッケージです。
クラス名
リスナーのクラス名です。
スーパークラス
リスナーを継承するスーパークラスです。
既存リスナー・クラスを使用
既存リスナー・クラスを指定します。
次へをクリックすると、以下の画面が表示されます。 この画面では、リスナーするアプリケーション・ライフサイクル・イベントを選択することができます。


図2.2.5.3-3

次へをクリックすると、以下の画面が表示されます。この画面では、リスナーの修飾子、実装するインタフェース、およびメソッド・スタブを指定することができます。


図2.2.5.3-4

2.2.6. HTMLファイル作成

2.2.6.1. HTMLウィザード

HTMLウィザードの画面について、説明します。
メニュー ファイル新規その他を選択して、新規ダイアログを表示します。
新規ダイアログでWebHTMLページを選択して、次へをクリックします。


図2.2.6.1-1

親フォルダ(HTMLファイルの作成場所)をツリーもしくは直接入力により指定します。
このときWebContentディレクトリ配下を指定するようにします。
ファイル名(M)を入力し、完了をクリックすると HTMLファイルを作成することができます。


図2.2.6.1-2

以下が作成された HTMLファイルです。
用途に応じてHTMLファイルの編集を行って下さい。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv= "Content-Type" content="text/html; charset=windows-31j">
    <title>Insert title here</title>
  </head>
  <body>
  </body>
</html>
HTMLウィザードでファイル名(M)を入力後、次へをクリックした場合、  HTML テンプレートの選択が表示されます。
HTML テンプレートの選択では、テンプレートを選択してHTMLファイルを作成することができます。
新規にHTMLのテンプレートを作成して利用することも可能です。
HTML テンプレートの選択で選択できる項目の詳細について、次の表で説明します。


図2.2.6.1-3

HTMLテンプレート
表2.2.6.1-1
項目 説明
New HTML File (5) HTML 5仕様のHTMLファイルを作成します。
New HTML File (4.01frameset) HTML 4.01仕様でフレームセットを利用したい場合のHTMLファイルを作成します。
New HTML File (4.01 strict) HTML 4.01仕様の標準的なHTMLファイルを作成します。
New XHTML File (1.0 frameset) XMLをベースとしたXHTMLファイルでフレームセットを利用したい場合に作成します。
New XHTML File (1.0 strict) XMLをベースとした標準的なXHTMLファイルを作成します。

2.2.7. 従来のWebアプリケーションをWTPプロジェクトへ変換する方法

WebOTX V6.3以前のWebアプリケーション開発プラグインや、WebOTX V7 で作成した WebOTX 独自プロジェクトをWTP(動的Webプロジェクト)プロジェクトに変換する方法について説明します。
プロジェクトの取り込み
旧 WebOTX独自形式のWebアプリケーション開発プラグインで作成したプロジェクトをインポートします。
メニュー ファイル > インポート を選択して、インポート ダイアログを表示させます。
一般 > 既存プロジェクトをワークスペースへ を選択し、 次へ をクリックします。
旧 WebOTX独自形式のWebアプリケーション開発プラグインで作成したプロジェクトを選択し、 完了 をクリックします。


図2.2.7-1


プロジェクトフェセットとサーバーランタイムの設定
インポートしたプロジェクトの右クリックメニュー プロパティーを選択して、プロパティー ダイアログを表示させます。
プロジェクト・ファセットを選択し、ファセット・フォームへ変換をクリックします。


図2.2.7-2


動的WebモジュールをONにし、そのバージョンにweb.xmlのバージョンをあわせて設定します(例えば、web.xml中に 「<web-app … version="2.4">」がある場合、動的Webモジュールのバージョンに「2.4」を設定します)。
ランタイムを選択し、WebOTX Application Server v9(Local Default)をONにし、OKをクリックします。


図2.2.7-3


ファイル、フォルダの移動
アーカイブに必要なファイル(Javaソース以外のファイル)をWebContentフォルダ直下に移動します。
例えば、
(1)プロジェクト配下のMETA-INFフォルダおよびJSPやHTMLファイルをWebContentフォルダ直下に移動します。
(2)プロジェクトのWEB-INFフォルダ配下のsrcとclassesフォルダ以外のファイルをWebContent\WEB-INFフォルダ直下移動します。特に、web.xmlを置換します。


図2.2.7-4


ビルド・パスの変更
プロジェクトのJavaのビルド・パスページで、ライブラリーを次のように修正します。
(1)次のライブラリーを削除します。
(2)WEB-INFフォルダ配下のライブラリーをWebContent\WEB-INFフォルダ配下のライブラリーに変更します。


図2.2.7-5


以上でプロジェクトの変換は完了です。

2.2.8. Webアプリケーション実行支援ライブラリ利用について

2.2.8.1. Webアプリケーション実行支援ライブラリ

Webアプリケーション実行支援ライブラリは、Webアプリケーションで必要とされる機能をライブラリで提供したものです。以下の実行支援ライブラリを利用することにより、作成効率が高まります。

2.2.8.2. Webアプリケーション実行支援ライブラリを利用する前に

Caution
 Webアプリケーション実行支援ライブラリを利用する前に次のことを確認して下さい。

Webアプリケーション実行支援ライブラリを利用する場合は、プロジェクト中のWEB-INF配下にotxjsptag.tldファイル、WEB-INF\lib配下にwebapsupport.jarファイルが存在している必要があります。
以下に、Webアプリケーション実行支援ライブラリの各機能の概要と利用手順を示します。

2.2.8.3. 文字エンコード機能

文字エンコード機能を利用することで、HTTPリクエストをServletへ引き渡す際に発生する文字化け問題を回避することができます。本機能は、Servletコンテナのフィルタリング機能を利用して作られています。
手順は以下のとおりです。
手順1
WTPの動的Webプロジェクトにて、プロジェクトを作成している場合は、 Javaパースペクティブに切り替えてから、プロジェクトを選択した状態で、右クリックメニュー Webプロジェクト支援ライブラリの追加を選択し、利用するライブラリの選択Webアプリケーション実行支援ライブラリをONにしてください。
手順2
文字エンコードフィルタを利用するをONにしてください。
手順3
エンコード種別URLパターンを必要に応じて変更します。


図2.2.8.3-1

Caution
設定上の注意事項
1.「エンコード種別」 には、 MS932、SJIS(またはShift_JIS)、UTF8、EUC-JP等の中のいずれかを設定して下さい。(例)MS932ページの日本語の文字化けの対処にはMS932を設定します。)
使用できる文字コードの例

表2.2.8.3-1
文字コード
説明
MS932
Windows日本語
SJIS
Shift-JIS、日本語
UTF8
8ビットUnicode変換形式
EUC-JP
日本語EUC
サポートしない文字コードの例(使用しないで下さい)
表2.2.8.3-2
文字コード
説明
JISAutoDetect
Shift-JIS、EUC-JP、ISO 2022 JPの検出および変換
(Unicode変換のみ)
2.「URLパターン」にはエンコードを行うページのURLパターンを指定します。すべてエンコードしたい場合は "/*" と指定します。
3.Webプロジェクトの作成後にエンコード種別やURLパターンを変更したい場合は、web.xmlエディターを利用して、変更して下さい。(詳しくは、web.xmlエディターの項目を参照してください。)

2.2.9. Valveの作成

2.2.9.1. Valveとは

Webコンテナの内部の処理として、クライアントからのリクエストをキャッチして、処理することができます。フィルターと似ていますが、Valveは、Webコンテナ自体に組み込むものである点が異なります。Webコンテナ自体に組み込むため、Valveの処理に不備があると、Webコンテナに影響を与えます。通常の処理であれば、Valveではなく フィルター を利用されることを強く推奨します。

Memo
リクエストやレスポンスのデータ処理は、フィルターを使うことを推奨します。

2.2.9.2. Valveのインタフェース

Valveは次に挙げるクラスを継承して作成します。
表2.2.9.2-1
クラス 説明
org.apache.catalina.valves. ValveBase ValveBaseを継承して、Valveを作成します。 invoke(Request request, Response response)メソッドにValveの処理を実装します。
インタフェース 説明
com.nec.webotx.as.web.valve.WebOTXValve WebOTXValveを実装して、Valveを作成します。 invoke(Request request, Response response)メソッド postInvoke(Request request, Response response)メソッドにValveの処理を実装します。
WebOTXValve のフィールドは次のようになっています。
表2.2.9.2-2
フィールド 説明
int INVOKE_NEXT 次のValve(サーブレット) を実行する場合は、invoke メソッドでこの値をreturnします。 サーブレット実行後に行いたい処理はpostInvoke()に実装します。
int END_PIPELINE 次のValve(サーブレット)を実行しない場合は、invoke メソッドでこの値をreturnします。 ※別途レスポンスの送出処理を行う必要があります。
WebOTXValveのインタフェースは次のようになっています。
表2.2.9.2-3
クラス 説明
public String getInfo() このValveの情報を文字列で返却します。作成したValveの説明を返却することができます。
public int invoke(Request request,Response response) throws java.io.IOException, javax.servlet.ServletException
次のValve(サーブレット)へ処理を渡すまでのValve の前処理を実装します。
public void postInvoke(Request request, Response response) throws java.io.IOException,javax.servlet.ServletException 次のValve(サーブレット)へ処理を渡してサーブレットの実行が終わり、自Valveに処理が戻ってきた場合の後処理を実装します。
Valve内で生成したRequestオブジェクトを次のValve(サーブレット)へ渡すためのインタフェースは以下となっています。
invoke()の第一引数org.apache.catalina.Requestの以下のメソッドを使用します。
表2.2.9.2-4
メソッド 説明
public void setNote(String name,Object value) 第1引数には下記に示すフィールドを指定し、第2引数にはValve内で生成した、次のValve(サーブレット)へ渡したいRequestあるいはResponseオブジェクトを指定します。
org.apache.catalina.RequestのsetNote()の第1引数に指定するフィールドは次のようになっています。
表2.2.9.2-5
フィールド 説明
org.apache.catalina.Globals.WRAPPED_REQUEST setNote()でRequestオブジェクトを渡したい場合に指定します。
org.apache.catalina.Globals.WRAPPED_RESPONSE setNote()でResponseオブジェクトを渡したい場合に指定します。
Valve内で生成したRequestオブジェクトを次のValve(サーブレット)へ渡すには、システムプロパティの設定が必要です。詳しくは [ リファレンス集 ドメイン構成・環境移行編 > 2. 他APサーバ(Tomcat)からWebOTXへの移行ガイド > 2.3. 移行作業 > 2.3.2. 移行作業一覧 > 2.3.2.7. JavaVMオプションの設定 ] の設定項目、”com.nec.webotx.enterprise.web.enablePipelineRequestResponseChain”を参照してください。

2.2.9.3. invokeメソッド

iinvoke メソッドでValve の前処理を実装し、postInvoke メソッドでValve の後処理を実装します。
invoke メソッドのインタフェースは次のようになります。
public int invoke(Request request, Response response) throws java.io.IOException, javax.servlet.ServletException
postInvoke メソッドのインタフェースは次のようになります。
public void postInvoke(Request request,Response response) throws java.io.IOException, javax.servlet.ServletException
ソースのサンプルを次に示します。
package org.apache.catalina.valves;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import org.apache.catalina.Request;
import org.apache.catalina.Response;
import org.apache.catalina.Container;
import org.apache.catalina.Context;
import org.apache.catalina.Wrapper;

import com.nec.webotx.as.web.valve.WebOTXValve;
 
public final class TestValve extends ValveBase implements WebOTXValve {
  //-----------------------------------------------------------Constructors
   
  /**
  * Constructor
  */

  public TestValve() {
    super();
  }
   
  //---------------------------------------------------------Public Methods
  public int invoke(Request request, Response response)
      throws java.io.IOException, javax.servlet.ServletException{
    // HttpServletRequest 取得
    ServletRequest req = request.getRequest();
    HttpServletRequest hreq = (HttpServletRequest) req;
     
    // HttpServletRequest からコンテキストパス取得
    String ctxPath = hreq.getContextPath();
     
    // HttpServletRequest からセッション取得
    HttpSession session = hreq.getSession(false);
     
    // request からこのリクエストのコンテキスト取得
    Context ctx = request.getContext();
    String ctxName = ctx.getName();

    ……サーブレット実行前の処理の実装
   
    if(….) { // サーブレットを実行させる場合
      return INVOKE_NEXT; // リクエスト処理継続
    } else { // サーブレットを実行させない場合
      return END_PIPELINE; // リクエスト処理終了
    }
  }
   
  public void postInvoke(Request request, Response response)
      throws java.io.IOException, javax.servlet.ServletException {
    ・・・・・・ サーブレットの実行が終わった後の処理
  }
} 

2.2.10. プログラムで認証を行えるAPIの使用方法

クライアントからユーザ名とパスワードを入力し認証を行うかわりに、プログラムで認証を行うことが便利な場合があります。このような場合に利用するAPIの使用方法について説明します。 このAPIを利用することで、クライアントはBASIC認証もしくはFORMベース認証において、ユーザ名、パスワードを入力することなく認証が取れた状態にすることができます。
プログラムで認証が行えるAPI(ServletAuthenticator)の使用方法について説明します。

2.2.10.1. Webアプリケーションでの利用方法

WebアプリケーションでのServletAuthenticatorの利用方法を説明します。
ServletAuthenticatorを使用し、プログラムで認証を行うWebアプリケーションは次のように作成します。
1) 対象となるWebアプリケーションを作成します。
2) BASIC認証もしくはFORM認証に関する設定をweb.xmlおよびnec-web.xmlに行います。
3) ServletAuthenticatorを呼び出して認証させるためのservletもしくはJSPを追加します。

Memo
web.xmlおよびnec-web.xmlの設定
ServletAuthenticatorを呼び出して認証させるためのservletもしくはJSPには、認証が不要となるように設定する必要があります。

Servletから、ServletAuthenticatorを呼び出して認証する場合
以下のようなコードを、servlet内の適切な箇所に入れます。
import org.apache.catalina.authenticator.ServletAuthenticator;
  String username="admin";
  String password="adminadmin";
  ServletContext application =getServletContext();
  ServletAuthenticator sau = new ServletAuthenticator( application );
  sau.authenticate(req,res,username,password);
// req は、 HttpServletRequestオブジェクト、 resは、 HttpServletResponseオブジェクトです
JSPから、ServletAuthenticatorを呼び出して認証する場合
JSPから、ServletAuthenticatorを呼び出す場合は、下記のようなJSPファイルを作成します。
太字の部分が必要なコードです。
<%@page import="org.apache.catalina.authenticator.ServletAuthenticator" session="true" contentType="text/html;charset=Shift_JIS"%>
<html>
  <head>
    <title>サンプル</title>
  </head>
  <body>
    <%
      String username = "admin";
      String password = "adminadmin";
      ServletAuthenticator sau = new ServletAuthenticator( application );
      sau.authenticate(request, response, username, password);
    %>
    サンプルです<br>
  </body>
</html>

2.2.11. JSFアプリケーションの作成

2.2.11.1. 動的Webプロジェクト・ウィザードの活用

動的Webプロジェクト・ウィザードで、JSF Facet を持つWebアプリケーションのプロジェクトを作成できます。
メニュー ファイル新規プロジェクトを選択して、新規プロジェクトダイアログを表示します。
新規プロジェクト画面のWeb配下の 動的 Web プロジェクトを選択して、次へをクリックします。


図2.2.11.1-1

プロジェクト名を入力し、構成JavaServer Faces V2.0 Projectを指定するために、 変更をクリックします。


図2.2.11.1-2

プロジェクト・ファセットJavaServer Faces 2.0を選択し、OK を押します。


図2.2.11.1-3

次の Javaページでは、ソース・フォルダなどを変更可能ですが、 特に変更の必要が無い場合、次へで先に進んでください。
Web モジュールでも、必要に応じて適宜、指定を変更後、次へをクリックします。


図2.2.11.1-4

JSF 機能ページライブラリー構成を無効を選択します。


図2.2.11.1-5

表2.2.11.1-1
項目
説明
JSF 構成ファイル
必須。Faces配置ファイルを設定します。
JSF サーブレット名
必須。Faces Servlet名を設定します。
JSF Servlet Class Name
任意。省略の場合、javax.faces.webapp.FacesServletとします。
URL マッピング・パターン
JSF ServletにマッピングするURLパターンを設定します。普通は[/faces/*]を設定します。
完了 をクリックすると、JSF Facet持つ動的Webプロジェクトが以下のようなディレクトリ構成で作成されます。


図2.2.11.1-6

2.2.11.2. 既存動的WebプロジェクトのJSF Facetの追加と変更

既存の動的WebプロジェクトにJSF Facetの追加と変更ができます。
既存動的Webプロジェクトを選択して、右クリックして表示されるプロジェクトの プロパティーダイアログで プロジェクト・ファセットを選択します。


図2.2.11.2-1

JavaServer Facesを選択し、完了をクリックします。


図2.2.11.2-2

2.2.11.3. 入出力画面用ファイルの作成

入出力画面に用いる、XHTML ファイルの作成方法について説明します。
プロジェクト・エクスプローラーでプロジェクトを選び、右クリックメニュー 新規HTML ファイル を選択して、 選択画面を表示します。


図2.2.11.3-1

ツリーWebContent(コンテントディレクトリ)を選択して、作成するファイル名をを拡張子を xhtml で入力し、 次へをクリックします。


図2.2.11.3-2

テンプレートを適宜、選択して、完了をクリックします。


図2.2.11.3-3

xhtml ファイルの編集にはWeb ページ・エディターが利用できます。
生成されたxhtmlファイルで、右クリックメニューアプリケーションから開くWebページ・エディターを選択します。


図2.2.11.3-4

Web ページ・エディターでは、グラフィカルな操作での編集が可能です。


図2.2.11.3-5

2.2.11.4. JSF配置ファイルの編集

JSFの配置ファイルfaces-config.xmlをテキストエディターでまたは Faces 構成エディターのGUIエディターで編集します。
Faces 構成エディターで編集する場合、faces-config.xmlファイルを選択し、右クリックメニュー アプリケーションから開くFaces 構成エディターを選択します。


図2.2.11.4-1

Faces 構成エディターナビゲーション・ルールなどのfaces-config.xmlの内容をGUIにより編集できます。


図2.2.11.4-2

2.2.11.5. JSFアプリケーションのエクスポート

作成したJSFアプリケーションをWebアプリケーションとしてWARファイルの形式でエクスポートします。
メニュー ファイルエクスポートを選択して、エクスポートダイアログを表示します。
新規ダイアログで WebWAR ファイルを選択して、次へ をクリックします。


図2.2.11.5-1

Web プロジェクトで作成したJSFアプリケーションを選択し、 宛先でターゲットのアーカイブを指定します。完了 をクリックすると、アーカイブファイルが生成されます。


図2.2.11.5-2

2.2.11.6. JSFアプリケーションのデプロイとアクセス

JSFアプリケーションの配備は通常のWebアプリケーションと同様、WebOTX統合運用管理ツールで配備します。 配備後、Internet Exploerなどのブラウザでアクセスします。

2.2.12. Comet

従来のWebアプリケーションでは、Webコンテナで発生したイベントをクライアントへ通知するには、クライアントが Webコンテナへ定期的にリクエストを行いイベント情報を取得する必要がありました。 しかし、Comet を使う事によりWebコンテナからのプッシュ機能が実現され、リアルタイムでクライアントへイベントを 通知する事ができます。

Servlet3.0 APIを利用したComet Webアプリケーションの作成例を以下に示します。

※Cometの利用に関しては、 [ 注意制限事項 > 3. Webコンテナ > 3.2. 制限事項 ] がありますので御確認ください。

2.2.12.1. 非同期サポートの宣言

アノテーション @WebServlet で asyncSupported=trueを指定するか、web.xmlの<servlet>要素の子要素として <async-supported>true</async-supported>を追加します。


import javax.servlet.AsyncContext;
import javax.servlet.AsyncEvent;
import javax.servlet.AsyncListener;

・・・

@WebServlet(name = "pooling", urlPatterns = {"/pooling"}, asyncSupported=true)
public class PollingServlet extends HttpServlet {


2.2.12.2. メッセージキューの作成

Servletのinitメソッドで、メッセージキュー処理を行います。


    Queue<AsyncContext> queue = new ConcurrentLinkedQueue<AsyncContext>();
    BlockingQueue<String> messageQueue = new LinkedBlockingQueue<String>();
    Thread notifierThread = null;

    public void init(ServletConfig config) throws ServletException { 
        super.init(config);
        Runnable notifierRunnable = new Runnable() {
            public void run() {
                try{
                    while(true){ 
                        String cMessage = messageQueue.take();
                        for (AsyncContext ac : queue) {
                            try {
                                PrintWriter acWriter = ac.getResponse().getWriter();
                                acWriter.println(cMessage);
                                acWriter.flush();
                            } catch(IOException ex) {
                                queue.remove(ac);
                            }
                        }
                    }
                }catch(InterruptedException e){
                    log("messageQueue take error", e);
                }
            }
        };
        notifierThread = new Thread(notifierRunnable);
        notifierThread.start();
    }




2.2.12.3. 非同期処理の開始

最初のリクエストを受けた際に、非同期でレスポンスを返す事ができる様にするためにstartAsync() を行ってAsyncContextを取得します。


    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        final AsyncContext ac = request.startAsync();
        ac.setTimeout(30 * 60 * 1000);
        ac.addListener(new AsyncListenerImpl());
        this.queue.add(ac);
        response.setContentType("text/plain;charset=UTF-8");
        response.setCharacterEncoding("utf-8");
        PrintWriter pw = response.getWriter(); 
        pw.println("Welcome");
        pw.flush();
    }



2.2.12.4. メッセージの通知

POSTされたデータをメッセージキューに追加する事で、initメソッドで起動したスレッドへメッセージが通知されます。


    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String user = request.getParameter("user");
        String message = request.getParameter("message");
        this.messageQueue.add("[" + user + "]: " + message);
    }



2.2.12.5. その他の実装

destroyメソッドでスレッドを止めます。 AsyncListener の実装クラスではエラー処理等を行います。


    @Override
    public void destroy() {
        this.queue.clear();
        this.notifierThread.interrupt();
    }

    class AsyncListenerImpl extends Thread implements AsyncListener{
        @Override
        public void onStartAsync(AsyncEvent arg0) throws IOException {
            …
        }

        @Override
        public void onComplete(AsyncEvent arg0) throws IOException {
            …
        }

        @Override
        public void onError(AsyncEvent arg0) throws IOException {
            queue.remove(arg0.getAsyncContext());
        }

        @Override
        public void onTimeout(AsyncEvent arg0) throws IOException {
            queue.remove(arg0.getAsyncContext());
        }
        
    }
}


2.2.12.6. API リファレンス

API リファレンスについては以下のドキュメントを参照してください。

2.2.13. Webアプリケーションのデプロイ

2.2.13.1. 統合運用管理ツールを利用したデプロイ

統合運用管理ツールの詳細については、 [ 運用ツールガイド > 2. 統合運用管理ツール(WebOTX Administrator) ] を参照してください。

Memo
『統合運用管理ツール』はオプション製品です。ご利用の際は、『WebOTX Administrator』を別途ご購入下さい。

WARファイルの作成
プロジェクト・エクスプローラーでプロジェクトの右クリックメニューで、 エクスポート > WARファイル を選択します。


図2.2.13.1-1

宛先にWARファイルの出力先を入力した状態で 完了 をクリックします。


図2.2.13.1-2

統合運用管理ツールを起動します。

スタートメニューから プログラムWebOTX統合運用管理ツールを選択します。


図2.2.13.1-3

Memo
配備操作を行うにはテスト用サーバーが動作している必要があります。

統合運用管理ツールを起動します。


図2.2.13.1-4

接続ダイアログでホストlocalhostを入力して、ドメインdomain1を入力して、ポート番号6212を設定して、パスワードを入力して、接続をクリックします。


図2.2.13.1-5

WebOTX管理ドメインでdomain1に接続されていることを確認します。


図2.2.13.1-6

ツリーでアプリケーションの右クリックメニュー コンポーネントの配備 をクリックします。


図2.2.13.1-7

コンポーネントの配備ダイアログでコンポーネントタイプにWebコンポーネントを選択します。


図2.2.13.1-8

ファイルの参照をクリックして、先に生成したwarファイルを選択して、 開く をクリックします。


図2.2.13.1-9

配備 をクリックして、確認ダイアログが表示されます。


図2.2.13.1-10

はいをクリックしてから情報ダイアログでコンポーネントの配備が正常終了しましたというメッセージを確認します。


図2.2.13.1-11

Webモジュールにデプロイしたアプリケーションが存在することを確認します。


図2.2.13.1-12

2.2.13.2. 「サーバで実行」機能を利用したデプロイ

サーバーで実行 でのデプロイについては、 [ アプリケーション開発ガイド(共通) > 6. サーバツール > 6.2. サーバで実行 ] をご覧ください。

2.2.13.3. 運用管理コマンド(otxadmin)を利用したデプロイ

  1. 2.2.13.1. 統合運用管理ツールを利用したデプロイ の、「WARファイルの作成」の手順で、WAR ファイルを作成し、 適当なディレクトリに保存します。
  2. otxadminを起動し、ログインします。
  3. deployコマンドで WARファイルを配備します。
    WebOTX AS Express、もしくはWebOTX AS Standard/Enterpriseのスタンダードモードの場合は以下を実行します。
    otxadmin> deploy <WAR ファイルへのパス>
    WebOTX AS Standard/Enterpriseのアドバンスドモードの場合は、
    アプリケーショングループとプロセスグループを指定する必要があるため以下を実行します。
    otxadmin> deploy --apgroup <アプリケーショングループ名> --pgroup <プロセスグループ名> <WAR ファイルへのパス>

2.2.13.4. web.xmlデプロイメント記述子

新規web.xmlとnec-web.xmlの作成
新しいweb.xmlとnec-web.xmlファイルは以下の手順で作成することができます。 作成方法は同じなので、ここでは web.xml の場合について説明します。
  1. Developer's Studioを起動します。
  2. メニュー ファイル新規その他 を選択して、新規 ウィザードを起動します。


    図2.2.13.4-1

  3. 新規 ウィザードのXMLからXML ファイルを選択して、次へ をクリックします。
  4. 新規web.xmlウィザードの親フォルダーを入力または選択にweb.xmlファイルの格納先( Webアプリケーションのルートフォルダ /WEB-INF)を設定します。


    図2.2.13.4-2

  5. ファイル名にweb.xmlファイル名(web.xml)を設定して、完了 をクリックします。
  6. 新規web.xmlファイルができて、web.xmlエディタが開きます。
web.xmlファイルの要素
Java Servlet 3.0仕様でweb.xmlファイルに使用できる要素をすべてサポートします。

サポートする要素の一覧を以下に示します。
表2.2.13.4-1
要素
説明
<?xml version="1.0"encoding="UTF-8"?>
このweb.xmlファイルの文字コードを指定します。この値は、XML宣言のエンコーディング宣言に設定します。
<?xml version="1.0" encoding="ISO-8859-1"?>
エンコーディングを以下から選択します。

UTF-8
UTF-16
ISO-8859-1
EUC-JP
Shift_JIS
ISO-2022-JP
BIG5
GB2312
既定値:ISO-8859-1
必須(1個)
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5" metadata-complete="true">
メタデータを指定します。
必須(1個)
任意(0-1個)
サブ要素:
description
display-name
icon
distributable
context-param
filter
filter-mapping
listener
servlet
servlet-mapping
session-config
mime-mapping
welcome-file-list
error-page
jsp-config
security-constraint
login-config
security-role
env-entry
ejb-refまたはejb-local-ref
service-ref
resource-ref
resource-env-ref
message-destination-ref
message-destination
locale-encoding-mapping-list
persistence-context-ref
persistence-unit-ref
post-construct
pre-destroy
・ description Webアプリケーションの説明を設定します。
任意(0個以上)*1
・ display-name Webアプリケーションの表示名を設定します。
任意(0個以上)*1
・ icon アイコンを設定します。
任意(0個以上)*1
サブ要素:
small-icon
large-icon
・ ・ small-icon 小さいアイコン
任意(0-1個)
・ ・ large-icon 大きいアイコン
任意(0-1個)
・ distributable 配布可能かどうか指定します。
任意(0個以上)*2
・ context-param コンテキストパラメータを設定します。
任意(0個以上)
サブ要素:
description
param-name
param-value
・ ・ description アイコンをクリックして、説明ダイアログを表示し、コンテキストパラメータの説明を設定します。
任意(0個以上)*1
・ ・ param-name WebアプリケーションのServletコンテキスト初期化パラメータ名を設定します。
必須(1個)
・ ・ param-value パラメータの値を設定します。
必須(1個)
・ filter サーブレットフィルタリスト。
任意(0個以上)
サブ要素:
description
display-name
icon
filter-name
filter-class
init-param
・ ・ description フィルタの説明を設定します。
任意(0個以上)*1
・ ・ display-name フィルタの表示名を設定します。
任意(0個以上)*1
・ ・ icon アイコンを設定します。
任意(0個以上)*1
サブ要素:
small-icon
large-icon
・ ・ ・ small-icon 小さいアイコン
任意(0-1個)
・ ・ ・ large-icon 大きいアイコン
任意(0-1個)
・ ・ filter-name フィルタの表示名を設定します。
必須(1個)
・ ・ filter-class フィルタのクラス名を設定します。
必須(1個)
・ ・ init-param 初期化パラメータ
任意(0個以上)
サブ要素:
description
param-name
param-value
・ ・ ・ description 初期化パラメータの説明を設定します。
任意(0個以上)*1
・ ・ ・ param-name 初期化パラメータ名を設定します。
必須(1個)
・ ・ ・ param-value 初期化パラメータの値を設定します。
必須(1個)
・ filter-mapping サーブレットフィルタマッピングを設定します。
任意(0個以上)
サブ要素:
filter-name
url-pattern
servlet-name
dispatcher
・ ・ filter-name フィルタ名を設定します。
必須(1個)
・ ・ url-pattern URLパターンを設定します。
url-patternまたはservlet-nameが必須(1個以上)
・ ・ servlet-name フィルタ名を設定します。
・ ・ dispatcher ディスパッチャを設定します。  
FORWARD
REQUEST
INCLUDE
ERROR
[任意(0個-4個)
・ listener リスナを設定します。
任意(0個以上)
サブ要素:
description
display-name
icon
listener-class
・ ・ description リスナの説明を設定します。
任意(0個以上)*1
・ ・ display-name リスナの表示名を設定します。
任意(0個以上)*1
・ ・ icon リスナのアイコンを設定します。
任意(0個以上)*1
サブ要素:
small-icon
large-icon
・ ・ ・ small-icon 小さいアイコン
任意(0-1個)
・ ・ ・ large-icon 大きいアイコン
任意(0-1個)
・ ・ listener-class リスナのクラス名を設定します。
必須(1個)
・ servlet サーブレットリストを設定します。
任意(0個以上)
サブ要素:
description
display-name
icon
servlet-name
servlet-class
jsp-file
init-param
load-on-startup
run-as
security-role-ref
・ ・ description サーブレット説明を設定します。
任意(0個以上)*1
・ ・ display-name サーブレットの表示名を設定します。
任意(0個以上)*1
・ ・ icon アイコンを設定します。
任意(0個以上)*1
サブ要素:
small-icon
large-icon
・ ・ ・ small-icon 小さいアイコン
任意(0-1個)
・ ・ ・ large-icon 大きいアイコン
任意(0-1個)
・ ・ servlet-name サーブレット名を設定します。
必須(1個)
・ ・ servlet-class ターゲット(サーブレットクラス名またはJSPファイル)を設定します。
servlet-classまたはjsp-fileが必須(1個)
・ ・ jsp-file Webアプリケーション内のJSPへのパスを設定します。パスは"/"で始まります。
・ ・ init-param 初期化パラメータを一覧を設定します。
任意(0個以上)
サブ要素:
description
param-name
param-value
・ ・ ・ description 初期化パラメータの説明を設定します。
任意(0個以上)*1
・ ・ ・ param-name 初期化パラメータ名を設定します。
必須(1個)
・ ・ ・ param-value 初期化パラメータの値を設定します。
必須(1個)
・ ・ load-on-startup サーブレットのロード順をと整数値で設定します。
任意(0-1個)
・ ・ run-as 実行タイプ
任意(0-1個)
サブ要素:
description
role-name
・ ・ ・ description 実行タイプの説明を設定します。
任意(0個以上)*1
・ ・ ・ role-name セキュリティロール名のリストから、使用するロールを設定します。
任意(0-1個)
・ ・ security-role-ref サーブレットリストから選択したサーブレットに対して、Webアプリケーション内で使用するロール参照名と、 ロールで定義したセキュリティロール名をマッピングします。
任意(0個以上)
サブ要素:
description
role-name
role-link
・ ・ ・ description ロール参照の説明を設定します。
任意(0個以上)*1
・ ・ ・ role-name Webアプリケーション内で使用するロール参照名を設定します。
必須(1個)
・ ・ ・ role-link ロール名で設定したロール参照名で参照するロールを、 ロールで定義したセキュリティロール名のリストから選択して設定します。
任意(0-1個)
・ servlet-mapping サーブレットにマッピングするURLパターンを設定します。
任意(0個以上)
サブ要素:
servlet-name
url-pattern
・ ・ servlet-name サーブレット名
必須(1個)
・ ・ url-pattern マッピングするURLパターンを設定します。
必須(1個以上)
・ session-config セッションの設定です。
任意(0個以上)*3
サブ要素:
session-timeout
・ ・ session-timeout セッションタイムアウト間隔を分単位で設定します。
任意(0-1個)
※整数値でなければなりません。
※0以下の数値を指定するとタイムアウトのチェックを行いません。 セッションタイムアウトのチェックを行わないと時間経過によるセッションオブジェクトの解放が行われません。 この場合、不要になったセッションオブジェクトがメモリ上に残存する事になり、 結果 OutOfMemoryError が発生する可能性がありますので注意してください。 なお、OutOfMemoryError が発生した場合や意図的にセッションオブジェクトを解放するにはドメインを再起動してください。
・ ・ tracking-mode セッション生成時のセッションIDの扱いを設定します。
任意(0-2個)
"COOKIE"もしくは"URL"を設定します。"COOKIE"を設定した場合はセッション生成時セッションIDを格納したCOOKIEが発行されます。 "URL"を設定した場合はHttpServletResponseのencodeURL()を実施した際、URLにセッションIDが付加されます。 設定が無い場合の規定値は"COOKIE,URL"両方の指定となります。
・ mime-mapping マッピングする拡張子とMIMEタイプを設定します。
任意(0個以上)
サブ要素:
extension
mime-type
・ ・ extension 拡張子("txt"など)を設定します。
必須(1個)
・ ・ mime-type MIMEタイプ("txt/plain"など)を設定します。
必須(1個)
・ welcome-file-list デフォルトWelcomeファイルとして使用するファイル名を設定します。
任意(0個以上)*4
サブ要素:
welcome-file
・ ・ welcome-file デフォルトWelcomeファイルとして使用するファイル名を指定します。
必須(1個以上)
・ error-page エラーマッピングを設定します。
任意(0個以上)
サブ要素:
error-code
exception-type
location
・ ・ error-code エラーコードを設定します。
error-codeまたはexception-typeが必須(1個)
・ ・ exception-type 例外の型を設定します。
・ ・ location Webアプリケーションのルートからの相対でWebアプリケーション内のリソースの場所を設定します。
必須(1個)
※先頭は"/"で始まらなければなりません。
・ jsp-config タグライブラリ リスト。
任意(0個以上)*3
サブ要素:
taglib
jsp-property-group
・ ・ taglib JSPタグライブラリを設定します。
任意(0個以上)
サブ要素:
taglib-uri
taglib-location
・ ・ ・ taglib-uri JSPタグライブラリリストの1行:「URI」
必須(1個)
・ ・ ・ taglib-location タグライブラリ記述ファイルの場所をWebアプリケーションのルートからの相対パスで設定します。
必須(1個)
・ ・ jsp-property-group JSPプロパティグループを設定します。
任意(0個以上)
サブ要素:
description
display-name
icon
url-pattern
el-ignored
page-encoding
scripting-invalid
is-xml
include-prelude
include-coda
・ ・ ・ description JSPプロパティグループの説明を設定します。
任意(0個以上)*1
・ ・ ・ display-name グループ名を設定します。
任意(0個以上)*1
・ ・ ・ icon アイコンを設定します。
任意(0個以上)*1
サブ要素:
small-icon
large-icon
・ ・ ・ ・ small-icon 小さいアイコン
任意(0-1個)
・ ・ ・ ・ large-icon 大きいアイコン
任意(0-1個)
・ ・ ・ url-pattern JSPプロパティグループに含まれるJSPのURLパターンを設定します。
任意(1個以上)
・ ・ ・ el-ignored ELを無効にするかどうか指定します。
true: ELが無効
false: ELが有効

任意(0-1個)
・ ・ ・ page-encoding ページエンコーディングの文字コードを設定します。
任意(0-1個)
・ ・ ・ scripting-invalid スクリプトを無効にするかどうか指定します。 true: スクリプトが無効
false: スクリプトが有効
任意(0-1個)
・ ・ ・ is-xml</is-xml> URLパターンに一致するリソースが、XMLドキュメントかどうか指定します。
true : XMLドキュメントである
false : XMLドキュメントでない
任意(0-1個)
・ ・ ・ include-prelude 先頭にインクルードするファイルを設定します。
任意(0個以上)
・ ・ ・ include-coda 末尾にインクルードするファイルを設定します。
任意(0個以上)
・ security-constraint セキュリティ制約リスト
任意(0個以上)
サブ要素:
display-name
web-resource-collection
auth-constraint
user-data-constraint
・ ・ display-name セキュリティ制約の表示名を設定します。
任意(0個以上)*1
・ ・ web-resource-collection セキュリティ制約リストで選択したセキュリティ制約を適用するWebリソースコレクションを設定します。
任意(1個以上)
サブ要素:
web-resource-name
description
url-pattern
http-method
・ ・ ・ web-resource-name Webリソースコレクションの名前を設定します。
必須(1個)
・ ・ ・ description Webリソースコレクションリスト説明を設定します。
任意(0個以上)*1
・ ・ ・ url-pattern セキュリティ制約を適用するリソースのURLパターンを設定します。
任意(1個以上)
・ ・ ・ http-method セキュリティ制約を適用するHTTPメソッドを設定します。
任意(0-1個)
・ ・ auth-constraint セキュリティ制約リストの1行:「認定ロール」
任意(0-1個)
サブ要素:
description
role-name
・ ・ ・ description 認定ロールの説明を設定します。
任意(0個以上)*1
・ ・ ・ role-name Webリソースコレクションへのアクセスを許可するロールを選択します。
任意(0個以上)
・ ・ user-data-constraint セキュリティ制約リストの転送保証の設定。
任意(0-1個)
サブ要素:
description
transport-guarantee
・ ・ ・ description 転送保証の説明を設定します。
任意(0個以上)*1
・ ・ ・ transport-guarantee セキュリティ制約リストで選択したセキュリティ制約に対して、通信データの保証レベルを設定します。
必須(1個)
・ login-config ユーザ認証方法。
任意(0個以上)*3
サブ要素:
auth-method
realm-name
form-login-config
・ ・ auth-method 使用する認証方法を設定します。
任意(0-1個)
・ ・ realm-name 使用するレルム名を設定します。
任意(0-1個)
・ ・ form-login-config ユーザ認証方法
任意(0-1個)
サブ要素:
form-login-page
form-error-page
・ ・ ・ form-login-page ログインに使用するページの場所を設定します。
必須(1個)
※先頭は"/"で始まらなければなりません。
・ ・ ・ form-error-page ログイン失敗時に表示するエラーページの場所を設定します。
必須(1個)
※先頭は"/"で始まらなければなりません。
・ security-role セキュリティロール
任意(0個以上)
サブ要素:
description
role-name
・ ・ description セキュリティロールの説明を設定します。
任意(0個以上)*1
・ ・ role-name セキュリティロール名を設定します。
必須(1個)
・ env-entry 環境エントリ
任意(0個以上)
サブ要素:
description
env-entry-name
env-entry-type
env-entry-value
mapped-name
injection-target
・ ・ description 環境エントリの説明を設定します。
任意(0個以上)*1
・ ・ env-entry-name Webアプリケーションの環境エントリ名を設定します。JNDI名です。
必須(1個)
・ ・ env-entry-type 環境エントリ値の型を以下から指定します。
“”
java.lang.Boolean
java.lang.Byte
java.lang.Character
java.lang.String
java.lang.Short
java.lang.Integer
java.lang.Long
java.lang.Float
java.lang.Double
任意(0-1個)
・ ・ env-entry-value 環境エントリ値を設定します。選択した型として適当な値でなければなりません。 型でBooleanを選択した場合は、trueかfalseを選択します。
任意(0-1個)
・ ・ mapped-name マップ名。環境エントリのリソースグループを設定します。
任意(0-1個)
・ ・ injection-target インジェクションターゲット。環境エントリのリソースグループを設定します。
任意(0個以上)
サブ要素:
injection-target-class
injection-target-name
・ ・ ・ injection-target-class インジェクションターゲットクラスを設定します。
必須(1個)
・ ・ ・ injection-target-name インジェクションターゲット名を設定します。
必須(1個)
・ ejb-ref または ejb-local-ref EJB参照
任意(0個以上)
サブ要素:
description
ejb-ref-name
ejb-ref-type
home</home>
remote</remote>
ejb-link
mapped-name
injection-target
・ ・ description EJB参照の説明を設定します。
任意(0個以上)*1
・ ・ ejb-ref-name Webアプリケーションのコードで使うEJB参照名を設定します。
必須(1個)
・ ・ ejb-ref-type 参照するエンタプライズBeanのタイプを以下から選択します。
Entity
Session
任意(0-1個)
・ ・ home</home> 参照するエンタプライズBeanのホームインタフェースを設定します。
任意(0-1個)
・ ・ remote</remote> 参照するエンタプライズBeanのローカルインタフェースまたはリモートインタフェース(インタフェースでの設定による)を設定します。
任意(0-1個)
・ ・ ejb-link 参照対象のエンタプライズBeanを設定します。
任意(0-1個)
・ ・ mapped-name マップ名。EJB参照のリソースグループを設定します。
任意(0-1個)
・ ・ injection-target インジェクションターゲット。EJB参照のリソースグループを設定します。
任意(0個以上)
サブ要素:
injection-target-class
injection-target-name
・ ・ ・ injection-target-class インジェクションターゲットクラスを設定します。
必須(1個)
・ ・ ・ injection-target-name インジェクションターゲット名を設定します。
必須(1個)
・ service-ref Webサービス参照を設定します。
任意(0個以上)
サブ要素:
description
display-name
icon
service-ref-name
service-interface
wsdl-file
jaxrpc-mapping-file
service-qname
port-component-ref
handler
・ ・ description Webサービス参照の説明を設定します。
任意(0個以上)*1
・ ・ display-name Webサービスの表示名を設定します。
任意(0個以上)*1
・ ・ icon アイコンを設定します。
任意(0個以上)*1
サブ要素:
small-icon
large-icon
・ ・ ・ small-icon 小さいアイコン
任意(0-1個)
・ ・ ・ large-icon 大きいアイコン
任意(0-1個)
・ ・ service-ref-name Webサービスの参照名を設定します。
必須(1個)
・ ・ service-interface インタフェースを設定します。
必須(1個)
・ ・ wsdl-file WSDLファイルを設定します。
任意(0-1個)
・ ・ jaxrpc-mapping-file JAX-RPCマッピングを記述しているファイルを設定します。
任意(0-1個)
・ ・ service-qname サービスのQNameを設定します。
任意(0-1個)
※「WSDLファイル」を設定した場合のみ有効です。
※QNameの形式は、<service-qname xmlns:service_qname_ns__="ネームスペース">service_qname_ns__: ローカルパート</service-qname>です。
・ ・ port-component-ref ポートコンポーネント参照を設定します。
任意(0個以上)
サブ要素:
service-endpoint-interface
port-component-link
・ ・ ・ service-endpoint-interface WSDLポートのサービスエンドポイントインターフェースのJavaクラス名を設定します。
必須(1個)
・ ・ ・ port-component-link サービスエンドポイントインターフェースと結びつけて参照するポートコンポーネントの名前を設定します。
任意(0-1個)
・ ・ handler ポートコンポーネントのためのハンドラを設定します。
任意(0個以上)
サブ要素:
description
display-name
icon
handler-name
handler-class
init-param
soap-header
soap-role
port-name
・ ・ ・ description ハンドラの説明を設定します。
任意(0個以上)*1
・ ・ ・ display-name ハンドラの表示名を設定します。
任意(0個以上)*1
・ ・ ・ icon アイコンを設定します。
任意(0個以上)*1
サブ要素:
small-icon
large-icon
・ ・ ・ ・ small-icon 小さいアイコン
任意(0-1個)
・ ・ ・ ・ large-icon 大きいアイコン
任意(0-1個)
・ ・ ・ handler-name ハンドラ名を設定します。
必須(1個)
・ ・ ・ handler-class ハンドラ実装クラスのクラス名を設定します。
必須(1個)
・ ・ ・ init-param ハンドラの初期化パラメータを設定します。
任意(0個以上)
サブ要素:
description
param-name
param-value
・ ・ ・ ・ description 期化パラメータの説明を設定します。
任意(0個以上)*1
・ ・ ・ ・ param-name 初期化パラメータ名を設定します。
必須(1個)
・ ・ ・ ・ param-value 初期化パラメータの値を設定します。
必須(1個)
・ ・ ・ soap-header ハンドラリストで選択したハンドラで処理するSOAPヘッダのQNameを設定します。
任意(0個以上)
※QNameの形式は、<service-qnamexmlns:service_qname_ns__=" ネームスペース">service_qname_ns__:ローカルパート</service-qname>です。
・ ・ ・ soap-role SOAPロールを設定します。
任意(0個以上)
・ ・ ・ port-name ハンドラリストで選択したハンドラが連携すべきWSDLポート名を設定します。
任意(0個以上)
・ resource-ref Webアプリケーションの外部リソースへの参照を設定します。
任意(0個以上)
サブ要素:
description
res-ref-name
res-type
res-auth
res-sharing-scope
mapped-name
injection-target
・ ・ description リソース参照の説明を設定します。
任意(0個以上)*1
・ ・ res-ref-name リソースマネージャ接続ファクトリ参照の名前を設定します。JNDI名です。
必須(1個)
・ ・ res-type データソースの型を指定します。 データソースのJavaクラス名かデータソースで実装しているインタフェース名です。
任意(0-1個)
・ ・ res-auth リソースマネージャにサインオンするのがWebアプリケーションかコンテナか指定します。選択肢は以下の通りです。
Application
Container
任意(0-1個)
・ ・ res-sharing-scope リソースマネージャ接続ファクトリ参照から取得したコネクションを共有できるかどうか指定します。
既定値:共有可能
任意(0-1個)
・ ・ mapped-name マップ名。リソースマネージャ接続ファクトリ参照のリソースグループを設定します。
任意(0-1個)
・ ・ injection-target インジェクションターゲット。リソースマネージャ接続ファクトリ参照のリソースグループを設定します。
任意(0個以上)
サブ要素:
injection-target-class
injection-target-name
・ ・ ・ injection-target-class インジェクションターゲットのクラスを設定します。
必須(1個)
・ ・ ・ injection-target-name インジェクションターゲット名を設定します。
必須(1個)
・ resource-env-ref リソース環境参照を設定します。
任意(0個以上)
サブ要素:
description
resource-env-ref-name
resource-env-ref-type
mapped-name
injection-target
・ ・ description リソース環境参照の説明を設定します。
任意(0個以上)*1
・ ・ resource-env-ref-name リソース環境参照の名前を設定します。JNDI名です。
必須(1個)
・ ・ resource-env-ref-type リソース環境参照の型を設定します。Javaクラス名かインタフェース名です。
任意(0-1個)
・ ・ mapped-name マップ名。リソース環境参照のリソースグループを設定します。
任意(0-1個)
・ ・ injection-target インジェクションターゲット。リソース環境参照のリソースグループを設定します。
任意(0個以上)
サブ要素:
injection-target-class
injection-target-name
・ ・ ・ injection-target-class インジェクションターゲットクラスを設定します。
必須(1個)
・ ・ ・ injection-target-name インジェクションターゲット名を設定します。
必須(1個)
・ message-destination-ref メッセージ宛先参照を設定します。
任意(0個以上)
サブ要素:
description
message-destination-ref-name
message-destination-type
message-destination-usage
message-destination-link
mapped-name
injection-target
・ ・ description メッセージ宛先参照の説明を設定します。
任意(0個以上)*1
・ ・ message-destination-ref-name メッセージ宛先参照の参照名を設定します。
必須(1個)
・ ・ message-destination-type メッセージ宛先参照の型を設定します。
任意(0-1個)
・ ・ message-destination-usage メッセージ宛先参照の使用法を設定します。
任意(0-1個)
・ ・ message-destination-link メッセージ宛先参照のターゲット宛先名を設定します。
任意(0-1個)
・ ・ mapped-name マップ名。メッセージ宛先参照のリソースグループを設定します。
任意(0-1個)
・ ・ injection-target インジェクションターゲット。メッセージ宛先参照のリソースグループを設定します。
任意(0個以上)
サブ要素:
injection-target-class
injection-target-name
・ ・ ・ injection-target-class インジェクションターゲットクラスを設定します。
必須(1個)
・ ・ ・ injection-target-name インジェクションターゲット名を設定します。
必須(1個)
・ message-destination メッセージ宛先
任意(0個以上)
サブ要素:
description
display-name
icon
message-destination-name
mapped-name
・ ・ description メッセージ宛先の説明を設定します。
任意(0個以上)*1
・ ・ display-name メッセージ宛先の表示名を設定します。
任意(0個以上)*1
・ ・ icon アイコンを設定します。
任意(0個以上)*1
サブ要素:
small-icon
large-icon
・ ・ ・ small-icon 小さいアイコン
任意(0-1個)
・ ・ ・ large-icon 大きいアイコン
任意(0-1個)
・ ・ message-destination-name メッセージ宛先の名前を設定します。
必須(1個)
・ ・ mapped-name メッセージ宛先のマップ名を設定します。
任意(0-1個)
・ locale-encoding-mapping-list ロケールエンコーディングマッピングリストを設定します。
任意(0個以上)*4
サブ要素:
locale-encoding-mapping
・ ・ locale-encoding-mapping ロケールエンコーディングマッピングを設定します。
任意(1個以上)
サブ要素:
locale
encoding
・ ・ ・ locale ロケールを設定します。
必須(1個)
※ ISO-639-1で定義されている"Language-code"("ja"など)か、 "Language-code_Country-code"("ja_JP"など)でなければなりません。
・ ・ ・ encoding エンコーディングを設定します。
必須(1個)
※ IANAキャラクターセットでなければなりません。
・ persistence-context-ref 永続コンテキスト参照リスト
任意(0個以上)
サブ要素:
description
persistence-context-ref-name
persistence-unit-name
persistence-context-type
persistence-property
mapped-name
injection-target
・ ・ description 永続コンテキスト参照の説明を設定します。
任意(0個以上)*1
・ ・ persistence-context-ref-name 永続コンテキスト参照名を設定します。
必須(1個)
・ ・ persistence-unit-name 永続結合名を設定します。
任意(0-1個)
・ ・ persistence-context-type 永続コンテキストタイプを設定します。
任意(0-1個)
・ ・ persistence-property 永続コンテキスト参照の永続プロパティを設定します。
任意(0個以上)
サブ要素:
name
value
・ ・ ・ name 永続プロパティの名前を設定します。
必須(1個)
・ ・ ・ value 永続プロパティの値を設定します。
必須(1個)
・ ・ mapped-name マップ名。永続コンテキスト参照のリソースグループを設定します。
任意(0-1個)
・ ・ injection-target インジェクションターゲット。永続コンテキスト参照のリソースグループを設定します。
任意(0個以上)
サブ要素:
injection-target-class
injection-target-name
・ ・ ・ injection-target-class インジェクションターゲットクラス
必須(1個)
・ ・ ・ injection-target-name インジェクションターゲット名
必須(1個)
・ persistence-unit-ref 永続結合参照
任意(0個以上)
サブ要素:
description
persistence-unit-ref-name
persistence-unit-name
mapped-name
injection-target
・ ・ description 永続結合参照の説明を設定します。
任意(0個以上)*1
・ ・ persistence-unit-ref-name 永続結合参照名を設定します。
必須(1個)
・ ・ persistence-unit-name 永続結合名を設定します。
任意(0-1個)
・ ・ mapped-name マップ名。永続結合参照のリソースグループを設定します。
任意(0-1個)
・ ・ injection-target インジェクションターゲット。永続結合参照のリソースグループを設定します。
任意(0個以上)
サブ要素:
injection-target-class
injection-target-name
・ ・ ・ injection-target-class インジェクションターゲットクラス
必須(1個)
・ ・ ・ injection-target-name インジェクションターゲット名
必須(1個)
・ post-construct ポストコンストラクト
任意(0個以上)
サブ要素:
lifecycle-callback-class
lifecycle-callback-method
・ ・ lifecycle-callback-class ライフサイクルコールバッククラスを設定します。
任意(0-1個)
・ ・ lifecycle-callback-method ライフサイクルコールバックメソッドを設定します。
必須(1個)
・ pre-destroy 破棄直前イベント
任意(0個以上)
サブ要素:
lifecycle-callback-class
lifecycle-callback-method
・ ・ lifecycle-callback-class ライフサイクルコールバッククラスを設定します。
任意(0-1個)
・ ・ lifecycle-callback-method ライフサイクルコールバックメソッドを設定します。
必須(1個)
nec-web.xmlファイルの要素
nec-web.xmlファイルで定義できる要素の一覧を以下に示します。
web.xmlエディタのGUIページでサポートしていない要素は、nec-web.xmlファイルをテキストエディタで開いて定義してください。
表2.2.13.4-2
要素
説明
nec-web-app
Webアプリケーションに対してWebOTX固有の設定を定義するnec-web.xmlファイルのルート要素です。
error-url とhttpservlet-security-providerを属性にもつnec-web-appを指定します。
[1個]
サブ要素:
context-root
security-role-mapping
servlet
idempotent-url-pattern
session-config
ejb-ref
resource-ref
resource-env-ref
service-ref
message-destination-ref
cache
class-loader
jsp-config
locale-charset-info
parameter-encoding
property
message-destination
webservice-description
・ context-root
Webアプリケーションのコンテキストルートを指定します。
[0-1個]

※コンテキストパスに "/" を含めると一部機能が利用できなくなります。詳しくは [注意制限事項 > 3. Webコンテナ > 3.1. 注意事項] を参照してください。
・ security-role-mapping
現在のアクティブレルムに存在するユーザやグループにロールを割り当てます。
[0個以上]
サブ要素:
role-name
principal-name
group-name
・ ・ role-name
web.xmlファイルのsecurity-role要素で定義しているロール名を指定します。
[1個]
・ ・ principal-name
ロールを割り当てるユーザ名を指定します。
class-nameを属性にもつprincipal-nameを指定します。
[0個以上 ただしgroup-nameがなければ1個以上]
・ ・ group-name
ロールを割り当てるグループ名を指定します。
[0個以上 ただしprincipal-nameがなければ1個以上]
・ servlet
サーブレットのユーザを指定します。
web.xmlファイルのservlet-nameが同じservlet要素で定義しているrun-asロールに使用します。
[0個以上]
サブ要素:
servlet-name
principal-name
webservice-endpoint
・ ・ servlet-name
web.xmlファイルのservlet要素のservlet-nameで定義しているサーブレット名を指定します。
[1個]
・ ・ principal-name
現在のレルムに存在するユーザ名を指定します。
class-nameを属性にもつprincipal-nameを指定します。
[0-1個]
・ ・ webservice-endpoint
Webサービスエンドポイントに関する情報を指定します。
[0個以上]
サブ要素:
port-component-name
endpoint-address-uri
login-config
transport-guarantee
service-qname
tie-class
servlet-impl-class
・ ・ ・ port-component-name
ポートコンポーネントに対する一意な名前を指定します。WSDLポートの内部名です。
[1個]
・ ・ ・ endpoint-address-uri
Webサービスエンドポイントのアドレスを相対URIで指定します。
サーブレットエンドポイントの場合は、Webアプリケーションのコンテキストルートからの相対で、EJBエンドポイントの場合は、Webサーバのルートからの相対です。
[0-1個]
・ ・ ・ login-config
EJB Webサービスエンドポイントに対する認証設定を指定します。サーブレットWebサービスエンドポイントの場合は、web.xmlファイルで定義するので必要ありません。
[0-1個]
サブ要素:
auth-method
・ ・ ・ ・ auth-method
認証方法を指定します。
[1個]
・ ・ ・ transport-guarantee
クライアントとサーバの通信の種類をNONE, INTEGRAL, CONFIDENTIALで指定します。
[0-1個]
・ ・ ・ service-qname
参照するWSDLサービス要素をQNameで指定します。
[0-1個]
サブ要素:
namespaceURI
localpart
・ ・ ・ ・ namespaceURI
QNameのネームスペースのURIを指定します。
[1個]
・ ・ ・ ・ localpart
QNameのローカルパートを指定します。
[1個]
・ ・ ・ tie-class
ポートコンポーネントのためのtie実装クラスの名前を指定します。
[0-1個]
・ ・ ・ servlet-impl-class
サーブレット実装クラスの名前を指定します。
[0-1個]
・ idempotent-url-pattern
url-patternとnum-of-retriesを属性にもつidempotent-url-patternを指定します。
[0個以上]
・ session-config
セッションの設定情報を指定します。
[0-1個]
サブ要素:
session-manager
session-properties
cookie-properties
・ ・ session-manager
セッションマネージャの設定情報を指定します。
[0-1個]
表2.2.13.4-3
属性
説明
persistence-type
セッション永続化の方法を指定します。
指定できる値はmemory、 とfileです。 ※アドバンスドモードではfileは利用できません。
[省略可]
既定値:memory
※fileを指定する場合は、web.xmlに”<distributable />”の設定が必要です。
 
サブ要素:
manager-properties
store-properties
・ ・ ・ manager-properties
セッションマネージャのプロパティを指定します。
[0-1個]
サブ要素:
property
・ ・ ・ ・ property
nameとvalueを属性にもつプロパティを指定します。
[0個以上]
表2.2.13.4-4
プロパティ
説明
reapIntervalSeconds
バックグラウンドスレッド周期です。 Webアプリケーションがバックグラウンドスレッドを実行する周期を秒単位で指定します。
有効な値は、1〜2147483647です。
既定値:60

バックグラウンドスレッドでは、セッションのタイムアウトチェック処理及びサーブレットのクラスファイルの更新チェック処理が実行されます。セッションのタイムアウトチェック処理は、さらにタイムアウトチェック頻度との組み合わせで実行周期を決定します。
タイムアウトチェック頻度については、processExpiresFrequencyプロパティを参照してください。
processExpiresFrequency
タイムアウトチェック頻度です。セッションのタイムアウトチェックをバックグラウンドスレッドの実行周期で何回おきに実行するかを指定します。
有効な値は、1〜2147483647です。
既定値:1(回)

セッションのタイムアウトチェックの周期=「バックグラウンドスレッド周期」×「タイムアウトチェック頻度」となります。
バックグラウンドスレッド周期については、reapIntervalSecondsプロパティを参照してください。
sessionIdLength
生成されるセッションIDのバイト数を指定します。
(セッションIDの文字列長は、指定した値×2になります。)
有効な値は、8〜512です。
既定値:16
例)16を指定した場合のセッションID
D076CCDA5EFF2167B860A9C75FD558BB
maxSessions
最大セッション数です。読み出し/書き込み頻度(レプリケーションモード)が同期、即時同期モードの場合、アクティブセッションの最大数を指定します。非同期モードの場合、メモリ上で管理するセッション(活性化状態セッション)の最大数を指定します。
有効な値は、-1、0〜2147483647です。
-1が指定された場合、無制限となります。
既定値:-1
sessionFilename
Webアプリケーション停止時にセッション情報を保存するファイル名を指定します。
ファイルは、${INSTANCE_ROOT}/generated/jsp/の対応Webアプリケーションディレクトリに作成されます。
既定値:なし
algorithm
セッションIDを計算するアルゴリズムを指定します。
Java.security.MessageDigestでサポートされている必要があります。
既定値:MD5
entropy
セッションIDの生成時に用いられる乱数生成メソッドに渡す文字列を指定します。
既定値:なし
minIdleSwap
スワップ最小アイドル時間です。セッション情報を非活性化するまでの時間を指定します。
最大セッション数が指定されている場合に参照されます。非活性化されていないセッションの数が最大セッション数を超えている場合、セッションへの最終1つ前のアクセスからminIdleSwap時間を越えているセッションを非活性化します。
最大セッション数が指定され、minIdleSwapにOFF(-1)が設定された場合、最大セッション数を超えた分のセッションは検索順に非活性化されます。ただし、minIdleSwap時間は最大セッション数が指定された場合に有効になります。
非活性化されていないセッションが最大セッション数を越えている、かつ、セッションへの最終1つ前のアクセスからminIdleSwap時間が経過している場合、セッション情報を非活性化します。 minIdleSwapは最大セッション数が定義されない場合もmaxIdleSwapのスイッチとして機能します。
有効な値は、-1、1〜2147483647です。
既定値:-1(秒)
※本プロパティには、maxIdleSwapプロパティと同じか短い値を指定してください。
※本プロパティは、replicationModeプロパティに"AS"が指定されている場合にのみ有効です。
maxIdleSwap
スワップ時間です。セッション情報を非活性化するまでの時間を指定してください。
セッションへの最終1つ前のアクセスからmaxIdleSwap時間が経過している場合、セッション情報を非活性化します。
maxIdleSwapは、minIdleSwapがOFF(-1)設定されている場合は使用されません。
有効な値は、-1、1〜2147483647です。
既定値:-1(秒)
※本プロパティには、minIdleSwapプロパティと同じか長い時間を設定してください。
※本プロパティは、replicationModeプロパティに"AS"が指定されている場合にのみ有効です。
maxIdleBackup
書き込み(バックアップ)間隔です。セッション情報を格納先に保存(バックアップ)するまでの時間を指定します。
セッションへの最終1つ前のアクセスからmaxIdleBackup時間が経過している場合、セッション情報を格納先に保存します。
有効な値は、-1、0〜2147483647です。
-1が指定された場合、機能OFFとなります。
既定値:-1(秒)
※本プロパティは、replicationModeプロパティに"AS"が指定されている場合にのみ有効です。
replicationMode
読み出し/書き込み頻度(レプリケーションモード)を指定します。
有効な値は、"RS"、"SS"、"AS"です。
RS:即時同期モード(RealtimeSynchro)
SS:同期モード(StandardSynchro)
AS:非同期モード(Asynchro)
既定値:RS
skipStaticFileSessionUpd
静的ファイルセッション更新スキップフラグです。
動的ファイル(Servlet/Jsp)以外のリクエストに対し、 Webコンテナが行うセッション時間情報の更新をスキップするかどうかを指定します。
true:スキップする
false:スキップしない
既定値:false
saveSkip
セッション情報更新スキップフラグです。
true:スキップする
false:スキップしない
既定値:true
※この設定は、replicationModeプロパティに"SS"または"AS"が指定されている場合にのみ有効です。
changeSessionId
スティッキーセッション情報更新スイッチです。
リクエストのセッションIDに自身と異なるJVMRoute、プロセスIDが付加されている場合、自身のプロセスで生成したセッションに置き換えるかどうかを指定します。
true:置き換える
false:置き換えない
既定値:false
storageType
保存先タイプを指定します。
有効な値は、"JNDI"、"DB"、"FILE"です。
既定値:JNDI
※"FILE"値は、replicationModeプロパティに"AS"が指定されている場合にのみ有効です。
datasourceName
DB接続のデータソース名を指定します。
既定値:なし
※この設定は、storageTypeに"DB"が指定されている場合にのみ有効です。
sqlfilePath
SQL拡張ファイルパスを指定します。
絶対パスでの指定と相対パスでの指定が可能です。
相対パスで指定する場合、WebアプリケーションのdocBaseを基点としてください。
既定値:なし
domain.xmlのsqlfile-path属性でSQL拡張ファイルパスを指定している場合、nec-web.xmlの指定が有効になります。
※この設定は、storage-type属性に"DB"が指定されている場合にのみ有効です。
sessionDoubleReading
同一セッションに対する複数のリクエストが同時期に処理された場合、 重複する格納先からのセッション情報取り込み及び書き込み処理を行うかを指定します。
falseが指定された場合、重複処理を抑制します。
既定値:true
※本プロパティは、replicationModeプロパティに"SS"が指定されている場合にのみ有効です。
backupInterval
バックアップ処理を実行する間隔。非同期モードのみ有効。セッション情報を格納先に保存する処理を呼び出すまでの時間(秒単位)です。
実際にセッション情報を保存(バックアップ)するかどうかはmaxIdleBackupの設定で判定されます。
有効な値は、0〜2147483647です。
0が指定された場合、バックアップは行われません。
既定値:60(秒)
※本プロパティは、replicationModeプロパティに"AS"が指定されている場合にのみ有効です。
storageTimeoutCheckOnce
格納先にあるセッション情報のタイムアウトチェックを起動時に一度のみ行うかどうかを設定します。
規定値(false)では、格納先にあるセッション情報のタイムアウトチェックはバックグラウンドスレッドで定期的に実行されます。一度のみ実行(true)を指定した場合は、Webアプリケーションが起動した後、一度だけ格納先セッションのタイムアウトチェックが実行されます。
セッションをスワップアウトする、かつ本設定を一度のみ実行(true)とした場合、スワップアウトされたセッションはタイムアウトチェックされなくなる事に注意してください。
既定値:false
※本プロパティは、replicationModeプロパティに"AS"が指定されている場合にのみ有効です。
storageTimeoutAccessWait
タイムアウトチェック処理において格納先への連続アクセスによる高負荷状態を回避するために、格納先にアクセスする直前に処理をsleepする時間(ミリ秒単位)を指定します。
有効な値は、-1、1〜9223372036854775807です。
-1が指定された場合、sleepは行われません。
既定値:5(ミリ秒)
※本プロパティは、replicationModeプロパティに"AS"が指定されている場合にのみ有効です。
notReplicationAttributes_<数値>
セッションレプリケーション設定のWebアプリケーションで、格納先に保存を行わないセッションアトリビュート名を指定します。
アトリビュート名は前方一致検索で対象のアトリビュートを判定します。
アトリビュート名はプロパティ名の数値部分を変更することで複数指定することができます。数値はプロパティ名が一意になれば連番でなくてもかまいません。
アトリビュート名には英数字に加えて次の文字を使用することができます。
. , ! # $ % & ' ( ) = ~ | [ ] { } ; : ? * @ _ - +
※本プロパティは、replicationModeプロパティに"RS"が指定されている場合にのみ有効です。
 
サブ要素:
description
・ ・ ・ ・ ・ description
プロパティの説明を指定します。
[0-1個]
・ ・ ・ store-properties
セッション永続化のプロパティを指定します。
[0-1個]
サブ要素:
property
・ ・ ・ ・ property
nameとvalueを属性にもつプロパティを指定します。
[0個以上]
表2.2.13.4-5
プロパティ
説明
directory
セッションごとのセッションファイルを保存するディレクトリを相対パスまたは絶対パスで指定します。
相対パスの場合は、このWebアプリケーションのテンポラリディレクトリからの相対になります。
session-manager要素のpersistence-type属性がfileの場合のみ有効です。
既定値:<domain_dir>/generated/jsp
/<appname>
 
サブ要素:
description
・ ・ ・ ・ ・ description
プロパティの説明を指定します。
 [0-1個]
・ ・ session-properties
セッションのプロパティを指定します。
[0-1個]
サブ要素:
property
・ ・ ・ property
nameとvalueを属性にもつプロパティを指定します。
[0個以上]
表2.2.13.4-6
プロパティ
説明
timeoutSeconds
アクセスのない状態のセッションのタイムアウト時間を秒単位で指定します。0以下を指定するとこのWebアプリケーションのセッションは期限切れになりません。
既定値:1800
enableCookies
セッションIDの格納にcookieを使用するかどうかを指定します。
既定値:true
enableURLRewriting
セッションIDの格納にURLを使用するかどうかを指定します。
既定値:true
enableSession
falseを指定すると、セッションを強制的に無効にすることができます。
既定値:true
 
サブ要素:
description

設定の詳細は   [リファレンス集 運用管理・設定編 > 1. コンフィグレーション(設定一覧) > 1.4.7. HTTPセッション管理について ]を参照してください。
・ ・ ・ ・ description
プロパティの説明を指定します。
 [0-1個]
・ ・ cookie-properties
セッションIDを格納するcookieのプロパティを指定します。
[0-1個]
サブ要素:
property
・ ・ ・ property
nameとvalueを属性にもつプロパティを指定します。
[0個以上]
表2.2.13.4-7
プロパティ
説明
cookiePath
ブラウザからcookieを送信するURLを制限する場合に指定します。
既定値:コンテキストパス
cookieMaxAgeSeconds
cookieの有効期限を秒単位で指定します。
既定値:-1(無期限)
cookieDomain
cookieが有効となるドメインを指定します。
既定値:なし
cookieComment
cookieファイル内でセッションIDのcookieを識別するためのコメントを指定します。
 
サブ要素:
description
・ ・ ・ ・ description
プロパティの説明を指定します。
 [0-1個]
・ ejb-ref
EJB参照にEJBのJNDI名を割り当てます。
[0個以上]
サブ要素:
ejb-ref-name
jndi-name
・ ・ ejb-ref-name
EJBの参照名を指定します。
[1個]
・ ・ jndi-name
JNDIに登録されているEJBのJNDI絶対名を指定します。
文字列 java:comp/envで始まる必要があります。
[1個]
・ resource-ref
リソース参照にリソースのJNDI名を割り当てます。
[0個以上]
サブ要素:
res-ref-name
jndi-name
default-resource-principal
・ ・ res-ref-name
リソースの参照名を指定します。
[1個]
・ ・ jndi-name
JNDIに登録されているリソースのJNDI絶対名を指定します。
文字列 java:comp/envで始まる必要があります。
[1個]
・ ・ default-resource-principal
リソースのデフォルトのユーザを指定します。
[0-1個]
サブ要素:
name
password
・ ・ ・ name
ユーザの名前を指定します。
[1個]
・ ・ ・ password
ユーザのパスワードを指定します。
[1個]
・ resource-env-ref
リソース環境参照にリソース環境のJNDI名を割り当てます。
[0個以上]
サブ要素:
resource-env-ref-name
jndi-name
・ ・ resource-env-ref-name
リソース環境の参照名を指定します。
[1個]
・ ・ jndi-name
JNDIに登録されているリソース環境のJNDI絶対名を指定します。
文字列 java:comp/envで始まる必要があります。
[1個]
・ service-ref
Webサービス参照のランタイム設定を指定します。
[0個以上]
サブ要素:
service-ref-name
port-info
call-property
wsdl-override
service-impl-class
service-qname
・ ・ service-ref-name
Webサービス参照名を指定します。
[1個]
・ ・ port-info
Webサービス参照のポートの情報を指定します。
[0個以上]
サブ要素:
service-endpoint-interface
wsdl-port
stub-property
call-property
・ ・ ・ service-endpoint-interface
Webサービス参照名を指定します。
[0-1個]
・ ・ ・ wsdl-port
WSDLポートを指定します。
[0-1個]
サブ要素:
namespaceURI
localpart
・ ・ ・ ・ namespaceURI
WSDLポートのネームスペースのURIを指定します。
[1個]
・ ・ ・ ・ localpart
WSDLポートのローカルパートを指定します。
[1個]
・ ・ ・ stub-property
Webサービスクライアントに戻る前にjavax.xml.rpc.Stubオブジェクトに設定するJAX-RPCプロパティ値を指定します。
[0個以上]
サブ要素:
name
value
・ ・ ・ ・ name
プロパティの名前を指定します。
[1個]
・ ・ ・ ・ value
プロパティの値を指定します。
[1個]
・ ・ ・ call-property
Webサービスクライアントに戻る前にjavax.xml.rpc.Callオブジェクトに設定するJAX-RPCプロパティ値を指定します。
[0個以上]
サブ要素:
name
value
・ ・ ・ ・ name
プロパティの名前を指定します。
[1個]
・ ・ ・ ・ value
プロパティの値を指定します。
[1個]
・ ・ call-property
Webサービスクライアントに戻る前にjavax.xml.rpc.Callオブジェクトに設定するJAX-RPCプロパティ値を指定します。
[0個以上]
サブ要素:
name
value
・ ・ ・ name
プロパティの名前を指定します。
[1個]
・ ・ ・ value
プロパティの値を指定します。
[1個]
・ ・ wsdl-override
WSDLドキュメントの有効なURLを指定します。
[0-1個]
・ ・ service-impl-class
サービス実装クラスの名前を指定します。
[0-1個]
・ ・ service-qname
参照するWSDLサービス要素をQNameで指定します。
[0-1個]
サブ要素:
namespaceURI
localpart
・ ・ ・ namespaceURI
QNameのネームスペースのURIを指定します。
[1個]
・ ・ ・ localpart
QNameのローカルパートを指定します。
[1個]
・ message-destination-ref
アプリケーションの中で定義された論理メッセージ宛先参照の名前を指定します。
[0個以上]
サブ要素:
message-destination-ref-name
jndi-name
・ ・ message-destination-ref-name
論理メッセージ宛先参照の名前を指定します。
[1個]
・ ・ jndi-name
論理メッセージ宛先参照のJNDI絶対名を指定します。
文字列 java:comp/envで始まる必要があります。
[1個]
・ cache
キャッシュ機能を設定します。
[0-1個]
表2.2.13.4-8
属性
説明
max-entries
キャッシュに格納できるエントリの最大数を指定します。正の整数でなければなりません。
[省略可]
既定値:4096
timeout-in-seconds
エントリを生成、更新してからキャッシュ内に保持する最大時間を秒単位で指定します。
timeout要素で上書きできます。
[省略可]
既定値:30
enabled
サーブレットとJSPのキャッシュを有効にするかどうかを指定します。
[省略可]
既定値:true
 
サブ要素:
cache-helper
default-helper
property
cache-mapping
・ ・ cache-helper
CacheHelperインタフェースを実装しているカスタムクラスを指定します。
[0個以上]
表2.2.13.4-9
属性
説明
name
ヘルパークラスの一意の名前を指定します。cache-mapping要素で参照する名前です。
[省略不可]
既定値:default
class-name
キャッシュヘルパークラスの完全修飾クラス名を指定します。
[省略不可]
既定値:なし
 
サブ要素:
property
・ ・ ・ property
nameとvalueを属性にもつプロパティを指定します。
カスタムのキャッシュヘルパークラスで使用できるプロパティを指定します。
[0個以上]
サブ要素:
description
・ ・ ・ ・ description
プロパティの説明を指定します。
[0-1個]
・ ・ default-helper
内蔵のデフォルトキャッシュヘルパークラスのプロパティを変更します。
[0-1個]
サブ要素:
property
・ ・ ・ property
nameとvalueを属性にもつプロパティを指定します。
[0個以上]
表2.2.13.4-10
プロパティ
説明
cacheKeyGeneratorAttrName
カスタムのキージェネレータを設定しているServletContextの属性名を指定します。
既定値:のデフォルトキャッシュヘルパーのキー生成を使用
 
サブ要素:
description
・ ・ ・ ・ description
プロパティの説明を指定します。
[0-1個]
・ ・ property
キャッシュのプロパティを指定します。
nameとvalueを属性にもつプロパティを指定します。
[0個以上]
表2.2.13.4-11
プロパティ
説明
cacheClassName
キャッシュ機能を実装するクラスの完全修飾クラス名を指定します。
指定できる値は以下のとおりです。
com.nec.webotx.appserv. util.cache.LruCache
com.nec.webotx.appserv. util.cache.BaseCache
com.nec.webotx.appserv. util.cache.MultiLruCache
com.nec.webotx.appserv. util.cache.BoundedMultiLruCache
既定値:com.nec.webotx.appserv. util.cache.LruCache
MultiLRUSegmentSize
独自のLRUリストを持つキャッシュテーブルの1セグメントのエントリ数を指定します。
cacheClassNameプロパティでcom.nec.webotx.appserv. util.cache.MultiLruCacheを指定した場合のみ有効です。
既定値:4096
MaxSize
キャッシュのメモリサイズの上限値をKBまたMB単位で指定します。
cacheClassNameプロパティでcom.nec.webotx.appserv. util.cache.BoundedMultiLruCacheを指定した場合のみ有効です。
既定値:無制限(Long.MAX_VALUE)
 
サブ要素:
description
・ ・ ・ description
プロパティの説明を指定します。
[0-1個]
・ ・ cache-mapping
サーブレット名またはURLパターンにキャッシュの条件を割り当てます。
[0個以上]
サブ要素:
servlet-name
url-pattern
cache-helper-ref
timeout
refresh-field
dispatcher
http-method
key-field
constraint-field
・ ・ ・ servlet-name
キャッシュを有効にするサーブレットの名前を指定します。
web.xmlファイルのservlet要素のservlet-nameで定義しているサーブレット名でなければなりません。
[servlet-nameまたはurl-patternが1個]
・ ・ ・ url-pattern
キャッシュを有効にするサーブレットのURLパターンを指定します。
[servlet-nameまたはurl-patternが1個]
・ ・ ・ cache-helper-ref
使用するキャッシュヘルパークラスをcache-helper要素のname属性で定義している名前で指定します。
[timeout, refresh-field,http-method, key-field, constraint-fieldを使用しない場合に1個]
・ ・ ・ timeout
エントリを生成、更新してからキャッシュ内に保持する最大時間を秒単位で指定します。cache-mappingごとの値です。
指定しない場合は、cache要素のtimeout-in-seconds属性の値を使用します。
[cache-helper-refを使用しない場合に0-1個]
表2.2.13.4-12
属性
説明
name
このタイムアウト値のパラメータ名を指定します。
[省略不可]
scope
このパラメータの有効範囲を指定します。
指定できる値は以下のとおりです。
context.attribute
request.header
request.parameter
request.cookie
request.attribute
session.attribute
[省略可]
既定値:request.attribute
・ ・ ・ refresh-field
アプリケーションコンポーネントのプログラムでキャッシュエントリのリフレッシュができるようにするフィールドを指定します。
[cache-helper-refを使用しない場合に0-1個]
表2.2.13.4-13
属性
説明
name
このリフレッシュフィールドのパラメータ名を指定します。
[省略不可]
scope
このパラメータの有効範囲を指定します。
指定できる値は以下のとおりです。
context.attribute
request.header
request.parameter
request.cookie
session.id
session.attribute
[省略可]
既定値:request.parameter
・ ・ ・ dispatcher
キャッシュ対象のdispatcherを指定します。
[cache-helper-refを使用しない場合に0個以上]
既定値:REQUEST
・ ・ ・ http-method
キャッシュ対象のHTTPメソッドを指定します。
[cache-helper-refを使用しない場合に0個以上]
既定値:GET
・ ・ ・ key-field
キャッシュエントリの検索や抽出に使用するキーのコンポーネントを指定します。
この要素が存在しない場合は、サーブレットパスを使用します。
[cache-helper-refを使用しない場合に0個以上]
表2.2.13.4-14
属性
説明
name
このキーフィールドのパラメータ名を指定します。
[省略不可]
scope
このパラメータの有効範囲を指定します。
指定できる値は以下のとおりです。
context.attribute
request.header
request.parameter
request.cookie
session.id
session.attribute
[省略可]
既定値:request.parameter
・ ・ ・ constraint-field
指定したurl-patternあるいはservlet-nameに対するキャッシュ制約条件を指定します。
[cache-helper-refを使用しない場合に0個以上]
表2.2.13.4-15
属性
説明
name
この制約条件フィールドのパラメータ名を指定します。
[省略不可]
scope
このパラメータの有効範囲を指定します。
指定できる値は以下のとおりです。
context.attribute
request.header
request.parameter
request.cookie
request.attribute
session.attribute
[省略可]
既定値:request.parameter
cache-on-match
条件に一致する応答をキャッシュするかどうか指定します。constraint-field-valueサブ要素の属性より優先します。
[省略可]
既定値:true
cache-on-match-failure
条件に一致しない応答をキャッシュするかどうか指定します。
constraint-field-valueサブ要素の属性より優先します。
[省略可]
既定値:false
 
サブ要素:
constraint-field-value
・ ・ ・ ・ constraint-field-value
パラメータの値と比較する制約条件を指定します。比較では大文字、小文字は区別します。
[0個以上]
表2.2.13.4-16
属性
説明
match-expr
使用する比較の種類を指定します。
指定できる値は以下のとおりです。
equals
greater
lesser
not-equals
in-range
[省略可]
既定値:equals
cache-on-match
条件に一致する応答をキャッシュするかどうか指定します。
[省略可]
既定値:true
cache-on-match-failure
条件に一致しない応答をキャッシュするかどうか指定します。
[省略可]
既定値:false
・ class-loader
Webアプリケーションのクラスローダを設定します。
[0-1個]
表2.2.13.4-17
属性
説明
extra-class-path
このWebアプリケーションに追加するクラスパスを指定します。
[省略可]
既定値:なし
delegate
親のクラスローダを優先する(true)か、ローカルのクラスローダを優先する(false)かを指定します。
[省略可]
既定値:true
 
サブ要素:
property
・ ・ property
nameとvalueを属性にもつプロパティを指定します。
[0個以上]
表2.2.13.4-18
プロパティ
説明
loaderName
Web アプリケーションのクラスローダに、ユーザ独自のクラスローダを使用するための設定です。Tomcat の "org.apache.catalina.loader.WebappLoader"クラスを継承した独自のクラス名を指定してください。

規定値:無し
classLoaderName
Web アプリケーションのクラスローダに、ユーザ独自のクラスローダを使用するための設定です。Tomcat の "org.apache.catalina.loader.WebappClassLoader"クラスを継承した独自のクラス名を指定してください。

規定値:無し
overrideablejavaxpackages
Web アプリケーション内に配置したクラスのうちパッケージ名がjavax、sun、org 等で始まるクラス は参照することができません。参照を許可するパッケージを指定します。複数設定する場合はカンマで区切って指定します。 ("javax.sub,org.sub"等)

既定値:無し
resourceSearchWithoutPackage
リソースファイルのクラスパス指定において、リソースファイルをファイル配置したパスのみで指定する場合(true)に設定してください。 デフォルト(false)の場合は、パッケージ名を含めてパス指定します。

既定値:false
 
サブ要素:
description
・ ・ ・ description
プロパティの説明を指定します。
[0-1個]
・ jsp-config
JSPを事前コンパイルするとき、またはprecompilejspオプションを指定してアプリケーションを配備するときに使用するJSPの設定情報を指定します。
[0-1個]
サブ要素:
property
・ ・ property
nameとvalueを属性にもつプロパティを指定します。
[0個以上]
表2.2.13.4-19
プロパティ
説明
compiler
JSPのコンパイラを指定します。
既定値:javac
classdebuginfo
生成したJavaサーブレットをコンパイルするときにデバッグオプションをつけるかどうかを指定します。
既定値:true
classpath
生成したJavaサーブレットをコンパイルするときに使用するクラスパスを指定します。
既定値:Webアプリケーションに基づいて動的に生成
enablePooling
タグハンドラのプーイングを有効にするかどうかを指定します。
既定値:true
javaEncoding
生成するJavaサーブレットのエンコーディングを指定します。Javaコンパイラにも渡ります。
既定値:UTF8
genStrAsCharArray
文字列をchar配列として生成するかどうかを指定します。
既定値:false
errorOnUseBeanInvalidClassAttribute
useBeanのclass属性値がbeanクラスとして有効でない場合にエラーにするかどうかを指定します。
既定値:false
scratchdir
生成コードを格納する作業ディレクトリを指定します。
既定値:Webアプリケーションのデフォルト作業ディレクトリ
xpoweredBy
生成するJavaサーブレットでX-Powered-Byレスポンスヘッダを追加するかどうかを指定します。
既定値:true
precompileDefaultEncoding
JSPの事前コンパイルをするときに使用するレスポンスのデフォルトエンコードを指定します。
JSPにエンコーディング指定(Content-typeのcharsetとpageEncoding)がない場合に使用します。
既定値:なし
precompileDefaultBufferSize
JSPの事前コンパイルをするときに使用するレスポンスのバッファサイズを指定します。
JSPのpageディレクティブでbuffer属性の指定がない場合に使用します。
kb単位で指定しなければなりません。小文字の”kb”のみ有効です。
既定値:なし
priorityJspInEncoding
JSPファイルをコンパイルする際、どの文字コードを読み込むか        Webアプリケーションの指定より高い優先度で文字コードを        指定することができます。
規定値: なし
priorityJspOutEncoding
コンパイルしたJSPファイルのコードでHTTPレスポンスに    setContentTypeで指定される文字コードをWebアプリケーションの指定より高い優先度で指定することができます。
規定値: なし
priorityJspOutEncoding-map:<ロケール名(ja等)>
コンパイルしたJSPファイルのコードでHTTPレスポンスに
setContentTypeで指定される文字コードをWebアプリケーションの指定より高い優先度で指定することができます。HTTPレスポンスのロケールとマッピングさせて指定し、複数指定することができます。
規定値: なし
サブ要素:
description
・ ・ ・ description
プロパティの説明を指定します。
[0-1個]
・ locale-charset-info
アプリケーションの国際化設定を指定します。
[0-1個]
表2.2.13.4-20
属性
説明
default-locale
デフォルトのロケールを指定します。
[省略可]
※この属性は現在利用できません
 
サブ要素:
locale-charset-map
parameter-encoding
・ ・ locale-charset-map
文字エンコーディングにロケールとエージェントを割り当てます。
[1個以上]
表2.2.13.4-21
属性
説明
locale
ロケールを指定します。
[省略不可]
agent
リクエストを送ってくるクライアントの種類を指定します。クライアントが送信するHTTPリクエストヘッダのuser-agentの値と一致する値でなければなりません。
[省略可]
charset
ロケールを割り当てる文字エンコーディングを指定します。
[省略不可]
 
サブ要素:
description
・ ・ ・ description
マッピングの説明を指定します。
[0-1個]
・ ・ parameter-encoding
リクエストヘッダのcontent-typeにcharsetが設定されていない場合に、Webコンテナが使用する文字エンコードを決定する隠しフィールドとデフォルトの文字エンコードを指定します。
[0-1個]
表2.2.13.4-22
属性
説明
form-hint-field
文字エンコードを指定するフォーム内の隠しフィールドの名前を指定します。
[省略可]
default-charset
リクエストのデフォルト文字エンコードを指定します。
[省略可]
・ parameter-encoding
form-hint-fieldとdefault-charsetを属性にもつparameter-encodingを指定します。
 [0-1個]
・ property
nameとvalueを属性にもつプロパティを指定します。
[0個以上]
表2.2.13.4-23
プロパティ
説明
crossContextAllowed
WebアプリケーションがServletContext.getContext()メソッドを使ってほかのWebアプリケーションのコンテキストにアクセスすることを許可するかどうかを指定します。
既定値:なし
tempdir
このWebアプリケーションで使用する作業ディレクトリを指定します。コンパイルしたJSPもこのディレクトリに格納します。
既定値:<domain_dir>/generated/jsp
/<appname>
singleThreadedServletPoolSize
Webアプリケーション内の個々のSingleThreadModelサーブレットに割り当てられるサーブレットインスタンスの最大数を指定します。
既定値:5
reuseSessionID
リクエストに含まれているセッションIDが期限切れになっている場合に、同じセッションIDでセッションを生成するかどうかを指定します。
そのセッションIDがすでに使用されている場合は、セッションの生成に失敗し、nullが返ります。
既定値:false
priorityResponseEncoding
HTTPレスポンスにデータをどの文字コードとして出力するか、Webアプリケーションの指定より高い優先度で文字コードを指定することができます。
規定値:なし
priorityResponseEncoding-map:<ロケール名(ja等)>
HTTPレスポンスにデータをどの文字コードとして出力するか、Webアプリケーションの指定より高い優先度で文字コードを指定することができます。HTTPレスポンスのロケールとマッピングさせて指定し、複数指定することができます。
規定値:なし
useBundledJsf
アプリケーションにバンドルされているJSFを使用するかどうかを指定します。falseの場合、WebOTXが持っているJSFの実装を使用します。
規定値:false
forwardResponseFlush
RequestDispatcherクラスの forward メソッドを利用してリクエストの別のサーブレットに転送した場合にforward元のリクエストが終了してからレスポンスをflushするのか(false:V7.x動作)、forward先の処理が終了した時点でレスポンスをflushするのか(true:V8.x動作)を指定します。
規定値:true
※本設定はスタンダードモードでのみ有効です。アドバンスドモードでは常に V7.x の動作となります。
auth_<認証種別>_<属性名>
Authenticatorの属性に値を設定します。
<認証種別> basic = BASIC認証
client = クライアント認証
form = FORM認証
digest = DIGEST認証
all = 全ての認証
<属性名> 値を設定する属性名
規定値:なし

<属性名>詳細
<属性名>説明
changeSessionIdOnAuthentication セッション固定攻撃を回避するために、認証時にWebアプリケーションがセッションIDを変更できるようにします。
デフォルト値はfalseです。
cnonceCacheSize ※DIGEST認証のみ

リプレイ攻撃を防ぐために、ダイジェスト認証は、クライアントのノンス(cnonce)とノンスカウント(nc)値を追跡します。
この属性は、そのためのキャッシュのサイズを指定します。
指定されていない場合、デフォルト値の1000が使用されます。
key ※DIGEST認証のみ

ダイジェスト認証で使用される秘密鍵を指定します。
これは通常、サーバーの再起動前後やクラスタ全体でキーの値を一定に保つ必要がある場合に設定する必要があります。
指定されていない場合は、セキュリティで保護された乱数値が生成されます。
nonceValidity ※DIGEST認証のみ

生成されたnonce値が認証で使用するために有効とみなされる時間を指定します。
指定されていない場合は、300000(5分)のデフォルト値が使用されます。
単位はミリ秒です。
opaque ※DIGEST認証のみ

ダイジェスト認証で使用されるサーバ"opaque"文字列を指定します。
これは通常、サーバーの再起動前後やクラスタ全体で "opaque"値を一定に保つ必要がある場合に設定する必要があります。
指定されていない場合は乱数値が生成されます。
validateUri ※DIGEST認証のみ

これは通常、WebコンテナがリバースProxyの後ろに位置し、そのProxyがWebコンテナにURIを変更して渡し、その結果DIGEST認証に常に失敗する場合のみfalseを指定します。
指定されていない場合、デフォルト値のtrueが使用されます。
alternatedocroot_<N>
Webアプリケーションの特定のリクエストに対して、 別のディレクトリを参照する(仮想ディレクトリ)ために使用します。
複数指定でき、<N>の値が小さいものから順にマッチングが行われます。
<N>には一意な正数を指定してください。値は次のように指定します。

"from=<pattern> dir=<directory>"

指定したパタン(from)がパスにマッチした場合、そのパスを指定したディレクトリ(dir)にあるとして扱います。

<pattern>:"/" から始まるパスか、"*.jpg" のように拡張子を指定します。
  • "/"から始まるパスの場合、末尾にはワイルドカード("/*")が使用できます。
  • "/*" を使用しない場合、パスはパターンに完全一致する必要がありますが、"/*" を使用する場合、"*"の前までが一致していればマッチしているとして扱います。
<directory>:存在するディレクトリを指定します。

規定値:なし

設定例:
Windowsの場合
<property name="alternatedocroot_1" value="from=*.jpg dir=c:/docroot/images"/>
上記の場合、*.jpgにアクセスした場合、c:/docroot/images/*.jpgが参照されます。
<property name="alternatedocroot_2" value="from=/static/* dir=c:/docroot"/>
上記の場合、/staticにアクセスした場合、c:/docroot/static/*が参照されます。
UNIXの場合
<property name="alternatedocroot_1" value="from=*.jpg dir=/docroot/images"/>
上記の場合、*.jpgにアクセスした場合、/docroot/images/*.jpgが参照されます。
<property name="alternatedocroot_2" value="from=/static/* dir=/docroot"/>
上記の場合、/staticにアクセスした場合、/docroot/static/*が参照されます。
 
サブ要素:
description
・ ・ description
プロパティの説明を指定します。
[0-1個]
・ message-destination
アプリケーションの中で定義された論理メッセージ宛先の名前を指定します。
[0個以上]
サブ要素:
message-destination-name
jndi-name
・ ・ message-destination-name
論理メッセージ宛先の名前を指定します。
[1個]
・ ・ jndi-name
論理メッセージ宛先のJNDI絶対名を指定します。
文字列 java:comp/envで始まる必要があります。
[1個]
・ webservice-description
Webサービスの名前と配備中にWebサービスのWSDLをパブリッシュするディレクトリを指定します。
[0個以上]
サブ要素:
webservice-description-name
wsdl-publish-location
・ ・ webservice-description-name
Webサービスの名前を指定します。
[1個]
・ ・ wsdl-publish-location
配備中にWebサービスのWSDLをパブリッシュするディレクトリのURLを指定します。
1 [0-1個]

2.2.14. WebSocketの作成

2.2.14.1. WebSocketとは

WebSocket (ウェブソケット)は、コンピュータ・ネットワークにおける双方向通信用の通信規格の一つです。
サーバとクライアントで一度コネクションを行った後は、必要な通信を全てそのコネクション上で専用のプロトコルを用いて行うため、 従来の手法に比べると、新たなコネクションを張ることがなくなります。 そのため、通信ロスが減り一つのコネクションで全てのデータ送受信が行えるため、同一サーバに接続する他のアプリケーションへの影響が少ないなどのメリットがあります。
 WebOTX Application Server V9.2では、RFC6455で定義されているWebSocketプロトコルを利用するTomcatベースのWebSocketServletを使用できます。

 なお、WebSocketを利用するには、WebOTXの内蔵WebサーバのHTTPリスナのtypeをNIO(New IO)に変更して、このHTTPリスナを使う必要があります。
設定の詳細は   [リファレンス集 運用管理・設定編 > 1. コンフィグレーション(設定一覧) > 1.4.2. Webコンテナ設定項目一覧 > HTTPリスナ(コネクタのtype)の設定 ]を参照してください。

2.2.14.2. WebSocket作成ウィザードについて

メニュー ファイル新規その他WebWebSocket を選択します。或いは、
プロジェクトを選択し、その右クリックメニューの WebプロジェクトWebSocketの作成 を選択します。
WebSocketの作成 ウィザードが表示されます。
WebSocketサーブレットの作成
この画面で、WebSocketサーブレットクラスの詳細を指定します。


図2.2.14.2-1

表2.2.14.2-1
項目 説明 初期値
プロジェクト Webプロジェクト名を指定します。 選択されるプロジェクト
ソース・フォルダー WebSocketサーブレットクラスのソースフォルダーを指定します。 選択されるソースフォルダー
Javaパッケージ WebSocketサーブレットクラスのJavaパッケージを指定します。 com.nec.websocket
クラス名 WebSocketサーブレットクラスのクラス名を指定します。  
スーパークラス WebSocketサーブレットクラスの継承するスーパークラスを指定します。
指定できるのは org.apache.catalina.websocket.WebSocketServlet または そのサブクラスです。
org.apache.catalina.websocket.WebSocketServlet

次へ をクリックします。この画面で、WebSocketサーブレット配備記述子固有の情報を指定します。


図2.2.14.2-2

表2.2.14.2-2
名称 説明 初期値
名前 サーブレットの名前を指定します。 {サーブレットクラス名}
説明 サーブレットの説明を指定します。  
初期化 パラメーター サーブレットの初期化パラメーターを指定します。  
URL マッピング サーブレットのURL マッピングパターンを指定します。 /{サーブレットクラス名}
Inboundクラスの作成
次へ をクリックします。この画面で、WebSocketで通信用のInboundクラスの詳細を指定します。


図2.2.14.2-3

表2.2.14.2-3
項目 説明 初期値
ソース・フォルダー Inboundクラスのソースフォルダーを指定します。 WebSocketサーブレットクラスのソースフォルダーと同じ
パッケージ InboundクラスのJavaパッケージを指定します。 com.nec.websocket
クラス名 Inboundクラスのクラス名を指定します。 {サーブレットクラス名}Inbound
スーパークラス Inboundクラスの継承するスーパークラスを選択します。
選択肢は org.apache.catalina.websocket.MessageInboundorg.apache.catalina.websocket.StreamInboundです。
org.apache.catalina.websocket.MessageInbound
HTMLファイルの作成
次へ をクリックします。この画面で、WebSocketのHTMLページの詳細を指定します。


図2.2.14.2-4

表2.2.14.2-4
項目 説明 初期値
ファイル名 HTMLファイルの名前を指定します。
拡張子が.htm.html または 拡張子なし のファイルが指定できます。
拡張子なしの場合、.htmlのファイルが生成されます。
{サーブレットクラス名}Html.html
親フォルダー HTMLファイルのフォルダーを指定します。
指定するのは、WebプロジェクトのWebContentフォルダからの相対パスです。
例えば、「websocket」を指定する場合、プロジェクトのWebContent/websocketフォルダーにHTMLファイルが生成されます。
何も指定しない場合、WebContent直下に生成します。
websocket
WebSocket URL WebSocketのURLを指定します。
「ws://」で始まるURLを入力してください。
ws://localhost:80/{プロジェクト名}/{サーブレットクラス名}

2.2.15. スマートデバイスアプリケーションの作成とテスト実行

スマートデバイス向けのアプリケーションの構成は大きく分けて以下の3つの構成があります。
表2.2.15-1
タイプ 概要
Webアプリケーションタイプ Web技術(HTML5、CSS3、JavaScript)のみで開発するアプリケーション。 生産性や移植性は高いが、カメラや赤外線といったデバイス特有の機能との連携ができない。
ハイブリットアプリケーションタイプ アプリケーションの大部分を開発生産性、移植性の高いWeb技術にて開発し、 デバイス特有の機能を利用する機能のみをネイティブ言語で実装し、Webアプリケーションと連携する。 ネイティブ部分があるため、Webアプリケーションタイプより生産性、移植性は落ちるがデバイス特有の機能 が利用できる。
ネイティブアプリケーションタイプ 各スマートデバイス専用の開発言語で開発するアプリケーション。 各スマートデバイス専用の開発言語で記述するため生産性や移植性は低いが、デバイス特有の機能との 連携が容易。

ここではWebアプリケーションタイプのスマートデバイス向けのアプリケーションの作成について説明します。 カメラ、赤外線等のスマートデバイス側の機能との連携を行うハイブリットアプリケーションタイプを作成する場合は、 SystemDirector Enterprise for Smart Device をご参照ください。 なお、Javascript については SystemDirector Enterprise for Smart Device でも採用している jQuery Mobile の利用を前提 としています。

2.2.15.1. スニペットの利用

スマートデバイスアプリケーション開発でよく使うソースはスニペットとして用意されますので、簡単に利用できます。

メニュー ウィンドウビューの表示スニペット を選択すると、スニペット・ビューが表示されます。


図2.2.15.1-1

スニペット・ビューに利用できるスニペットが表示されます。


図2.2.15.1-2

Memo
スニペットの詳細は[2.2.16. スニペット 一覧]を参照してください。

パラメータを含めないスニペット名でダブルクリックすると、マウスのカレントロケーションにコードが挿入されます。


図2.2.15.1-3

パラメータを含むスニペット名でダブルクリックすると、テンプレートの挿入 ダイアログが表示されます。


図2.2.15.1-4

パラメータ値を設定して、挿入をクリックすると、マウスのカレントロケーションにコードが挿入されます。


図2.2.15.1-5

Memo
WebOTX JQuery Mobile Tag内のスニペットを利用する時に、別途jQuery Mobile及びjQueryのパッケージをダウンロードする必要があります。詳細は[2.2.15.2. jQuery Mobileの入手方法] と [2.2.15.3. jQueryの入手方法] を参照してください。

2.2.15.2. jQuery Mobileの入手方法

jQuery Mobile のパッケージをダウンロードします(ダウンロードURL:http://jquerymobile.com/download/)。


図2.2.15.2-1

ダウンロードされるZIPファイルを解凍し、内蔵のjquery.mobile-XXX.min.jsjquery.mobile-XXX.min.cssimagesフォルダ を対象プロジェクトの WebContent に入れます。
(XXX はバージョンです。)


図2.2.15.2-2

jQuery Mobileを利用するHTML、JSP等ファイルの<head>タグに以下の記載を追加する必要があります。
<head>
  <link rel="stylesheet" href="./jquery.mobile-XXX.min.css" />
  <script type="text/javascript" src="./jquery.mobile-XXX.min.js"></script>
</head>

2.2.15.3. jQueryの入手方法

jQuery のパッケージをダウンロードします(ダウンロードURL:http://jquery.com/download/)。


図2.2.15.3-1

ダウンロードされるZIPファイルを解凍し、内蔵のjquery-XXX.min.js を対象プロジェクトの WebContent に入れます。
(XXX はバージョンです。)


図2.2.15.3-2

jQueryを利用するHTML、JSP等ファイルの<head>タグに以下の記載を追加する必要があります。
<head>
  <script type="text/javascript" src="./jquery-XXX.min.js"></script>
</head>

2.2.15.4. シミュレータでのテスト実行

シミュレータの入手方法
Android SDK をダウンロードします。(ダウンロードURL:http://developer.android.com/sdk/index.html)。


図2.2.15.4-1

ダウンロードされるZIPファイルを解凍します。
シミュレータでのテスト実行
解凍フォルダ内の eclipse.exe を起動し、 Andoird Virtual Device Manager アイコンをクリックします。


図2.2.15.4-2

New... をクリックします。


図2.2.15.4-3

以下の図のようにAndroid Virtual Deviceを設定します。


図2.2.15.4-4

Start... をクリックして、Android Virtual Deviceを起動します。


図2.2.15.4-5

Virtual Deviceのブラウザーを開きます。


図2.2.15.4-6

アドレス欄にアクセスしたいURLを入力してから、動作確認を開始します。


図2.2.15.4-7

2.2.16. スニペット 一覧

HTML5、CSS3、JQuery Mobileのスニペットが提供されます。

2.2.16.1. WebOTX WebSocket Tag

WebSocket
<script type="text/javascript">
    var ws = null;
    function startWebSocket() {
        if ('WebSocket' in window) {
            ws = new WebSocket("ws://localhost/");
        } else if ('MozWebSocket' in window) {
            ws = new MozWebSocket("ws://localhost/");
        } else {
            alert("WebSocket is not supported by this browser.");
            return;
        }
        ws.onmessage = function(evt) {
            //TODO
        };
        ws.onclose = function(evt) {
            //TODO
        };
        ws.onopen = function(evt) {
            //TODO
        };
        ws.onerror = function(evt) {
            //TODO
        };
    }
    function sendMsg() {
        if (ws == null) {
            alert("WebSocket is not supported by this browser.");
            return;
        } else {
            ws.send("something");
        }
    }
    function close() {
        ws.close();
    }
</script>

使用例:

表2.2.16.1-1
効果図
コード


index.html
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>index.html</title>

<script type="text/javascript">
	var ws = null;
	function startWebSocket() {
		if ('WebSocket' in window) {
			ws = new WebSocket("ws://localhost:80/WebSocketSample/WebSocketServlet");
		} else if ('MozWebSocket' in window) {
			ws = new MozWebSocket("ws://localhost:80/WebSocketSample/WebSocketServlet");
		} else {
            alert("WebSocket is not supported by this browser.");
			return;
		}

		ws.onmessage = function(evt) {
			var console = document.getElementById('console');
			var p = document.createElement('p');
			p.style.wordWrap = 'break-word';
			p.innerHTML = evt.data;
			console.appendChild(p);
			while (console.childNodes.length > 25) {
				console.removeChild(console.firstChild);
			}
			console.scrollTop = console.scrollHeight;
		};

		ws.onclose = function(evt) {
		};

		ws.onopen = function(evt) {
		};
		
		ws.onerror = function(evt) {
			alert("websocket error: " + evt.data);
		};
	}

	function sendMsg() {
		if (ws == null) {
		    alert("WebSocket is not supported by this browser.");
		    return;
		}
		var text = document.getElementById('writeMsg');
		ws.send(text.value);
		text.value = "";
	}
	
	function close() {
        ws.close();
    }
</script>

</head>
<body onload="startWebSocket();" onunload="close();">
	<p>
		<B>WebSocket Example</B>
	</p>
	<div>
		<div id="console-container">
			<div id="console"></div>
		</div>
		<input type="text" id="writeMsg"
			placeholder="press Send button to send a message"></input> <input
			type="button" value="Send" onclick="sendMsg()"></input>
	</div>
</body>
</html>
		
関連のJavaコード WebSocketServlet.javaWebSocketInbound.javaは、2.5.8. WebSocketのサンプル を参照してください。

2.2.16.2. WebOTX HTML5 Tag

Audio
<audio controls="controls" autoplay="autoplay" loop="loop">
    <source src="REPLACE_URL" type="audio/mpeg" />
    Your browser does not support the audio tag.
</audio>

使用例:

表2.2.16.2-1
効果図
コード


<!DOCTYPE HTML>
<html>
<body>

<audio controls="controls" autoplay="autoplay" loop="loop">
    <source src="test.mp3" type="audio/mpeg" />
    Your browser does not support the audio tag.
</audio>

</body>
</html>
		
Canvas Tag
<canvas id="canv_"></canvas>

使用例:

表2.2.16.2-2
効果図
コード


<!DOCTYPE HTML>
<html>
<body>

<canvas id="myCanvas"></canvas>

<script type="text/javascript">

var canvas=document.getElementById('myCanvas');
var ctx=canvas.getContext('2d');
ctx.fillStyle='#FF0000';
ctx.fillRect(0,0,80,100);

</script>

</body>
</html>

		
DataList Tag
<datalist id="dl_">
    <option value="item1">
    <option value="item2">
</datalist>

使用例:

表2.2.16.2-3
効果図
コード


<!DOCTYPE HTML>
<html>
<body>

<datalist id="dl_">
    <option value="item1">
    <option value="item2">
</datalist>

</body>
</html>

		
Keygen Tag
<form action="REPLACE_URL" method="get">
    <input type="text" name="user_name" />
    <keygen name="key" />
    <input type="submit" />
</form>

使用例:

表2.2.16.2-4
効果図
コード


<!DOCTYPE HTML>
<html>
<body>

<form action="REPLACE_URL" method="get">
    <input type="text" name="user_name" />
    <keygen name="key" />
    <input type="submit" />
</form>

</body>
</html>
		
Meter Tag
<meter min="0" max="1" value="0.5"></meter>

使用例:

表2.2.16.2-5
効果図
コード


<!DOCTYPE HTML>
<html>
<body>

<meter min="0" max="1" value="0.5"></meter>

</body>
</html>
		
Video Tag
<video width="200" height="100" controls="controls" loop="loop">
    <source src="REPLACE_URL" type="video/mpeg" />
    Your browser does not support the video tag.
</video>

使用例:

表2.2.16.2-6
効果図
コード


<!DOCTYPE HTML>
<html>
<body>

<video width="600" height="400" controls="controls" loop="loop">
    <source src="movie.ogg" type="video/ogg" />
    Your browser does not support the video tag.
</video>

</body>
</html>
		
Local Storage
<script type="text/javascript">
    if (window.localStorage) {
        // add to localStorage
        localStorage.key = value; 
        var ws = localStorage.getItem("key");
        
        // TODO use the value
        
        // remove from localStorage
        localStorage.removeItem("key");
    } else { 
        alert("Your browser does not support localStorage."); 
    } 
</script>

使用例:

表2.2.16.2-7
効果図
コード


<!DOCTYPE HTML>
<html>
<body>

<script type="text/javascript">
    if (window.localStorage) {
        // add to localStorage
        var value ="value";
        localStorage.key = value; 
        var ws = localStorage.getItem("key");
        
        // TODO use the value
        alert(ws);
        
        // remove from localStorage
        localStorage.removeItem("key");
    } else {
        alert("Your browser does not support localStorage."); 
    }
</script>

</body>
</html>
		
Session Storage
<script type="text/javascript">
    if (window.sessionStorage) {
        // add to sessionStorage
        sessionStorage.key = value; 
        var ws = sessionStorage.getItem("key");
        
        // TODO use the value
        
        // remove from sessionStorage
        sessionStorage.removeItem("key");
    } else { 
        alert("Your browser does not support sessionStorage."); 
    } 
</script>

使用例:

表2.2.16.2-8
効果図
コード


<!DOCTYPE HTML>
<html>
<body>

<script type="text/javascript">
    if (window.sessionStorage) {
        // add to sessionStorage
        var value = "test"
        sessionStorage.key = value; 
        var ws = sessionStorage.getItem("key");
        
        // TODO use the value
        alert(ws);
        
        // remove from sessionStorage
        sessionStorage.removeItem("key");
    } else { 
        alert("Your browser does not support sessionStorage."); 
    }
</script>

</body>
</html>
		
HTML5レイアウト
<!DOCTYPE HTML>
<html>
<body>
    <nav>
        <a href="">text</a>
        <a href="">text</a>
        <a href="">text</a>
    </nav>
    <header>
        <h1>text</h1>
    </header>
    <article>
        <a href="">text</a><br />
    </article>
    <section>
        <h1>text</h1>
        <p>text</p>
    </section>
    <footer>text</footer>
</body>
</html>

使用例:

表2.2.16.2-9
効果図
コード


<!DOCTYPE HTML>
<html>
<body>
    <nav>
        <a href="">text</a>
        <a href="">text</a>
        <a href="">text</a>
    </nav>
    <header>
        <h1>text</h1>
    </header>
    <article>
        <a href="">text</a><br />
    </article>
    <section>
        <h1>text</h1>
        <p>text</p>
    </section>
    <footer>text</footer>
</body>
</html>
		
CSS自動切り替え
<link rel="stylesheet" href="REPLACE_UR" media="(min-width:1024px)"/>
<link rel="stylesheet" href="REPLACE_UR" media="(max-width:1023px) and (min-width:641px)"/>
<link rel="stylesheet" href="REPLACE_UR" media="(max-width:640px)"/>

使用例:

表2.2.16.2-10
効果図
コード


HTML
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" href="./css1.css" media="(min-width:1024px)"/>
<link rel="stylesheet" href="./css2.css" media="(max-width:1023px) and (min-width:641px)"/>
<link rel="stylesheet" href="./css3.css" media="(max-width:640px)"/>
<style> 
.wrapper {
	border: solid 1px #666;	
	padding: 5px 10px;
	margin: 40px;
}
</style>
</head>
<body>

<div class="wrapper test">test</div>

</body>
</html>
		
css1.css
@CHARSET "UTF-8";
div{
	background: #F90;
}
		
css2.css
@CHARSET "UTF-8";
div{
	background: #9CF;
}
		
css3.css
@CHARSET "UTF-8";
div{
	background: #F9C;
}
		

2.2.16.3. WebOTX CSS3 Tag

ボーダー効果
#id_ {
    border-radius: 5px;
}

使用例:

表2.2.16.3-1
効果図
コード


<!DOCTYPE HTML>
<html>
<head>
<style> 
#img
{
border:15px solid transparent;
width:300px;
padding:10px 20px;
}

#img {
    border-image:url(border.png) 30 30 round;
}

#radius
{
text-align:center;
border:2px solid #a1a1a1;
padding:10px 40px; 
background:#dddddd;
width:350px;
}

#radius {
    border-radius: 20px;
}
</style> 
</head>
<body>

<div id="radius">radius</div>

</body>
</html>
		
背景効果
#id_ {
    background:url(REPLACE_URL);
    background-size: 200px 100px;
    background-origin:content-box;
}

使用例:

表2.2.16.3-2
効果図
コード


<!DOCTYPE HTML>
<html>
<head>
<style> 
#div1 {
	border:1px solid black;
	padding:100px;
    background:url(bg_flower.gif);
    background-size: 200px 100px;
    background-origin:content-box;
}
</style>
</head> 
<body>

<div id="div1"></div>

</body>
</html>
		
テキスト効果
#id_ {
    text-shadow: 5px 5px 5px #FF0000;
    word-wrap:break-word;
}

使用例:

表2.2.16.3-3
効果図
コード


<!DOCTYPE HTML>
<html>
<head>
<style> 
div
{
    width:11em; 
    border:1px solid #000000;
}

#test {
    text-shadow: 5px 5px 5px #FF0000;
    word-wrap:break-word;
}
</style> 
</head>
<body>

<div id="test">This paragraph contains a very long word: thisisaveryveryveryveryveryverylongword. The long word will break and wrap to the next line.</div>

</body>
</html>
		
CSS自動切り替え
@media ( min-width :1024px) {
    /* TODO: Add the content when the browser size is greater than 1024. */
}
@media ( max-width :1023px) and ( min-width :641px) {
   /* TODO: Add the content when the browser size is between ${smallersizer} and 1023. */
}
@media ( max-width :640px) {
   /* TODO: Add the content when the browser size is less than 640. */
}

使用例:

表2.2.16.3-4
効果図
コード


<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Media Query Demos</title>
<style> 
.wrapper {
	border: solid 1px #666;	
	padding: 5px 10px;
	margin: 40px;
}

.viewing-area span {
	color: #666;
	display: none;
}


@media ( min-width :1024px) {
    /* TODO: Add the content when the browser size is greater than 1024. */
    .two {
		background: #F90;
	}
	span.gt900 {
		display: inline-block;
	}
}
@media ( max-width :1023px) and ( min-width :641px) {
   /* TODO: Add the content when the browser size is between ${smallersizer} and 1023. */
   .three {
		background: #9CF;
	}
	span.bt600-900 {
		display: inline-block;
	}
}
@media ( max-width :640px) {
   /* TODO: Add the content when the browser size is less than 640. */
   .one {
		background: #F9C;
	}
	span.lt600 {
		display: inline-block;
	}
}
</style> 
</head>
<body>

    <div class="wrapper one">This box will turn to pink if the viewing area is less than 600px</div>
    <div class="wrapper two">This box will turn to orange if the viewing area is greater than 900px</div>
    <div class="wrapper three">This box will turn to blue if the viewing area is between 600px and 900px</div>
    <p class="viewing-area"><strong>Your current viewing area is:</strong> <span class="lt600">less than 600px</span> <span class="bt600-900">between 600 - 900px</span> <span class="gt900">greater than 900px</span></p>

</body>
</html>
		

2.2.16.4. WebOTX JQuery Mobile Tag

Caution
本スニペットは、jQuery 1.9.1とjQuery Mobile 1.3.2 で動作確認をとっています。

Button
<a href="index.html" data-role="button">button name</a>

使用例:

表2.2.16.4-1
効果図
コード


<!DOCTYPE HTML>
<html>
<head>
    <title>jQuery Mobile</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="./jquery.mobile-1.3.2.min.css" />
    <script type="text/javascript" src="./jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="./jquery.mobile-1.3.2.min.js"></script>
</head>
<body>

<a href="index.html" data-role="button">button name</a>

</body>
</html>
		
Checkbox
<div data-role="fieldcontain">
    <fieldset data-role="controlgroup">
    <legend>Agree to the terms:</legend>
    <input type="checkbox" name="name" id="checkbox_" class="custom" />
    <label for="checkbox_">I agree</label>
    </fieldset>
</div>

使用例:

表2.2.16.4-2
効果図
コード


<!DOCTYPE HTML>
<html>
<head>
    <title>jQuery Mobile</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="./jquery.mobile-1.3.2.min.css" />
    <script type="text/javascript" src="./jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="./jquery.mobile-1.3.2.min.js"></script>
</head>
<body>

<div data-role="fieldcontain">
    <fieldset data-role="controlgroup">
    <legend>Agree to the terms:</legend>
    <input type="checkbox" name="name" id="checkbox_" class="custom" />
    <label for="checkbox_">I agree</label>
    </fieldset>
</div>

</body>
</html>
		
Collapsibleset
<div data-role="collapsible-set">
    <div data-role="collapsible" data-collapsed="false">
        <h3>Section 1</h3>
        <p>I'm the collapsible set content for section 1.</p>
    </div>
    <div data-role="collapsible">
        <h3>Section 2</h3>
        <p>I'm the collapsible set content for section 2.</p>
    </div>
</div>

使用例:

表2.2.16.4-3
効果図
コード


<!DOCTYPE HTML>
<html>
<head>
    <title>jQuery Mobile</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="./jquery.mobile-1.3.2.min.css" />
    <script type="text/javascript" src="./jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="./jquery.mobile-1.3.2.min.js"></script>
</head>
<body>

<div data-role="collapsible-set">
    <div data-role="collapsible" data-collapsed="false">
        <h3>Section 1</h3>
        <p>I'm the collapsible set content for section 1.</p>
    </div>
    <div data-role="collapsible">
        <h3>Section 2</h3>
        <p>I'm the collapsible set content for section 2.</p>
    </div>
</div>

</body>
</html>
		
Controlgroup
<div data-role="controlgroup">
    <a href="" data-role="button">Yes</a>
    <a href="" data-role="button">No</a>
    <a href="" data-role="button">Maybe</a>
</div>

使用例:

表2.2.16.4-4
効果図
コード


<!DOCTYPE HTML>
<html>
<head>
    <title>jQuery Mobile</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="./jquery.mobile-1.3.2.min.css" />
    <script type="text/javascript" src="./jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="./jquery.mobile-1.3.2.min.js"></script>
</head>
<body>

<div data-role="controlgroup">
    <a href="" data-role="button">Yes</a>
    <a href="" data-role="button">No</a>
    <a href="" data-role="button">Maybe</a>
</div>

</body>
</html>
		
Dialog
<a href="REPLACE_URL" data-rel="dialog">Dialog</a>

使用例:

表2.2.16.4-5
効果図
コード


jqdialog.html
<!DOCTYPE HTML>
<html>
<head>
    <title>jQuery Mobile</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="./jquery.mobile-1.3.2.min.css" />
    <script type="text/javascript" src="./jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="./jquery.mobile-1.3.2.min.js"></script>
</head>
<body>

<a href="index.html" data-rel="dialog">Dialog</a>

</body>
</html>
		
index.html
<!DOCTYPE HTML>
<html>
<head>
    <title>jQuery Mobile</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="./jquery.mobile-1.3.2.min.css" />
    <script type="text/javascript" src="./jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="./jquery.mobile-1.3.2.min.js"></script>
</head>
<body>

    <div data-role="dialog" id="msg">
        <div data-role="header" data-theme="d">
            <h1>Notice</h1>
        </div>
        <div data-role="content" data-theme="c">
            <p id="ps"></p>
        </div>
        <div data-role="footer" data-position="fixed" data-theme="d">
            <a href="" data-role="button" data-transition="slide">OK</a>
        </div>
    </div>

</body>
</html>
		
Flip toggle switch
<div class="containing-element">
    <label for="flip-1">Flip switch:</label>
    <select name="fw_" id="fw_" data-role="slider">
        <option value="off">Off</option>
        <option value="on">On</option>
    </select>
</div>

使用例:

表2.2.16.4-6
効果図
コード


<!DOCTYPE HTML>
<html>
<head>
    <title>jQuery Mobile</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="./jquery.mobile-1.3.2.min.css" />
    <script type="text/javascript" src="./jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="./jquery.mobile-1.3.2.min.js"></script>
</head>
<body>

<div class="containing-element">
    <label for="flip-1">Flip switch:</label>
    <select name="fw_" id="fw_" data-role="slider">
        <option value="off">Off</option>
        <option value="on">On</option>
    </select>
</div>

</body>
</html>
		
Listview
<ul data-role="listview">
    <li><a href="">item1</a></li>
    <li><a href="">item2</a></li>
</ul>

使用例:

表2.2.16.4-7
効果図
コード


<!DOCTYPE HTML>
<html>
<head>
    <title>jQuery Mobile</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="./jquery.mobile-1.3.2.min.css" />
    <script type="text/javascript" src="./jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="./jquery.mobile-1.3.2.min.js"></script>
</head>
<body>

<ul data-role="listview">
    <li><a href="">item1</a></li>
    <li><a href="">item2</a></li>
</ul>

</body>
</html>
		
Navbar
<div data-role="navbar">
    <ul>
        <li><a href="">One</a></li>
        <li><a href="">Two</a></li>
    </ul>
</div>

使用例:

表2.2.16.4-8
効果図
コード


<!DOCTYPE HTML>
<html>
<head>
    <title>jQuery Mobile</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="./jquery.mobile-1.3.2.min.css" />
    <script type="text/javascript" src="./jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="./jquery.mobile-1.3.2.min.js"></script>
</head>
<body>

<div data-role="navbar">
    <ul>
        <li><a href="">One</a></li>
        <li><a href="">Two</a></li>
    </ul>
</div>

</body>
</html>
		
Page
<div data-role="page">
    <div data-role="header">
        <h1>Page Title</h1>
    </div>
    <div data-role="content">
        <h4>Page content</h4>
    </div>
    <div data-role="footer">
        <h4>Page Footer</h4>
    </div>
</div>

使用例:

表2.2.16.4-9
効果図
コード


<!DOCTYPE HTML>
<html>
<head>
    <title>jQuery Mobile</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="./jquery.mobile-1.3.2.min.css" />
    <script type="text/javascript" src="./jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="./jquery.mobile-1.3.2.min.js"></script>
</head>
<body>

<div data-role="page">
    <div data-role="header">
        <h1>Page Title</h1>
    </div>
    <div data-role="content">
        <h4>Page content</h4>
    </div>
    <div data-role="footer">
        <h4>Page Footer</h4>
    </div>
</div>

</body>
</html>
		
Popup
<a href="#pop_" data-rel="popup">Open Popup</a>
<div data-role="popup" id="pop_">
    <p>This is a completely basic popup, no options set.<p>
</div>

使用例:

表2.2.16.4-10
効果図
コード


<!DOCTYPE HTML>
<html>
<head>
    <title>jQuery Mobile</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="./jquery.mobile-1.3.2.min.css" />
    <script type="text/javascript" src="./jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="./jquery.mobile-1.3.2.min.js"></script>
</head>
<body>

<a href="#pop_" data-rel="popup">Open Popup</a>
<div data-role="popup" id="pop_">
    <p>This is a completely basic popup, no options set.<p>
</div>

</body>
</html>
		
Radio
<fieldset data-role="controlgroup">
    <legend>Choose a pet:</legend>
    <input type="radio" name="radio_" id="radio_" value="choice_" checked="checked" />
    <label for="radio_">Cat</label>
</fieldset>

使用例:

表2.2.16.4-11
効果図
コード


<!DOCTYPE HTML>
<html>
<head>
    <title>jQuery Mobile</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="./jquery.mobile-1.3.2.min.css" />
    <script type="text/javascript" src="./jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="./jquery.mobile-1.3.2.min.js"></script>
</head>
<body>

<fieldset data-role="controlgroup">
    <legend>Choose a pet:</legend>
    <input type="radio" name="radio_" id="radio_" value="choice_" checked="checked" />
    <label for="radio_">Cat</label>
</fieldset>

</body>
</html>