upgradeStarter コマンド

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 でサポートされているプロパティを示します。

コマンドラインでアップグレードした後に手動で行う必要がある手順

アップグレード コマンドライン ツールを使用した後に、以下のアップグレード作業を手動で実行する必要があります。これらの変更を手動で行いたくない場合は、[インポート] ウィザードを使用してアプリケーションをアップグレードすることもできます。

コマンドラインによるアップグレードの後でプロジェクトのアップグレードがトリガされる場合

コマンドライン ツールによるアップグレードの後で、Web プロジェクトで AppXRay を有効にする必要がある場合があります。このような場合、ユーザがワークスペースを初めて開いたとき、プロジェクトをアップグレードすることを求めるメッセージが表示されます。アップグレード ダイアログで [はい] を選択することで、プロジェクトで AppXRay が有効になります。

サポートされていない ControlException.getNestedException メソッドの呼び出しの置き換え

バージョン 8.1 の com.bea.control.ControlException には、対応するバージョン 10.x の org.apache.beehive.controls.api.ControlException には含まれていない getNestedException メソッドがありました。アップグレード後は、このメソッドを呼び出すコードではコンパイル エラーが発生します。このメソッドは単に、Throwable クラス ( ControlException クラスはこのクラスを拡張したもの) の getCause メソッドに委託していたため、getNestedException 呼び出しを getCause に変更するだけで、この変更に対応できます。

PageFlowStack クラスでの変更を反映するためのコードの更新

バージョン 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 メソッドは非推奨になっています。

一部のパブリックだった PageFlowController メソッドおよび FlowController メソッドが保護されている

アプリケーションのセキュリティを強化するために、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 で記述されたコードはアップグレードされません。

ScopedRequest インスタンスを取得する getRequest メソッド呼び出しのアップグレード

バージョン 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()); 

関連トピック

upgrade Ant タスク

[インポート] ウィザードを使用してバージョン 8.1 のアプリケーションをアップグレードするには

概要 : WebLogic Workshop 8.1 からのアップグレード

WebLogic Workshop 8.1 からバージョン 10.x へのアップグレード時における変更点