ヘッダーをスキップ
Oracle Application Server Standard Edition Oneリリース・ノート
10g リリース2(10.1.2)for Microsoft Windows(32 Bit)
B19168-03
  目次
目次

戻る
戻る
次へ
次へ
 

7 Oracle TopLink

この章では、Oracle TopLink 10g(9.0.4.5)に関する問題とその対処方法について説明します。 この章の内容は次のとおりです。

7.1 既知の問題

TopLink 10g(9.0.4.5)に存在する問題は、次のとおりです。

7.1.1 oracle.sql.TIMESTAMP

Oracle JDBC 9.0.1ドライバを使用した場合、resultSet.getTimestamp(int)からはjava.sql.Timestampではなくoracle.sql.TIMESTAMPが返されます。そのため、DatabaseRowにはoracle.sql.TIMESTAMPが格納されます。読取りが正常に行われるように、TopLinkは後でこれをjava.sql.Timestampに変換します。ただし、DatabaseRowはValueHolderの属性で、oracle.sql.TIMESTAMPはシリアライズ不可能な値であるため、TIMESTAMPフィールドにマップされたオブジェクトを表すValueHolderInterface型の属性のシリアライズは失敗します。

7.1.2 XMLパーサーの依存性

この項では、次のXMLパーサーの依存性の問題について説明します。

7.1.2.1 OC4J XMLパーサーの依存性

デフォルトでは、OC4JおよびTopLinkは両方ともOracleAS XML Parser for Java v2を使用します。OC4JおよびTopLinkを同時に使用する場合は、両方が同じバージョンのOracleAS XML Parser for Java v2を使用することを確認してください。バージョンが異なると、XMLの解析に失敗し、アプリケーション・エラーが発生する場合があります。

TopLinkインストールに使用されているOracleAS XML Parser for Java v2のバージョンを確認する手順は、次のとおりです。

  1. <ORACLE_HOME>\lib\\mlparserv2.jarファイル(<ORACLE_HOME>は、TopLinkがインストールされているディレクトリ)に関連付けられているコメントを表示します。

    コメントが表示されるようにWinZipを構成します。

    1. 「Options」「Configuration」を選択します。

    2. 「Miscellaneous」タブを選択します。

    3. 「Show comments when opening Zip files」チェックボックスが選択されていることを確認します。

    4. WinZipを使用して、<ORACLE_HOME> \lib\xmlparserv2.jarファイルを開きます。

    コメントには、このバージョンのOracleAS XML Parser for Java v2が属するビルドが表示されます。たとえば、Label: XDK_MAIN_SOLARIS_031006のように表示されます。

  2. このビルドが、OC4Jで使用されているOracleAS XML Parser for Java v2に関連付けられているビルドと同じであることを確認します。

7.1.2.2 TopLink 10g(9.0.4.5)とBEA WebLogic Application Server 8.1の使用

TopLinkをOracle Application Server 10g リリース2(10.1.2)のインストールと組み合せてインストールすると、10g リリース2(10.1.2)でOracleAS XML Parser for Java v2に対して行った変更によって、TopLink 10g(9.0.4.5)をBEA WebLogic Application Server 8.1(BEA CR136750)とともに使用する場合に問題が発生します。

javax.xml.namespace.QNameクラスのコンストラクタに関連付けられたNoSuchMethodErrorが発生します。この問題を解決するには、Sun社のWebサイトからSun Web Services Development Kitをダウンロードし、CLASSPATHのtoplink.jarエントリおよびweblogic.jarエントリの前にjax-qname.jarファイルを指定します。

Sun Web Services Development Kitをダウンロードするには、http://www.sun.comにアクセスしてください。

7.1.2.3 Crimson XMLパーサーの問題

Crimson(http://xml.apache.org/crimson/)は、Java 2 Platform, Standard Edition(J2SE)および一部のJAXPリファレンス実装で提供されるXMLパーサーです。

JAXP APIを持つCrimsonを使用して、システム識別子が完全修飾されたURLでないXMLファイルを解析すると、XML解析に失敗して、URLが無効であることを示す例外が発生します。

他のXMLパーサーは、システム識別子URLが具体的に参照されるまで、その妥当性チェックを遅延します。

この問題が発生する場合は、次のいずれかの処置を実行してください。

  • 完全修飾されたシステム識別子URLがXMLファイルで使用されていることを確認します。

  • 別のXMLパーサー(OracleAS XML Parser for Java v2など)を使用します。

7.1.3 UTF-8エンコードの例外

10g(9.0.4.5)では、TopLinkがサポートするのはUTF-8エンコードのみです。UTF-8以外にフォーマットされたXMLファイルを読み取ろうとすると、TopLink例外であるError Code 9006とともにSAXParseExceptionが発生します。

7.1.4 データベースとの通信が失われた後、準備された文を実行できない

文キャッシュを使用するようにLoginまたはQueryを構成し、データベースとの通信が失われた後リストアすると、以前にキャッシュされた文の実行に失敗する場合があります。

たとえば、例外ハンドラを定義してSessionに登録するには、Session.setExceptionHandler()を使用するのが一般的な方法です。例外ハンドラを起動して、失われた通信を処理し、そのハンドラがデータベースとの接続を再確立すると、以前にキャッシュされた文の再実行に失敗します。

7.1.5 Oracle TopLinkとIBM WebSphere 5.1の使用

TopLinkをWebSphere Application Server 5.1とともに使用するときは、PARENT_LASTに設定されたクラス・ローダー・モードでアプリケーションを構成およびデプロイすることをお薦めします。

 PARENT_LASTに設定されたクラス・ローダー・モードでアプリケーションを構成するには、次のいずれかを選択します。

  • <JAVA_HOME>\lib\jaxp.propertiesファイルを削除(または名前を変更)します。<JAVA_HOME>は、通常<WebShpere_Install>\java\jreです。

  • WebSphereインストールに含まれるxercesライブラリを、同じ共有ライブラリのxmlparserv2.jarの後に配置します。このファイルは、<WebShpere_Install>\java\jre\lib\xml.jarにあります。

7.1.6 TopLink Workbench

TopLink Workbench 10g(9.0.4.5)に存在する問題は、次のとおりです。

7.1.6.1 継承した属性のマッピング

スーパークラスにディスクリプタが定義されていないディスクリプタに、継承した属性をマップすることはできません。ルート・ディスクリプタは選択できますが、その属性をマップすることはできません。

プロジェクトをマップするには、スーパークラスをプロジェクトにインポートします。TopLink Workbenchにより、スーパークラスのディスクリプタが作成されます。その後、このディスクリプタを非アクティブにするか、プロジェクトから削除します。

7.1.6.2 コードのクラスの変更

ディスクリプタをコード内(TopLink Workbench外)でインタフェースまたは抽象クラスに変更した場合、TopLink Workbenchでクラスをリフレッシュすると、ExternalClassNotFoundExceptionが発生することがあります。

たとえば、プロジェクトにEmployeeEmployeeInterfaceという2つのディスクリプタが存在するとします。これらはどちらもクラスで、EmployeeInterfaceEmployeeの拡張クラスです。TopLink Workbench外でEmployeeInterfaceコードを編集してインタフェースに変更し、Employeeでこのインタフェースを実装します。TopLink Workbenchでクラスをリフレッシュすると、エラーが発生します。

この状況を回避するには、最初にEmployeeInterfaceをリフレッシュし、次にEmployeeをリフレッシュします。

7.1.6.3 依存クラスとディスクリプタのリフレッシュ

ディスクリプタをリフレッシュしても、TopLink Workbenchでは、TopLink Workbenchプロジェクトに含まれていない依存クラスはリフレッシュされません。

たとえば、ロード後クラス、およびTopLink Workbenchプロジェクトに含まれていないメソッドを使用してディスクリプタを定義し、TopLink Workbench外でafter loadクラスを変更した場合、ディスクリプタをリフレッシュしてもこの変更は取得されません。

この問題を回避するには、すべての依存クラスをTopLink Workbenchプロジェクトに追加します。これらのクラスはマップしないため、各依存クラスを右クリックし、「ディスクリプタのアクティブ化」オプションの選択を解除します。これにより、プロジェクトをリフレッシュすると、ディスクリプタと依存クラスの両方が、TopLink Workbenchによってリフレッシュされます。

7.1.6.4 JDBCパスの空白

JDBCドライバへのパスに空白が含まれる場合は、setenv.cmdファイル内のこれらのパスを二重引用符で囲む必要があります。 次に例を示します。

set JDBC_CLASSPATH="C:\Program Files\some directory\driver.jar\"

7.1.6.5 Oracle TopLinkのセッション・エディタのプリファレンス

他の一般プリファレンス(テキスト・エディタの場所など)を変更する前に、「一般プリファレンス」ダイアログでデフォルトの「ルック&フィール」を選択し、「OK」をクリックする必要があります。その後、「一般プリファレンス」ダイアログ・ボックスを再度オープンし、追加変更を行います。

7.1.6.6 ディレクトリ名に空白が含まれているCLASSPATH

Windowsプラットフォームの場合、ディレクトリ名に空白があるディレクトリがCLASSPATHに含まれていると、TopLink Workbenchは起動に失敗し、「メイン・クラスが見つかりません。」というエラーが発生することがあります。

この場合は、JDBC、OracleホームおよびJREのCLASSPATHのディレクトリ名から空白を削除してください。

7.1.6.7 JAWSの使用

JAWS 4.5.1の制限によって、TopLink Workbenchの入力フィールド・ラベルが正しく表示されません。アクセシビリティを最大にするために、JAWS 3.7およびAccess Bridgeバージョン103の使用をお薦めします。

7.1.6.8 アイコン・サイズ

TopLink Workbenchのツールバーのアイコン・サイズを変更すると、次回アプリケーションが起動できなくなる場合があります。workbench.xmlファイルを編集して、small-icon="false""true"に変更する必要があります。

7.1.6.9 ソース・コードの生成

ディスクリプタのソース・コードを生成し、TopLink Workbenchが新しいソース・コードを書き込む前にプロセスを取り消すと、ソース・コードが正常に更新されたことを示すダイアログ・ボックスが表示されます。ただし、プロセスを取り消した場合、TopLink Workbenchは既存のコードを上書きしていません。

10g(9.0.4.5)では、TopLink Workbenchは内部クラスにマップされたディスクリプタ用のプロジェクトのJavaソースの生成をサポートしません。

BLOBを含む表からソース・コードを生成すると、生成されたJavaコードには、型定義とメソッド・パラメータのエラーが含まれる場合があります。このエラーを排除するには、ソース・コードを編集する必要があります。

7.1.6.10 配列型属性に対する不適切なsetメソッド

TopLink Workbenchでは、配列型属性に対して適切なsetメソッドは生成されません。

7.1.7 TopLinkのWeb Clientの使用

TopLinkのWeb Clientに存在する問題は、次のとおりです。

7.1.7.1 Oracle Containers for J2EE 10g(9.0.4)

OC4J 10g(9.0.4)を使用してTopLinkのWeb Clientを構成する場合は、Web Clientが使用するuix2.jarが適切に参照されることを確認してください。次の行をOC4J application.xmlファイルに追加します。この場合の<ORACLE_HOME>はOraHome1です。

  • <library path="\OraHome1\jlib\uix2.jar" \>

7.1.8 TopLink Examples

TopLink Examplesに存在する問題は、次のとおりです。

7.1.8.1 IBM WebSphere BMPの例

bmp.earibm-application*.xmiのエントリが重複していると、IBM WebSphere 5.0.2にBMPの例をデプロイするときに、Save Failure Exceptionが発生します。この問題を解決するには、build.xmlファイルのbuild.ear内部にある次の要素をコメント・アウトしてください。

<metainf dir="${config.dir}">
    <include name="ibm-application*.xmi"/>
</metainf>

7.1.8.2 RedHatでの例の構成

RedHat Enterprise Server 3.0でconfigureExamples.shを実行すると、「multipleCopyにクラスがありません。」というエラーが発生する場合があります。この問題を解決するには、 toplink_customtasks.jarへの絶対パスを含むようbuild.xmlファイルを変更します。 次に例を示します。

<taskdef name="multipleCopy"
    classname="org.apache.tools.ant.taskdefs.MultipleCopy"
    classpath="<COMPLETE_ABSOLUTE_PATH>/customtasks.jar"/>

<COMPLETE_ABSOLUTE_PATH> は、/home/iasuser/mwtesting/ant/lib/toplink_customtasks.jarです。

7.2 ドキュメントの誤記

この項では、ドキュメントの誤記について説明します。 この項の内容は次のとおりです。

7.2.1 パラメータ化されたSQL

『Oracle Application Server TopLinkアプリケーション開発者ガイド』には、バッチ書込みとパラメータ化されたSQLを同時に使用できないと説明されていますが、これは誤記です。

7.2.2 順序の例

『Oracle Application Server TopLinkアプリケーション開発者ガイド』に示されている順序のコード例(例A-2および例A-3)に誤記があります。ストアド・プロシージャで順序を使用する際の正しいコード例は、例 3-22および例3-23に示されています。

7.2.3 TopLinkのWeb Clientの構成

『Oracle Application Server TopLinkアプリケーション開発者ガイド』のWeb Clientの構成に関する項に記述されているweb.xmlファイルへの正しいパスは、次のとおりです。

<ORACLE_HOME>\toplink\config\toplinkwc

Web ClientをOC4Jとともに使用するときは、ドキュメントに示されている次のパスを、ローカルの<J2EE_HOME>ディレクトリに置き換えます。

<ORACLE_HOME>\toplink\examples\oc4j\904\server\

BEA WebLogicをデプロイするには、次に示すとおり、<ORACLE_HOME>\toplink\config\toplinkwc\weblogic.xmlファイルにこのデータ・ソースへの参照も定義する必要があります。

<reference-descriptor>
  <resource-description>
    <res-ref-name>jdbc/DataSourceName</res-ref-name>
    <jndi-name>jdbc/DataSourceName</jndi-name>
  </resource-description>
</reference-descriptor>

アプリケーション・サーバーの構成に関する項に記述されている、toplinkwc.earファイルをアプリケーション・サーバー固有のディレクトリにコピーする手順の最初の手順は必要ありません。<ORACLE_HOME>\toplink\binディレクトリ内のassembleWebClientスクリプトを実行すると、build.propertiesファイルに指定されているとおり、toplinkwc.earファイルがアセンブルおよびデプロイされます。

7.2.4 TopLink Workbenchのチュートリアル

『Oracle Application Server TopLink Mapping Workbenchユーザーズ・ガイド』のチュートリアルを実行する際は、次の変更に注意してください。

  • 順序を使用するには、TopLink Workbenchから順序表を作成するだけでなく、データベースにも順序表を作成する必要があります。

  • 順序表を作成するときは、SEQ_NAMEおよびSEQ_COUNTのサイズには38を使用します。

  • BaseProjectディスクリプタの継承を実装するときは、「問合せでのサブクラスの読取り」オプションが選択されていることを確認します。

  • 図B-49では、BaseProjectクラスのインジケータ・タイプが欠落しています。BaseProjectは抽象クラスであり、インジケータ値は不要ですが、「継承」タブに表示されます。

  • 例B-4の次の行に誤記があります。

    president.addPhoneNumber(homeNumber);

    正しくは、次のとおりです。

    president.addPhoneNumber(homePhone);

7.2.5 Oracleデータベースの指定

このリリースでは、Oracle9i およびOracle8i データベース固有の新しいプラットフォーム・ファイルが導入されました。以前のリリースには、汎用のOracleデータベース・プラットフォーム・ファイルが含まれていました。汎用のOracleデータベース・プラットフォームを使用するTopLink Workbench 9.0.3プロジェクトをインポートするときは、次の手順を実行します。

  1. 「データベース」プロパティ・シートで「Oracle8i」または「Oracle9i」のいずれかをデータベース・プラットフォームとして選択します。プロジェクトでOracle8i より前のデータベースを使用する場合は、「Oracle」を選択します。詳細は、『Oracle Application Server TopLink Mapping Workbenchユーザーズ・ガイド』のデータベースの使用に関する項を参照してください。


    注意:

    TopLink WorkbenchをOracle Database 10gとともに使用する場合は、「Oracle9i」を選択してください。

  2. プロジェクトを保存して閉じ、再度オープンします。