以下では、バージョン 8.1 からのアップグレード後に発生するおそれのある問題について説明しますが、これらの問題は特定のコンポーネント タイプや技術に関連付けられたものではありません。特定の技術に関連付けられたアップグレード関連の問題については、「関連トピック」に表示されているトピックを参照してください。
バージョン 8.1 アプリケーションのアップグレードは、.workshop ディレクトリがアップグレード時にアプリケーション内に存在しない場合、失敗する場合があります。特に、weblogic-application.xml ファイルのアップグレードは、このファイルが .workshop ディレクトリ内のビルド アーティファクトを参照しているが、そのディレクトリが存在しない場合に、失敗する場合があります。
アップグレードを確実に成功させるため、アップグレードの前にバージョン 8.1 のアプリケーションをビルドしておいてください。
通常は、プリコンパイルされたライブラリをバージョン 10.x の環境で使用するために再コンパイルする必要がある場合には、警告メッセージが発生します。ただし、ライブラリを再コンパイルする必要がある場合でもメッセージが発生しないことがあります。プロジェクトでこの原因以外に説明できないコンパイル エラーが発生した場合には、これらのライブラリを再コンパイルすることを検討してください。
バージョン 8.1 とは異なり、バージョン 10.x では、JAR がアプリケーション ライブラリとして使用されている場合、JAR ファイルのマニフェストでは行の長さが制限されています。制限を超えている行のある JAR がアップグレードされたアプリケーションに含まれていると、ビルド時にエラーが発生します。この変更に対応するには、行のサイズを小さくするか、または JAR からマニフェストを削除します。
内部 API の使用はサポートされておらず、バージョン 10.x のクラスパスには weblogic.jar は含まれません (含むことができません)。weblogic.jar 内にあったパブリック API は wls-api.jar に移動されました。クラスパスに weblogic.jar がないことによるコードの破綻を回避するには、パブリック API を使用するようにコードを書き換えます。
サードパーティの API を使用するコードも、バージョン 10.x へのアップグレードではサポートされていません。
Java 5 の新しい言語機能と (NetUI タグ ライブラリによって使用される) JSP 2.0 式言語により、場合によってはアップグレードされたコードの一部に変更が必要になることがあります。
たとえば、バージョン 8.1 において予約語ではなかった語が、新機能のために新たに予約語として扱われるようになりました。Workshop のアップグレード ツールではこれらの語の使用はアップグレードされません。そのため、それらの語を使用するコードは新しい言語機能に対応するように書き換えられるまでコンパイルされません。
特に Java 5 には enum
キーワードが追加されています。詳細については、Sun の Web サイトにある「Enums」を参照してください。
JSP 2.0 の予約語は、「予約語は識別子として使用できない」に記載されています。
また、Java API に多くの変更が加えられていることで、アップグレードされたコードに問題を生じる場合もあります。Java 言語に総称型が導入されたため、Object パラメータを取るメソッド シグネチャは、Java 1.4 においては従来よりも強く型付けされるようになりました。そのため、バージョン 8.1 では実行時にならないと検出できなかった多くのエラーを、Workshop バージョン 10.x ではコンパイル時に検出できます。たとえば、以下のようなコードがあるとします。
String s; Thing t; s.compareTo(t);
バージョン 8.1 では、このコードに対してコンパイル エラーは発生せず、実行時に ClassCastException が発生します。バージョン 10.x では、この compareTo(t) がコンパイル エラーとなります。なぜなら、 8.1 における String.compareTo() は単に Object パラメータを取りましたが、 10.x では実際に String パラメータが要求されるようになったからです。
原則としては、コードのデバッグが済んでいればこの種のエラーは含まれていないと考えられますが、アップグレード後のコンパイルで実際にエラーが発生した場合、プロジェクトのビルドを正常に完了するにはコードを修正する必要があります。
アップグレード プロセス中には Workshop アップグレード ツールによって、キー ライブラリの移動をサポートするためにパッケージのインポート文が更新されます。ただし、これによってバージョン 8.1 のパッケージのクラス (クラスはまだそのパッケージにある) を使用するコードが破綻するおそれがあります。たとえば、アップグレード ツールによって次の変更が行われるとします。
import com.bea.wlw.netui.util.*;
上記は、次のように変更されます。
import org.apache.beehive.netui.util.*
この場合、com.bea.wlw.netui.util.TemplateHelper
はまだ旧バージョンのパッケージにあるのでインポートされないままになります。Workshop のクイック フィックス機能を使用して必要なパッケージをインポートすることによって、簡単にコードを修正できます。さらに徹底した修正を行うには、アップグレードを行う前にワイルドカードを削除し、バージョン 8.1 のコードにクラスを明示的にインポートします。
バージョン 8.1 には PointBase データベースに付属する API が含まれています。これらの API はバージョン 10.x ではサポートされていません。
バージョン 8.1 の IDE では標準に準拠していないスキーマを使用できましたが、バージョン 10.x の IDE では使用できなくなっています。そのため、アップグレード時に無効なスキーマによってエラーが生成されます。ただし、エラーは IDE に表示されますが、実行時の動作には影響しないはずです。
無効な状態のスキーマを引き続き使用する場合でも IDE にエラーが表示されないようにするには、スキーマ検証を無効にします。検証を無効にすると、検証が必要であってもすべてのスキーマに対する検証が無効になります。スキーマ検証を無効にするには、次の手順に従います。
「IDE 内で使用するためのサーバ定義の作成」で説明されているとおりに新しいサーバを作成すると、WebLogic Workshop バージョン 8.1 のドメインをアップグレードできます。
古いバージョンのドメインが検出されました。アップグレード ウィザードを使用してドメインをアップグレードするには、ここをクリックしてください。
バージョン 8.1 からのアップグレード中に、バージョン 8.1 の PROJECT_ROOT/WEB-INF/classes ディレクトリ (プロジェクト内に存在しないアーティファクトからの CLASS ファイル用) にある CLASS ファイルは、バージョン 10.x の PROJECT_ROOT/WebContent/WEB_INF/classes ディレクトリ (プロジェクト アーティファクトのビルド出力用のデフォルトの場所) にコピーされます。 8.1 プロジェクトで、デフォルトのビルド出力の場所が (Ant スクリプトなどを使用することによって) 使用されずに、プロジェクト アーティファクトの CLASS ファイルが PROJECT_ROOT/WEB-INF/classes に配置される場合、バージョン 10.x の出力ディレクトリに CLASS ファイルが重複するエラーが発生する場合があります。
この状況を修正するには、アップグレード後に PROJECT_ROOT/WebContent/WEB_INF/classes ディレクトリの中身を削除し、プロジェクトを再ビルドします。