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

第 1 章 Application Server の互換性の問題

Application Server 8.2 Enterprise Edition は、Application Server 8.1、8.0、および 7.x とバイナリ互換性があります。バージョン 8.1、8.0、および 7.x で実行される J2EE アプリケーションも Application Server8.2 で動作しますが、この章で説明する部分については互換性がありません。

この章では、次の領域における非互換性について説明します。

HTTP ファイルキャッシュ

Application Server 8.1 Enterprise Edition に存在した HTTP ファイルキャッシュは、Application Server 8.2 では提供されていません。

domain.xml の要素

サーバーインスタンスに対するメッセージレベルのセキュリティープロバイダが設定されていない場合、Application Server 8.1 では Domain Administration Server (DAS) によるデフォルト設定が適用されます。Application Server 8.2 ではデフォルト設定は適用されません。メッセージレベルのセキュリティーを使用する各サーバーインスタンスに対して、メッセージレベルのセキュリティープロバイダ (ClientProvider および ServerProvider) を手動で導入する必要があります。以前のバージョンから Application Server 8.2 にアップグレードする場合、アップグレードツールでは、これらの不足している要素は domain.xml ファイルに追加されません。

システムプロパティー

Application Server 8.2 のデフォルトのセキュリティーポリシーでは、一部のシステムプロパティーの変更が許可されていません。たとえば、Application Server 7 では、java.util.PropertyPermission プロパティーの読み取り権/書き込みの権限は "*", "read,write"; でしたが、Application Server 8.2 の java.util.PropertyPermission プロパティーの読み取り権/書き込みの権限は "*", "read"; です。

暗黙の URL 書き換え

Application Server 6.x では、暗黙の URL 書き換えがサポートされていました。この機能では、Web コネクタプラグインがブラウザに送信された HTML ストリームを解析し、href= および frame= などの属性にセッション ID を追加していました。Application Server 7、8、および Application Server 8.2 ではこの機能を使用できません。ユーザーは自分のアプリケーションを見直して、Cookie をサポートしていないクライアント (携帯電話など) にアプリケーションが提示するすべての URL で encodeURL および encodeRedirectURL を使用する必要があります。

Web サーバーの機能

次に示す Web サーバー固有の機能は、Application Server 8.2 ではサポートされていません。

レルム

アップグレードツールは、レルムおよびロールマッピング設定、任意のカスタムレルムクラス、および各ドメインのファイルベースのユーザーキーファイルを移動します。XML タグ、security-service によって、レルムとロールマッピング設定が定義されます。このタグは sun-server_1_0.dtd および sun-domain_1_0.dtd で定義されます。Application Server 7 の場合、タグのデータは server.xml にあり、Application Server 8.2 の場合は domain.xml にあります。

アップグレードツールは、カスタムレルム用に定義されたクラスファイルを配置し、これを Application Server 8.2 環境で使用できるようにします。カスタムレルムクラスは、タグ auth-realm のクラス名属性で定義されます。security-service タグでは、default-realm 属性はサーバーの使用しているレルムを指しています。これが、設定済みの auth-realm 名のいずれかを指すようにします。デフォルトのレルムはファイルです。default-realm のクラス名が見つからない場合、アップグレードツールはこれをエラーとしてログします。

セキュリティーレルム実装のパッケージ名は、Application Server 7 では com.iplanet.ias.security.auth.realm でしたが、Application Server 8.2 では com.sun.enterprise.security.auth.realm に名前変更されました。したがって、com.iplanet.* クラスを使用して作成したカスタムレルムは変更する必要があります。

com.sun.enterprise.security.AuthenticationStatus クラスは削除されました。

com.sun.enterprise.security.auth.login.PasswordLoginModule authenticate メソッドの実装は、次のように変更されました。

/**
    * Perform authentication decision.
    * <P> Note: AuthenticationStatus and AuthenticationStatusImpl
    * classes have been removed.
    * Method returns silently on success and returns a LoginException
    * on failure.
    *
    * @return void authenticate returns silently on 
    *               successful authentication.
    * @throws LoginException on authentication failure.
    *
    */
abstract protected void authenticate()
    throws LoginException;

Sun 配備記述子: sun-web.xml

Application Server 7 では、オプション属性 delegate のデフォルト値は false でした。Application Server 8.2 では、この属性のデフォルト値は true に設定されています。この変更は、デフォルトでは Web アプリケーションのクラスローダーが、それ自身でクラスをロードする前に、まず親のクラスローダーに委任するようになったことを意味しています。詳細については、delegate 属性」を参照してください。

encodeCookies プロパティー

sun-web.xml ファイルにある sun-web-app 要素の encodeCookies プロパティーが true に設定されている場合、Cookie の URL エンコーディングが実行されます。Application Server 7 では、encodeCookies プロパティーのデフォルト値は true でした。このプロパティーは Application Server 8 では存在していませんでした。Application Server 8.2 では、デフォルト値は false です。

Cookie の URL エンコーディングは必要ありません。このプロパティーは true に設定しないようにしてください。このプロパティーが必要になるのは、Application Server 7 でこの動作に依存していた非常に少数のアプリケーションのみです。

CORBA パフォーマンスオプション

Application Server 7 では、ユーザーは、必要に応じていくつかの Object Request Broker (ORB) パフォーマンスの最適化をオンにするために、次のシステムプロパティーを指定することができました。

-Djavax.rmi.CORBA.UtilClass=com.iplanet.ias.util.orbutil.IasUtilDelegate

Application Server 8.2 では、デフォルトで ORB パフォーマンスの最適化がオンになっています。以前のシステムのシステムプロパティー参照を使用している場合は、デフォルトの最適化を干渉しないようにするために、これを削除してください。

ファイル形式

Application Server 8.2 では、domain.xml がメインのサーバー設定ファイルです。Application Server 7 では、メインのサーバー設定ファイルは server.xml でした。domain.xml の DTD ファイルは lib/dtds/sun-domain_1_1.dtd にあります。Application Server 8.2 に含まれるアップグレードツールを使用すると、Application Server 7 の server.xml から Application Server 8.2 の domain.xml に移動できます。

Application Server 8.2 の lib/dtds/sun-domain_1_1.dtd ファイルは、Application Server 8 における対応ファイル ( sun-domain_1_0.dtd) に対して完全な下位互換を保っています。

通常、設定ファイルの形式は下位互換性がありません。次の設定ファイルはサポートされていません。

クラスタのスクリプト

Application Server 7 における clsetup および cladmin スクリプトは、Application Server 8.2 ではサポートされていません。Application Server 8.2 では、 clsetup スクリプトは asadmin configure-ha-cluster コマンドに置き換わり、cladmin スクリプトによってサポートされていたコマンドは、クラスタを操作する asadmin コマンドに置き換わっています。asadmin コマンドの詳細については、『Sun Java System Application Server Enterprise Edition 8.2 Reference Manual 』を参照してください。

主キーの属性値

Application Server 7 では、管理コンソールで任意のフィールド、コマンド行インタフェース (CLI) で任意の属性を変更できました。Application Server 8.2 では、項目の主キーのフィールドや属性を変更することはできません。ただし、項目を削除して、新しい主キーの値で再作成することはできます。ほとんどの場合、主キーは名前、ID、参照、または JNDI 名のいずれかです。次の表は、変更することのできない主キーの一覧です。


注 –

domain.xml ファイルでは、フィールドまたは属性は attribute、項目は element と呼ばれています。domain.xml の詳細については、『Sun Java System Application Server Enterprise Edition 8.2 Administration Reference 』を参照してください。


表 1–1 主キーの属性

項目 

主キーのフィールドまたは属性 

admin-object-resource

jndi-name

alert-subscription

name

appclient-module

name

application-ref

ref

audit-module

name

auth-realm

name

cluster-ref

ref

cluster

name

config

name

connector-connection-pool

name

connector-module

name

connector-resource

jndi-name

custom-resource

jndi-name

ejb-module

name

external-jndi-resource

jndi-name

http-listener

id

iiop-listener

id

j2ee-application

name

jacc-provider

name

jdbc-connection-pool

name

jdbc-resource

jndi-name

jms-host

name

jmx-connector

name

lb-config

name

lifecycle-module

name

mail-resource

jndi-name

message-security-config

auth-layer

node-agent

name

profiler

name

element-property

name

provider-config

provider-id

resource-adapter-config

resource-adapter-name

resource-ref

ref

security-map

name

server

name

server-ref

ref

system-property

name

thread-pool

thread-pool-id

virtual-server

id

web-module

name

persistence-manager-factory-resource

jndi-name

コマンド行インタフェース: hadbm

次の表は、コマンド行ユーティリティー hadbm のサポートされなくなったオプションの一覧です。hadbm コマンドの詳細については、『Sun Java System Application Server Enterprise Edition 8.2 Reference Manual 』を参照してください。

表 1–2 サポートされていない hadbm オプション

オプション 

サポート対象でなくなったサブコマンド 

--inetdsetup

addnodes サブコマンドに対してサポートされなくなりました。

--inetd

create サブコマンドに対してサポートされなくなりました。

--inetdsetupdir

create サブコマンドに対してサポートされなくなりました。

--configpath

create サブコマンドに対してサポートされなくなりました。

--set managementProtocol

create サブコマンドに対してサポートされなくなりました。

--set DataDeviceSize

--set TotalDatadeviceSizePerNode

create または set サブコマンドに対してサポートされなくなりました。

コマンド行インタフェース: start-appserv および stop-appserv

start-appserv および stop-appserv コマンドは非推奨です。これらのコマンドを使用すると警告が表示されます。asadmin start-domain および asadmin stop-domain を代わりに使用してください。

Application Server 8.2 では、管理コンソールから「標準エラーへのログメッセージ」フィールドが削除されています。domain.xml ファイル内の log-to-console 属性は非推奨で無視されます。asadmin set コマンドは、 log-to-console 属性に対して無効です。asadmin start-domain コマンドの ---verbose オプションを使用して、asadmin start-domain コマンドを実行したウィンドウに対するメッセージを印刷します。このオプションが機能するのは、起動中のドメインのあるマシン上で asadmin start-domain コマンドを実行した場合のみです。

コマンド行インタフェース: asadmin

ここでは、コマンド行ユーティリティー asadmin に対する変更内容について説明します。

asadmin コマンドの詳細については、『Sun Java System Application Server Enterprise Edition 8.2 Reference Manual 』を参照してください。

asadmin のサブコマンド

サブコマンドは、次の示すものを除いて下位互換が保たれています。

reconfig サブコマンドは非推奨で、無視されます。

次のサブコマンドは Application Server 8.2 ではサポートされていません。

次のサブコマンドは Application Server 8.2 ではサポートされなくなりました。ソフトウェアライセンスキーと Web コアが削除され、Application Server 8.2 では、Web サーバー機能からの制御関数はサポートされなくなりました。

Start および Stop サブコマンドに対するエラーコード

Application Server 7 では、asadmin コマンドの start および stop サブコマンドに対するエラーコードは、必要とされる END 状態に基づいていました。たとえば asadmin start-domain の場合、ドメインがすでに実行中であれば、終了コードは 0 (成功) でした。ドメインの起動に失敗すれば、終了コードは 1 (エラー) でした。

Application Server 8.2 の場合、終了コードはコマンドが期待どおりに実行されるかどうかに基づいています。たとえば、asadmin start-domain コマンドは、ドメインがすでに実行中であるか、ドメインの起動に失敗すれば、終了コード 1 を返します。同じように、asadmin stop-domain は、ドメインがすでに停止されたか、停止できなければ、終了コード 1 を返します。

非推奨およびサポートされていないオプション

次の表のオプションは、非推奨であるか、サポートされなくなったものです。

表 1–3 非推奨およびサポートされていない asadmin オプション

オプション 

サブコマンドで非推奨またはサポートされない 

--acceptlang

create-virtual-server サブコマンドに対して非推奨です。

--acls

create-virtual-server サブコマンドに対して非推奨です。

--adminpassword

関連するすべてのサブコマンドに対して非推奨です。--passwordfile を代わりに使用します。

--blockingenabled

create-http-listener サブコマンドに対して非推奨です。

--configfile

create-virtual-server サブコマンドに対して非推奨です。

--defaultobj

create-virtual-server サブコマンドに対して非推奨です。

--domain

stop-domain サブコマンドに対して非推奨です。

--family

create-http-listener サブコマンドに対して非推奨です。

--instance

すべてのリモートサブコマンドに対して非推奨です。--target を代わりに使用します。

--mime

create-virtual-server サブコマンドに対して非推奨です。

--optionsfile

すべてのコマンドに対してサポートされなくなりました。 

--password

すべてのリモートサブコマンドに対して非推奨です。--passwordfile を代わりに使用します。

--path

create-domain サブコマンドに対して非推奨です。 --domaindir を代わりに使用します。

--resourcetype

関連するすべてのサブコマンドに対して非推奨です。--restype を代わりに使用します。

--storeurl

すべてのコマンドに対してサポートされなくなりました。 

--target

すべての jdbc-connection-poolconnector-connection-pool connector-security-map、および resource-adapter-config サブコマンドに対して非推奨です。

--type

関連するすべてのサブコマンドに対して非推奨です。 

ドット表記名

asadmin get および set サブコマンドにおけるドット表記名の使用は、次の部分で下位互換ありません。

Application Server 8.2 では、asadmin コマンドの ---passwordfile オプションでは password.conf ファイルを読み取らないので、アップグレードツールによってこのファイルはアップグレードされません。Application Server 8.2 でパスワードファイルを作成する方法については、『Sun Java System Application Server Enterprise Edition 8.2 管理ガイド』を参照してください。

下の表は、Application Server 7 と 8.2 の間で互換性のないドット表記名を 1 対 1 で示したものです。この表には互換性のあるドット表記名は表示されていません。

表 1–4 バージョン間で互換性のないドット表記名

Application Server 7 のドット表記名 

Application Server 8.2 のドット表記名 

server_instance.http-listener. listener_idserver_instance.http-service.http-listener. listener_id

server_instance.http-service.http-listener. listener_idconfig_name .http-service.http-listener.listener_id

server_instance.orb server_instance.iiop-service

server_instance.iiop-service config_name .iiop-service

server_instance.orblistener server_instance.iiop-listener

server_instance.iiop-service.iiop-listener. listener_idconfig_name .iiop-service.iiop-listener.listener_id

server_instance.jdbc-resource. jndi_name

server_instance.resources.jdbc-resource. jndi_namedomain.resources.jdbc-resource. jndi_name

server_instance.jdbc-connection-pool. pool_id

server_instance.resources.jdbc-connection-pool. pool_iddomain.resources.jdbc-connection-pool. pool_id

server_instance.external-jndi-resource. jndi_nameserver_instance.jndi-resource. jndi_name

server_instance.resources.external-jndi-resource. jndi_namedomain.resources.external.jndi-resource. jndi_name

server_instance.custom-resource. jndi_name

server_instance.resources.custom-resource. jndi_namedomain.resources.custom-resource. jndi_name

server_instance.web-container.logLevel

(最後の注を参照) 

server_instance.log-service.module-log-levels.web-container config_name .log-service.module-log-levels.web-container

server_instance.web-container.monitoringEnabled

(最後の注を参照) 

server_instance.monitoring-service.module-monitoring-levels.web-container config_name .monitoring-service.module-monitoring-levels.web-container

server_instance.j2ee-application. application_nameserver_instance.application. application_name

server_instance.applications.j2ee-application. application_name domain.applications.j2ee-application. application_name

server_instance.ejb-module. ejb-module_name

server_instance.applications.ejb-module. ejb-module_namedomain.applications.ejb-module. ejb-module_name

server_instance.web-module. web-module_name

server_instance.applications.web-module. web-module_namedomain.applications.web-module. web-module_name

server_instance.connector-module. connector_module_name

server_instance.applications.connector-module. connector_module_name domain.applications.connector-module. connector_module_name

server_instance.lifecycle-module. lifecycle_module_name

server_instance.applications.lifecycle-module. lifecycle_module_name domain.application.lifecycle-module. lifecycle_module_name

server_instance.virtual-server-class

N/A* 

server_instance.virtual-server. virtual-server_id

server_instance.http-service.virtual-server.virtual-server_id config_name.http-service.virtual-server.virtual-server_id

server_instance.mime. mime_id

N/A* 

server_instance.acl. acl_id

N/A* 

server_instance.virtual-server .virtual-server_id.auth-db .auth-db_id

N/A* 

server_instance.authrealm. realm_idserver_instance.security-service.authrealm .realm_id

server_instance.security-service.auth-realm. realm_idconfig_name .security-service-auth-realm.realm_id

server_instance.persistence-manager-factory-resource. jndi_nameserver_instance .resources.persistence-manager-factory-resource. jndi_name

server_instance.resources.persistence-manager-factory-resource. jndi_namedomain.resources.persistence-manager-factory-resource. jndi_name

server_instance.http-service.acl. acl_id

N/A* 

server_instance.mail-resource. jndi_name

server_instance.resources.mail-resource. jndi_namedomain.resources.mail-resource. jndi_name

server_instance.profiler

server_instance.java-config.profiler config_name .java-config.profiler

* — Application Server 7 におけるこれらの属性名は、Application Server 8.2 のドット表記名に直接は対応していません。

属性値のトークン

Application Server 8 では asadmin get コマンドによって解決済みの値が表示されますが、Application Server 8.2 では未処理の値が表示されます。これらの未処理の値はトークンの場合があります。たとえば、次のコマンドを実行します。

asadmin get domain.log-root

上記のコマンドによって次の値が表示されます。

${com.sun.aas.instanceRoot}/logs

属性値の NULL

Application Server 8 では、値のない属性値には NULL が格納されていました。これが原因で、パスを指定する属性に問題が発生していました。Application Server 8.2 では、Application Server 7 の場合と同じように、値のない属性には空の文字列が格納されるようになりました。