SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Java EE 6 開発入門

サーブレット3.0の新機能

Java EE 6 開発入門(2)

  • X ポスト
  • このエントリーをはてなブックマークに追加

非同期リクエストの正式サポート

 前回紹介したチャットサンプルのようなプッシュ型アプリケーションや、サーブレットから別プロセスでスレッドを起動でき、またサーブレットから参照することができるExecuteAndWaitデザインの、2つの機能を提供します。この機能で起動したスレッドは1クライアントごとに保持する仕組みを用意することがなく、Javaコンテナがすべて管理するのでサーブレット側は特にスレッド管理を意識する必要がありません。

 利用する場合には、@WebServletのアノテーション内で定義することで利用できます。

@WebServlet(asyncSupported=true)

 プッシュ型アプリケーションの例は、前回紹介したJava EE 6 環境の構築内で取りあげたサンプルプロジェクトにありますので、コードや設定例などを参考にしてください。

動的なサーブレット設定

 サーブレットやサーブレットフィルタを、サーブレットの初期化時に設定することができます。動的な設定方法は以下の2つになります。

  1. アノテーションによる設定
  2. ServletContextによる設定

 (1.)については先程のアノテーション定義で行ったサーブレットの定義のことですが、さらにより高度な設定を使うライブラリなどに対応できるよう、(2.)で紹介されている、サーブレットコンテキストに対して動的に設定できるようになりました。

 従来のサーブレットには動的生成に対応する機能は持ち合わせておらず、しかし昨今提供されるフレームワーク内では対応している機能でした。この機能が正式に仕様として採用されることでサーブレットが柔軟に拡張できるため、実装面での拡張や対応ライブラリの登場が期待されています。

設定ファイルの分割

 従来のサーブレット仕様ではweb.xmlは1つしか持てませんでした。これはアプリケーションの設定ファイルが1つしか持てないことになります。また、フレームワークや複数のライブラリにもweb.xmlに対して設定する内容も多く、現在ではフレームワークを複数組み合わせて使うアプリケーションが多いこともあって、web.xmlへの追記は多くなります。当然、アプリケーションの規模が大きくなると、比例してweb.xmlも肥大化します。

 設定ファイルの分割は、これらの外部ライブラリの設定を個別に設定できるようにする目的で新設されました。ファイル名はweb-fragment.xmlで設定し、この設定ファイルはフレームワークやライブラリの中に含めるように、jarファイルの中に含めて利用することになります。

 以下に利用方法を示します。まずはweb-fragment.xmlを有効化させるため、web.xmlの記述を変更します。

リスト4 web-fragment.xmlを有効にしたweb.xml
<web-app version="3.0"
         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 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         metadata-complete="false">
  <absolute-ordering>
    <name>fragment</name>
  </absolute-ordering>
…(中略)
</web-app>

 ルート要素である <web-app>に対してmetadata-complete="false"を記述することで、web-fragment.xmlが有効になります。<absolute-ordering>で作成するweb-fragment.xmlの名称と順番を定義します。

 続いてはweb-fragment.xmlの設定例です。ルート要素がweb-fragmentであること以外はほとんど変更はありません。

リスト5 web-fragment.xml
<?xml version="1.0″ encoding="UTF-8″?>
<web-fragment 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 
              http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"
              version="3.0″>
    <servlet>
        <servlet-name>OtherServlet</servlet-name>
        <servlet-class>sample.webapp.OtherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>OtherServlet</servlet-name>
        <url-pattern>/other/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>15</session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>
</web-fragment>

 これでweb-fragment.xmlの受け入れが可能になります。web.xmlへはweb-fragment.xmlの登録は必要なく、jarファイルの中に、META-INF/web-fragment.xmlの構成で組み込まれていれば問題ありません。

次のページ
認証処理の実装

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Java EE 6 開発入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 東 浩二(アズマ コウジ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5920 2011/06/01 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング