WebLogic Workshop バージョン 8.1 (SP4、SP5、または SP6) のアプリケーションを Workshop バージョン 10.x のワークスペースにアップグレードします。
注意 : このコマンドは Ant タスクとしても使用できます。詳細については、「upgrade Ant タスク」を参照してください。
注意 : このコマンドを使用する前に、バージョン 8.1 のアプリケーションを SP4、SP5、または SP6 にアップグレードしておく必要があります。
このコマンドは、いくつかの例外を除き、アプリケーションのアップグレード時に [インポート] ウィザードによって提供される機能と本質的に同じ機能をコマンドラインから提供します。
1 つの例外は、コマンドでアップグレード対象のアプリケーションのサブセットを指定できないことです。たとえば、このコマンドではアップグレードするプロジェクトの指定はサポートされていません。すべてのプロジェクトがアップグレードされます。
その他の例外については、後述の「コマンドラインでアップグレードした後に手動で行う必要がある手順」に示します。
[インポート] ウィザードと同様に、このコマンドでもバージョン 8.1 のアプリケーションに対する削除や変更は行われません。
大規模アプリケーションでは、JVM メモリ引数 (例 : java -Xms512m -Xmx1024m) を追加するよう考慮してください。
バージョン 1.5 の JRE 実装を使用する必要があります。また、クラスパスに startup.jar を含める必要があります。下記の ECLIPSE_HOME
引数の説明を参照してください。
java -cp %ECLIPSE_HOME%/startup.jar -Dwlw.application=%WORK_FILE% -Dweblogic.home=%WL_HOME% org.eclipse.core.launcher.Main -application com.bea.workshop.upgrade81.upgradeStarter -data %WORKSPACE% [-pluginCustomization %PREFS_FILE%]
ECLIPSE_HOME
必須。startup.jar が格納されているディレクトリへのパス。Workshop のデフォルトは次のとおりです。
BEA_HOME/tools/eclipse_pkgs/1.1/eclipse_3.2.2/eclipse
-Dweblogic.home=WL_HOME
必須。 WebLogic Server のルート フォルダの場所。デフォルトは次のとおりです。
BEA_HOME/wlserver_10.0
-Dwlw.application=WORK_FILE
必須。アップグレードするアプリケーションを指定します。WORK_FILE を、アップグレードする WebLogic Workshop 8.1 アプリケーションに対応する WORK ファイル名に置き換えてください。
-application com.bea.workshop.upgrade81.upgradeStarter
必須。このコマンドの実行に使用される Eclipse プラグイン拡張ポイント。
-data WORKSPACE
必須。アップグレードされたアプリケーションの移動先となる対象ワークスペースの名前。バージョン 10.x のアプリケーション ファイルの生成先となるディレクトリを自由に指定できます。
[-pluginCustomization PREFS_FILE]
省略可能。 アップグレード オプションを設定するためのプロパティ ファイルを指定します。PREFS_FILE を、キーと値のペアを格納しているプロパティ ファイル名に置き換えてください。指定できるプロパティのリストについては、以下の「備考」を参照してください。
以下に、-pluginCustomization
引数で指定される PREFS_FILE でサポートされているプロパティを示します。
com.bea.workshop.upgrade81/upgradeHarnessAbortOnError = true | false
エラーが発生したらアップグレード プロセスを中止する場合には、true
を指定します。デフォルトでは、エラー発生後もアップグレードの継続が試みられます。エラーは常にログ ファイルに記録されます。デフォルトは false
です。
com.bea.workshop.upgrade81/upgradeHarnessMessageLevel
= INFO | WARNING | ERROR
省略可能。記録されるメッセージ レベルを指定します。指定されない場合は、すべてのメッセージがログに記録されます。以下の値を指定できます。
INFO
- すべてのメッセージが表示されます。この値がデフォルトです。
WARNING
- 警告メッセージ、エラー メッセージ、および致命的なメッセージが表示されます。情報メッセージは表示されません。
ERROR
- エラー メッセージと致命的なメッセージのみが表示されます。
com.bea.workshop.upgrade81/migrateJSPPreference = true | false
アップグレード プロセスの一部として、バージョン 8.1 の NetUI JSP タグをそれに対応するバージョン 10.x のタグに置き換える場合には、true
を指定します。デフォルトは false
です。この場合、これらのタグはバージョン 8.1 のタグのまま、バージョン 10.x のサーバ環境と互換性のあるバージョンにアップグレードされます。
com.bea.workshop.upgrade81/upgradeProjectImportOverwrite = true | false
プロジェクト名の衝突が発生したときに既存のプロジェクトを上書きする場合には、true
を指定します。デフォルトは false
です。
com.bea.workshop.upgrade81/upgradeProjectImportPrefix = "PREFIX"
インポートされたすべてのプロジェクトに付加するプレフィックスを指定します (省略可能)。
com.bea.workshop.upgrade81/upgraderPrefMoveResourceBundle = "true | false"
.properties 拡張子の付いたファイルを Web コンテンツ フォルダからソース ファイル フォルダに移動する場合には、true
を指定します。デフォルトは false
です (ファイルは移動されず、コピーが作成されます)。
com.bea.workshop.upgrade81/upgradeHarnessReportOnly = true | false
アップグレード レポートを生成するが、アプリケーションをアップグレードしない場合には、true
を指定します。デフォルトは false
です (レポート生成とアップグレードの両方が実行されます)。
com.bea.workshop.upgrade81/upgradeHarnessLogFile = LOG_FILE_LOCATION
このコマンドによって生成されるログ ファイルの場所を指定します。デフォルト値は、WORKSPACE/.metadata/upgrade.log です。
コマンドライン ツールによるアップグレードの後で、Web プロジェクトで AppXRay を有効にする必要がある場合があります。このような場合、ユーザがワークスペースを初めて開いたとき、プロジェクトをアップグレードすることを求めるメッセージが表示されます。アップグレード ダイアログで [はい] を選択することで、プロジェクトで AppXRay が有効になります。
バージョン 8.1 の com.bea.control.ControlException には、対応するバージョン 10.x の org.apache.beehive.controls.api.ControlException には含まれていない getNestedException メソッドがありました。アップグレード後は、このメソッドを呼び出すコードではコンパイル エラーが発生します。このメソッドは単に、Throwable クラス ( ControlException クラスはこのクラスを拡張したもの) の getCause メソッドに委託していたため、getNestedException 呼び出しを getCause に変更するだけで、この変更に対応できます。
バージョン 8.1 の com.bea.wlw.netui.pageflow.PageFlowStack クラスと、これに対応するバージョン 10.x の クラス org.apache.beehive.netui.pageflow.PageFlowStack は異なっているため、アップグレード後に一部のコードに対して変更が必要になる場合があります。これらの相違を具体的に言うと、バージョン 8.1 のクラスは java.util.Stack を拡張したものでしたが、バージョン 10.x のクラスは Object を直接拡張したものです。
こうした相違によって問題が発生すると考えられるシナリオの 1 つは、コードで静的メソッド PageFlowUtils.getPageFlowStack の戻り値 (Stack オブジェクト) が PageFlowStack にキャストされる場合です。このようなキャストは、現在の PageFlowStack クラスではもちろん無効です。PageFlowStack にキャストし、その後 Stack メソッドを使用していた場合でも、これらのメソッドのいくつかは現在の PageFlowStack クラスに実装されています。ただし、静的な PageFlowStack.get メソッドを使用して PageFlowStack インスタンスを取得するようになっています。
PageFlowUtils.getPageFlowStack から返された Stack インスタンスを直接呼び出していたが、PageFlowStack にキャストしない場合は、引き続きその Stack を使用できます。ただし、getPageFlowStack メソッドは非推奨になっています。
アプリケーションのセキュリティを強化するために、org.apache.beehive.netui.pageflow.PageFlowController および org.apache.beehive.netui.pageflow.FlowController の一部のパブリック メソッドが保護されるように変更されました。この変更により、これらのメソッドは JSP ページ内から Bean プロパティとして呼び出すことができなくなりました。さらに、これらのメソッドの新しいパブリック バージョンがページ フロー コードの外部からのアクセス用に作成されましたが、Bean プロパティとしてアクセスできないように「get」ではなく「the」で始まる名前が付けられています。
要約すると、この変更によって以下の変更が発生しました。
通常、破綻しているコードをアップグレード後に修正するには、「get」で始まるメソッド名を検索して、それを対応する「the」で始めるメソッドに置き換えることが必要になります。たとえば、次のコードは修正する必要があります。
PageFlowController pageFlowController = PageFlowUtils.getCurrentPageFlow(this.Request()); if(pageFlowController != null){ if(pageFlowController.getCurrentPageInfo().getForward().getRedirect() == true) { return new Forward("main_page"); } }
次のコードでは、行われた変更が反映されています (上記のバージョン 8.1 の getCurrentPageFlow メソッドは非推奨になっています。代わりに以下のように 2 つのパラメータのバージョンを使用してください)。
PageFlowController pageFlowController = PageFlowUtils.getCurrentPageFlow(this.getRequest(), this.getServletContext()); // 上記のコードでは「getCurrentPageInfo」が使用されていたが、ここでは「theCurrentPageInfo」になっている if(pageFlowController != null){ if(pageFlowController.theCurrentPageInfo().getForward().getRedirect() == true) { return new Forward("main_page"); } }
バージョン 10.x より前の WebLogic Platform に付属していたバージョンの Beehive API で記述されたコードでも変更が必要になる場合があります。Workshop のアップグレード ツールでは、WebLogic Platform のバージョン 9.x で記述されたコードはアップグレードされません。
バージョン 8.1 では、WebLogic Portal 環境での実行時に FlowController.getRequest メソッドの戻り値を ScopedRequest にキャストできました。バージョン 10.x では、パフォーマンスを向上させるために ページ フローの API で ScopedRequest インスタンスが別の方法で取得されます。この変更は、Workshop のアップグレード ツールではアップグレードされません。ポータルのコードでこのメソッドを呼び出す場合は、ClassCastException を回避するために手動でコードをアップグレードする必要があります。コードでは代わりに ScopedServletUtils.unwrapRequest メソッドを使用して、ScopedRequest インスタンスを取得する必要があります。
たとえば、ページ フロー コードに次のコードがあった場合、
ScopedRequest s = (ScopedRequest)getRequest();
次のように変更します。
ScopedRequest s = ScopedServletUtils.unwrapRequest(getRequest());
[インポート] ウィザードを使用してバージョン 8.1 のアプリケーションをアップグレードするには