Sun Java System Application Server Enterprise Edition 8.2 アップグレードと移行

Application Server 6.x からの Web アプリケーションの移行

Application Server 6.x は、サーブレット (Servlet API 2.2) および JSP (JSP 1.1) をサポートします。Sun Java System Application Server 8.2 は、Servlet API 2.4 と JSP 2.0 をサポートします。

これらの環境内では、アプリケーションの各種コンポーネント (サーブレット、JSP、HTML ページ、その他のリソース) をまとめて 1 つのアーカイブファイル (J2EE 標準の Web アプリケーションモジュール) にグループ化し、それをアプリケーションサーバーに配備することが不可欠です。

J2EE 仕様によれば、Web アプリケーションは次のような構造を持つアーカイブファイル (WAR ファイル) です。

Java Server Pages (JSP) と JSP カスタムタグライブラリの移行

Application Server 6.x は JSP 1.1 仕様に準拠し、Application Server 8.2 は JSP 2.0 仕様に準拠します。

JSP 2.0 仕様には、多くの新機能に加えて、JSP 1.1 仕様の更新が含まれています。

これらの変更は機能拡張であり、JSP ページの JSP 1.1 から 2.0 への移行には必要ありません。

Application Server 6.x の JSP カスタムタグライブラリの実装は、J2EE 仕様に準拠します。その結果、JSP カスタムタグライブラリの Application Server Enterprise Edition 8.2 への移行では、特に問題は発生せず、変更も必要ありません。

サーブレットの移行

Application Server 6.x は、Servlet 2.2 API をサポートします。Sun Java System Application Server 8.2 は、Servlet 2.4 API をサポートします。

Servlet API 2.4 では、サーブレットのコアはあまり変更されていません。ほとんどの変更は、コアの外部に追加された新機能に関係しています。

もっとも重要な機能を次に示します。

これらの変更は機能拡張であり、サーブレットを Servlet API 2.2 から 2.4 に移行する場合には必要ありません。

ただし、アプリケーション内のサーブレットが JNDI を使用して J2EE アプリケーション内のリソース (データソースや EJB など) にアクセスする場合は、ソースファイルや配備記述子にいくつかの変更が必要になることがあります。

これらの変更の詳細については、次の節で説明します。

最後のシナリオとして、サーブレットコードの変更が必要になる場合があります。JSP ページに既存の Java クラスと同じ名前が存在する場合は、Application Server 6.x で名前の競合が発生する可能性があります。このような場合は、JSP ページ内の該当する名前を変更することによって、競合を解決してください。さらに、場合によっては、この JSP ページを呼び出すサーブレットのコードも編集する必要があります。この問題は、新しいクラスローダー階層を使用する Application Server では解決されています。新しいバージョンのアプリケーションサーバーでは、特定のアプリケーションに関して、1 つのクラスローダーがすべての EJB モジュールを読み込み、別のクラスローダーが Web モジュールを読み込みます。これら 2 つのローダーどうしは通信しないため、名前の競合は発生しません。

JNDI コンテキストからのデータソースの取得

JNDI コンテキストにバインドされたデータソースへの参照を取得するには、初期コンテキストオブジェクトからデータソースの JNDI 名を検索します。次に、このようにして取得されたオブジェクトを次のように DataSource タイプのオブジェクトとしてキャストします。

ds = (DataSource)ctx.lookup(JndiDataSourceName);

詳細は、「JDBC コードの移行」を参照してください。

JNDI コンテキストでの EJB の宣言

第 4 章「EJB 1.1 から EJB 2.0 への移行」「JNDI コンテキストにおける EJB の宣言」を参照してください。

サーブレットおよび JSP の移行に関する潜在的な問題

サーブレットまたは JSP アプリケーションのコンポーネントを実際に Application Server 6.x から Application Server 8.2 に移行するときは、コンポーネントのコードを変更する必要はありません。

Web アプリケーションがデータソースなどのサーバーリソースを使用する場合、Application Server ではそのリソースを web.xml ファイル内で宣言し、sun-web.xml ファイル内でも同様に宣言する必要があります。jdbc/iBank という名前のデータソースを宣言する場合は、web.xml ファイルの <resource-ref> タグは次のようになります。

<resource-ref>
   <res-ref-name>jdbc/iBank</res-ref-name>
   <res-type>javax.sql.XADataSource</res-type>
   <res-auth>Container</res-auth>
   <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

これに対応する sun-web.xml ファイル内の宣言は、次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<! DOCTYPE FIX ME: need confirmation on the DTD to be used for this file
<sun-web-app>
   <resource-ref>
      <res-ref-name>jdbc/iBank</res-ref-name>
      <jndi-name>jdbc/iBank</jndi-name>
   </resource-ref>
 </sun-web-app>

Web アプリケーションモジュールの移行

アプリケーションを Application Server 6.x から Sun Java System Application Server 8.2 に移行するときは、Java コードや Java Server Pages を変更する必要はありません。ただし、次のファイルは変更する必要があります。

Application Server は J2EE 1.4 標準規格に準拠しているため、WAR ファイル内の web.xml ファイルは改訂された DTD (http://java.sun.com/dtd/web-app_2_3.dtd) に従う必要があります。この DTD は旧バージョンの DTD のスーパーセットなので、移行する web.xml ファイル内の <! DOCTYPE 定義を変更するだけで済みます。変更された <! DOCTYPE 宣言は、次のようになります。

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.// 
                        DTD Web Application 2.3//EN" 
                        "http://java.sun.com/dtd/web-app_2_3.dtd">

Application Server Enterprise Edition 8.2 では、このファイルの名前が sun-web.xml に変更されます。

この XML ファイルでは、Web アプリケーションに必要な Application Server 固有のプロパティーとリソースを宣言する必要があります。

このファイルに追加すべき重要な内容については、「サーブレットおよび JSP の移行に関する潜在的な問題」を参照してください。

Application Server 6.5 アプリケーションの ias-web.xml が存在し、Application Server 6.5 固有のプロパティーが宣言されている場合は、このファイルを Application Server の標準規格に移行する必要があります。DTD のファイル名は、sun-web.xml に変更してください。詳細は、URL http://wwws.sun.com/software/dtd/appserver/sun-web-app_2_4-1.dtd を参照してください。

web.xml ファイルと ias-web.xml ファイルにこれらの変更を行ったあとは、Application Server の配備ツール GUI インタフェースまたは asadmin コマンド行ユーティリティーから Web アプリケーション (WAR ファイル) を配備できます。配備コマンドでは、アプリケーションのタイプを Web として指定してください。

asadmin コマンド行ユーティリティーを起動するには、Application Server の bin ディレクトリで asadmin.bat ファイルまたは asadmin.sh スクリプトを実行します。

asadmin プロンプトで入力するコマンドを次に示します。

asadmin deploy -u username -w password
-H hostname 
-p adminport 
--type web 
[--contextroot contextroot] 
[--force=true] 
[--name component-name] 
[--upload=true] filepath