| Oracle Application Server Standard Edition Oneリリース・ノート 10g リリース2(10.1.2)for Microsoft Windows(32 Bit) B19168-03 |
|
![]() 戻る |
![]() 次へ |
この章では、Oracle TopLink 10g(9.0.4.5)に関する問題とその対処方法について説明します。 この章の内容は次のとおりです。
TopLink 10g(9.0.4.5)に存在する問題は、次のとおりです。
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型の属性のシリアライズは失敗します。
この項では、次の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のバージョンを確認する手順は、次のとおりです。
<ORACLE_HOME>\lib\\mlparserv2.jarファイル(<ORACLE_HOME>は、TopLinkがインストールされているディレクトリ)に関連付けられているコメントを表示します。
コメントが表示されるようにWinZipを構成します。
「Options」→「Configuration」を選択します。
「Miscellaneous」タブを選択します。
「Show comments when opening Zip files」チェックボックスが選択されていることを確認します。
WinZipを使用して、<ORACLE_HOME> \lib\xmlparserv2.jarファイルを開きます。
コメントには、このバージョンのOracleAS XML Parser for Java v2が属するビルドが表示されます。たとえば、Label: XDK_MAIN_SOLARIS_031006のように表示されます。
このビルドが、OC4Jで使用されているOracleAS XML Parser for Java v2に関連付けられているビルドと同じであることを確認します。
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にアクセスしてください。
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など)を使用します。
10g(9.0.4.5)では、TopLinkがサポートするのはUTF-8エンコードのみです。UTF-8以外にフォーマットされたXMLファイルを読み取ろうとすると、TopLink例外であるError Code 9006とともにSAXParseExceptionが発生します。
文キャッシュを使用するようにLoginまたはQueryを構成し、データベースとの通信が失われた後リストアすると、以前にキャッシュされた文の実行に失敗する場合があります。
たとえば、例外ハンドラを定義してSessionに登録するには、Session.setExceptionHandler()を使用するのが一般的な方法です。例外ハンドラを起動して、失われた通信を処理し、そのハンドラがデータベースとの接続を再確立すると、以前にキャッシュされた文の再実行に失敗します。
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にあります。
TopLink Workbench 10g(9.0.4.5)に存在する問題は、次のとおりです。
スーパークラスにディスクリプタが定義されていないディスクリプタに、継承した属性をマップすることはできません。ルート・ディスクリプタは選択できますが、その属性をマップすることはできません。
プロジェクトをマップするには、スーパークラスをプロジェクトにインポートします。TopLink Workbenchにより、スーパークラスのディスクリプタが作成されます。その後、このディスクリプタを非アクティブにするか、プロジェクトから削除します。
ディスクリプタをコード内(TopLink Workbench外)でインタフェースまたは抽象クラスに変更した場合、TopLink Workbenchでクラスをリフレッシュすると、ExternalClassNotFoundExceptionが発生することがあります。
たとえば、プロジェクトにEmployeeとEmployeeInterfaceという2つのディスクリプタが存在するとします。これらはどちらもクラスで、EmployeeInterfaceはEmployeeの拡張クラスです。TopLink Workbench外でEmployeeInterfaceコードを編集してインタフェースに変更し、Employeeでこのインタフェースを実装します。TopLink Workbenchでクラスをリフレッシュすると、エラーが発生します。
この状況を回避するには、最初にEmployeeInterfaceをリフレッシュし、次にEmployeeをリフレッシュします。
ディスクリプタをリフレッシュしても、TopLink Workbenchでは、TopLink Workbenchプロジェクトに含まれていない依存クラスはリフレッシュされません。
たとえば、ロード後クラス、およびTopLink Workbenchプロジェクトに含まれていないメソッドを使用してディスクリプタを定義し、TopLink Workbench外でafter loadクラスを変更した場合、ディスクリプタをリフレッシュしてもこの変更は取得されません。
この問題を回避するには、すべての依存クラスをTopLink Workbenchプロジェクトに追加します。これらのクラスはマップしないため、各依存クラスを右クリックし、「ディスクリプタのアクティブ化」オプションの選択を解除します。これにより、プロジェクトをリフレッシュすると、ディスクリプタと依存クラスの両方が、TopLink Workbenchによってリフレッシュされます。
JDBCドライバへのパスに空白が含まれる場合は、setenv.cmdファイル内のこれらのパスを二重引用符で囲む必要があります。 次に例を示します。
set JDBC_CLASSPATH="C:\Program Files\some directory\driver.jar\"
他の一般プリファレンス(テキスト・エディタの場所など)を変更する前に、「一般プリファレンス」ダイアログでデフォルトの「ルック&フィール」を選択し、「OK」をクリックする必要があります。その後、「一般プリファレンス」ダイアログ・ボックスを再度オープンし、追加変更を行います。
Windowsプラットフォームの場合、ディレクトリ名に空白があるディレクトリがCLASSPATHに含まれていると、TopLink Workbenchは起動に失敗し、「メイン・クラスが見つかりません。」というエラーが発生することがあります。
この場合は、JDBC、OracleホームおよびJREのCLASSPATHのディレクトリ名から空白を削除してください。
JAWS 4.5.1の制限によって、TopLink Workbenchの入力フィールド・ラベルが正しく表示されません。アクセシビリティを最大にするために、JAWS 3.7およびAccess Bridgeバージョン103の使用をお薦めします。
TopLink Workbenchのツールバーのアイコン・サイズを変更すると、次回アプリケーションが起動できなくなる場合があります。workbench.xmlファイルを編集して、small-icon="false"を"true"に変更する必要があります。
ディスクリプタのソース・コードを生成し、TopLink Workbenchが新しいソース・コードを書き込む前にプロセスを取り消すと、ソース・コードが正常に更新されたことを示すダイアログ・ボックスが表示されます。ただし、プロセスを取り消した場合、TopLink Workbenchは既存のコードを上書きしていません。
10g(9.0.4.5)では、TopLink Workbenchは内部クラスにマップされたディスクリプタ用のプロジェクトのJavaソースの生成をサポートしません。
BLOBを含む表からソース・コードを生成すると、生成されたJavaコードには、型定義とメソッド・パラメータのエラーが含まれる場合があります。このエラーを排除するには、ソース・コードを編集する必要があります。
TopLink Examplesに存在する問題は、次のとおりです。
bmp.earでibm-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>
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です。
この項では、ドキュメントの誤記について説明します。 この項の内容は次のとおりです。
『Oracle Application Server TopLinkアプリケーション開発者ガイド』には、バッチ書込みとパラメータ化されたSQLを同時に使用できないと説明されていますが、これは誤記です。
『Oracle Application Server TopLinkアプリケーション開発者ガイド』に示されている順序のコード例(例A-2および例A-3)に誤記があります。ストアド・プロシージャで順序を使用する際の正しいコード例は、例 3-22および例3-23に示されています。
『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ファイルがアセンブルおよびデプロイされます。
『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);
このリリースでは、Oracle9i およびOracle8i データベース固有の新しいプラットフォーム・ファイルが導入されました。以前のリリースには、汎用のOracleデータベース・プラットフォーム・ファイルが含まれていました。汎用のOracleデータベース・プラットフォームを使用するTopLink Workbench 9.0.3プロジェクトをインポートするときは、次の手順を実行します。
「データベース」プロパティ・シートで「Oracle8i」または「Oracle9i」のいずれかをデータベース・プラットフォームとして選択します。プロジェクトでOracle8i より前のデータベースを使用する場合は、「Oracle」を選択します。詳細は、『Oracle Application Server TopLink Mapping Workbenchユーザーズ・ガイド』のデータベースの使用に関する項を参照してください。
|
注意: TopLink WorkbenchをOracle Database 10gとともに使用する場合は、「Oracle9i」を選択してください。 |
プロジェクトを保存して閉じ、再度オープンします。