Oracle® JDeveloper 10g

リリース・ノート

リリース10.1.3

部品番号: B28635-01

2006年5月

目次

概要

Oracle JDeveloper 10gは、標準ベースのSOAアプリケーション向けの完全な統合開発環境です。 Oracle JDeveloper 10gリリース3(10.1.3)には、多数の新機能が追加されています。 たとえば、新しいルック・アンド・フィール、豊富なリファクタ・オプションにより大幅に改善されたコーディング環境、最新のJava標準(J2SE 5.0、J2EE 1.4、EJB 3.0)のサポートおよびビジュアルJSF開発などです。 視覚的で宣言的なアプローチと改善されたOracle Application Development Framework(Oracle ADF)の連携により、アプリケーション開発が簡素化され、通常のコーディング・タスクが削減されます。 これにより、どのようなテクノロジ・スタックや配布先プラットフォームを選択した場合にも、開発者の生産性が飛躍的に向上します。

ダウンロード可能な追加機能は、「ヘルプ」「更新の確認」を使用してオンラインで確認してください。

このドキュメントの発行時点で未入手の追加情報は、『Oracle JDeveloper 10g Release Notes Addendum』を参照してください。 JDeveloperの詳細と技術資料は、次のサイトにアクセスしてください。

IDEの一般的な問題

Linuxにおけるデバッガの接続試行の設定(Bug#4432394)

Linux上でリリース9.0.3xまたは9.0.4xからリリース10.1.3に移行する場合、デバッガの接続試行の設定を20以上に増やす必要があります。 これが特に必要になるのは、XSLTデバッグが実行されるXMLプロジェクトを移行する場合です。 リリース9.0.3または9.0.4ではXSLTデバッグ機能を使用できなかったため、リリース10.1.3に移行したプロジェクトは接続試行の設定値が小さすぎて、追加のXSLTデバッグ・フレームワークが原因でデバッガはローカル・プロセスに接続できません。

XMLファイルの位置の変更(Bug#4387850)

XML関連の各ウィザード(「XML文書」「XMLスキーマからXMLドキュメント」「XMLスキーマ」「XQuery」および「XSLスタイル・シート」)により生成されたXMLファイルは、以前のリリースではデフォルトで public_html ディレクトリに作成されていました。 このリリースではXMLファイルは、デフォルトでプロジェクトのルート・ディレクトリに作成されるように変更されています。 プロジェクトを移行すると、既存のXMLファイルは public_html ディレクトリに残りますが、新規のXMLファイルはデフォルトで新しい場所に作成されます。

コード・インサイトとSQLJの問題(Bug#4001857)

コード・インサイトには、ファイルがコンパイルされるまでに #sql で宣言されていた変数についてエラーが表示されます。 SQLJトランスレータがSQLJとクラス・ファイルの間にあるため、SQLJからJavaファイルが作成されるまで、プロジェクト内の変数は認識されません。 Javaファイルの作成後は、使用される変数が予期したとおりに認識されます。

CVSへのインポート後JDeveloperに自動的にチェックアウトしたプロジェクトの内容の表示にはリフレッシュが必要(Bug#4717242)

この問題が発生するのは、バージョニングされていないファイルを参照する新規プロジェクトを作成する場合です。 「CVSへのインポート」ウィザードで「モジュール・チェックアウトの実行」オプションを選択してプロジェクトをインポートする場合、JDeveloperのナビゲータに表示されるのはプロジェクトのヘッダーのみで、内容は表示されません。 回避策は、ナビゲータ・ツールバーの「リフレッシュ」ボタンをクリックすることです。 これにより、プロジェクトの内容(ファイル・ノード)がナビゲータに表示されます。

JDBCでサポートされていない一部のロケールに関するORA-604/ORA-12705エラー(Bug#4704421)

バリアント("fr_FR_EURO"など)やJDBCではサポート対象外である一部のロケール(後述)を含んだロケールで、JDBC 10.1.0.5を介してOracle Databaseに接続しようとすると、JDBCが SQLException をスローします。

サポート対象外のロケールは、次のとおりです。

Java 5.0の「Supported Locales」(http://java.sun.com/j2se/1.5.0/docs/guide/intl/locale.doc.html - 日本語版)にリストされていないロケール(ab_CDfr_FR_EUROit_IT_EUROなど)。 また、次のロケールはJava 5.0ではサポート対象ですが、JDBCではサポート対象外です。

回避策は、Javaのデフォルトのロケール設定を更新することです。 次に例を示します。

ランタイムJavaのロケールは、次のように入力して確認できます。

System.out.println(Locale.getDefault().toString()) 

Linuxでドラッグ・アンド・ドロップする際の例外(Bug#4517150)

LinuxユーザーがJDeveloperでドラッグ・アンド・ドロップすると、スローされた NullPointerException がコンソールに表示されることがあります。 これは、JDKの不具合によるものであり、例外が発生しても問題はありません。

JDKの不具合の詳細: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6182905

Windowsクリップボードの問題(Bug#4777464)

Windowsプラットフォーム上では、特定の場合にJDeveloperで「編集」「コピー」操作を実行した後でクリップボードが破損することがあります。 原因は、ディスク上のソース・ディレクトリと、そのソース・ディレクトリを指すJDeveloperのプロジェクト・プロパティが一致しないことです。 たとえば、ディスク上のディレクトリが Src でも、JDeveloperのプロジェクトが src を指していると、「コピー」「貼付け」操作に問題が発生することがあります。 回避策は、JDeveloperプロジェクトのプロパティを、問題のディレクトリを指すように変更することです(「ツール」「プロジェクト・プロパティ」「プロジェクト・コンテンツ」)。 これにより、ディスク上の対応するディレクトリのパス名と大/小文字区別が同じになります。 または、ディスク上のディレクトリ名を、プロジェクトのプロパティにあわせて変更する方法もあります。

インポート時の NullPointerException(Bug#4605526)

EARのインポート時にソース・パスを指定していれば、コンソールに NullPointerException が表示されてもインポートは成功します。

埋込みOC4JでADF Webアプリケーションを再実行中の IllegalStateException(Bug#4758240)

JDeveloper 10gでWebアプリケーションを実行またはデバッグする場合は、埋込みコンテナを停止せずにアプリケーションを再実行または再デバッグできます。 この場合、埋込みOC4Jはウォーム・リスタート・モードになります。 これにより、実行またはデバッグ・サイクルは迅速になりますが、アプリケーションの埋込みOC4Jサーバーに対して、このウォーム・リスタートを実行した後に、既知の問題が原因で次の例外が断続的に表示されることがあります。

05/11/23 15:59:11 java.lang.IllegalStateException: ClassLoader "SomeLibraryName:X.Y.Z"
    (from <shared-library> in .../jdev/system/oracle.j2ee.10.1.3.35.74/embedded-oc4j/config/server.xml):
    This loader has been closed and should not be in use.

この警告が発生するのは、JDeveloper 10gでOC4Jがウォーム・リスタート・モードになっている場合のみで、無視しても問題はありません。

デプロイの問題

JDeveloper 10.1.2から10.1.3へのプロジェクトの移行(Bug#4902942)

JDeveloper 10.1.2から10.1.3にプロジェクトを移行する場合、ワークスペースに定義されていたデータ・ソースは保持されます。 アプリケーションを実行する前にIDEのデータベース接続を再作成する必要はありません。 ただし、IDE接続を作成するように選択した場合は、競合を回避するために、まず同じ名前の移行済データ・ソースを削除する必要があります。 そのためには、「埋込みOC4Jサーバーの設定」「現在のワークスペース」「データソース」の順にナビゲートして子ノードを削除します。

Oracle Application Server 10.1.2へのアプリケーションのデプロイ(Bug#4733478)

Oracle Application Server 10.1.2へアプリケーションをデプロイするOracle DCMクライアントでは、パスに空白を含んだEARファイルを処理できず、デプロイ・コマンドが無効として解釈されます。

JDeveloperでは、この問題に2つの回避策があります(どちらの場合も、EARファイルが名前に空白を含んでいないディレクトリに書き込まれます)。 次のいずれかを実行できます。

  1. JDeveloperのインストール先ディレクトリの名前に空白が含まれていないことを確認します。
  2. プロジェクトのワークスペースを、名前に空白が含まれていないディレクトリに作成します。

埋込みOC4Jサーバーを使用したセッション・フェイルオーバーのテスト(Bug#4720841)

埋込みOC4Jサーバーを使用してセッション・フェイルオーバーをテストする場合は、orion-web.xml ディスクリプタを作成し、 persistence-pathapplication-deployments ディレクトリ以外の場所に変更します。 次に例を示します。

persistence-path="c:/shared/persistence/App1"

また、「ツール」「埋込みOC4Jサーバーの設定」「シャットダウン」を使用して、埋込みサーバーを正常にシャットダウンするようにJDeveloperを変更します。 これにより、永続データはサーバーのシャットダウン前に確実にディスクに書き出されます。

JDK 1.5とJDK 1.4を切替える環境下での埋込みOC4Jサーバーの実行(Bug#4737312および4747983)

埋込みOC4Jサーバーでアプリケーションを実行する場合は、ユーザーが使用中のJDKのバージョンを認識している必要があります。 これは、JDKのバージョン間で切り替えて、異なるJDKバージョンを使用して複数のJDeveloperプロジェクトで作業する場合に特に必要です。

デフォルトでは、埋込みサーバーはJDK 1.5で起動します。 すでに埋込みOC4JサーバーをJDK 1.5で実行した後に、JDK 1.4ベースのプロジェクト(「プロジェクト・プロパティ」「ライブラリ」「J2SEバージョン」で構成)を実行するには、『Oracle Containers for J2EE 構成および管理ガイド』の第4章(「OC4Jランタイム構成」)に記載されている手順にユーザーが従う必要があります。

サード・パーティのアプリケーション・サーバーまたはOracle Application Server 10.1.2へのURL/WSデータ・コントロール・アプリケーションのデプロイ(Bug#4931009)

  1. ADFランタイム・インストーラによってインストールされたJARファイルに加えて、次のJARファイルをターゲット・アプリケーション・サーバーにコピーします。 次のJARファイルは、JDeveloperのホーム・ディレクトリにあります。
  2. アプリケーション・サーバーをシャットダウンします。
  3. アプリケーション・サーバーのクラスパスにコピーしたJARファイルをすべて追加します。 クラスパスの変更方法の詳細は、アプリケーション・サーバーのドキュメントを参照してください。
  4. アプリケーション・サーバーを再起動します。 これでアプリケーションを正常にデプロイして実行できます。

サード・パーティのアプリケーション・サーバーへのデプロイ(Bug#4867128)

次のアプリケーションは、Oracle Application Server以外のアプリケーション・サーバーへのデプロイはサポートされません。

WebLogicへの大きいEARファイルのデプロイ(Bug#4542728)

大きいEARファイルをWebLogicにデプロイする際に SocketException が発生する場合は、JDeveloperではなくコンソールを使用してEARをデプロイします。

WebLogic Serverの起動時に表示されるエラー・メッセージ「Input Line Too Long」の解消(Bug#4505772)

ドメインまたはサーバーに組み込まれている製品によっては、製品のインストール・パスが長すぎる場合や、サーバーのクラスパスに多数のエントリが追加されている場合に、 startWebLogic.cmd スクリプトから Input Line Too Long というエラーが戻されることがあります。 これは、Windowsコマンド・プロセッサの制限事項です。 名前が18文字以内のインストール・ディレクトリは、プラットフォーム・ドメインのスクリプト(WebLogic Server、WebLogic PortalおよびWebLogic IntegrationのCLASSPATHエントリ)を変更しなくても動作します。

回避策

名前が18文字以内のディレクトリにインストールします。 JARを結合するか、1つのJARファイルに Manifest Class-Path エントリを使用して、余分なサーバークラスパスのエントリ数を減らします。

サードパーティ製JDBCドライバを使用するADFmアプリケーションの埋込みOC4Jでの実行

  1. JDBCドライバ・ライブラリを <jdev_home>/BC4J/lib にコピーします。
  2. <JdevUserHome>\<Application>\<Application>-oc4j-app.xml を編集します。 import-shared-libraries タグを変更し、ADFの汎用ドメイン・ライブラリ定義を挿入します。 Oracleドメイン・ライブラリは、外部データ・ソースの使用時には不要なため、削除します。 デフォルトでグローバルな application.xml から継承されます。
    <imported-shared-libraries>
      <import-shared-library name="adf.generic.domain"/>
      <remove-inherited name="adf.oracle.domain"/>
    </imported-shared-libraries>
  3. 埋込みOC4Jプロセスを再起動します。

サードパーティ製JDBCドライバを使用するADFmアプリケーションのスタンドアロンOC4Jへのデプロイ

  1. JDBCドライバ・ライブラリを <oc4j_home>/BC4J/lib にコピーします。
  2. JDeveloperを使用して、META-INF フォルダにある orion-application.xml を編集します。 import-shared-libraries タグを変更し、次のライブラリ定義を挿入します。 adf.oracle.domain のエントリが存在する場合は、そのエントリを削除します。
    <imported-shared-libraries>
      <import-shared-library name="adf.generic.domain"/>
    </imported-shared-libraries> 
  3. アプリケーションをデプロイします。

スタンドアロンOC4Jにデプロイ後に埋込みOC4Jページで再実行すると例外が発生(Bug#4944908)

スタンドアロンOC4JにJDeveloperからアプリケーションをデプロイした後で、埋込みOC4Jでアプリケーションを再実行すると、次のエラー・メッセージが表示されることがあります。

JBO-29000: Unexpected exception caught:

これには次の2つの回避策があります。

または

データ・ソースのパスワード処理とOracle Application Server 10.1.2

JDeveloper 10.1.3により生成された data-sources.xml によって定義されるデータソースを用いるアプリケーションを Oracle Application Server 10.1.2 にデプロイするとエラーが発生することがあります。 例えば、データベースに接続するEJBアプリケーションの場合は注意が必要です。 これは、Oracle Application Server 10.1.3ではOracle Application Server 10.1.2とは異なるパスワード・インダイレクションの解析法方を取っていることに起因します。 このようなアプリケーションをOracle Application Server 10.1.2にデプロイできるように、Oracle Application Server 10.1.2のパッチが提供される

Oracle Application Server 10.1.2にデプロイされているJDeveloper 10.1.3を使用して data-sources.xml を開発し、そこに定義されている接続を使用するアプリケーションをデプロイすると、デプロイ・エラーになることに注意してください。 その一例が、データベースへの接続にEJBを使用するアプリケーションです。 これは、Oracle Application Server 10.1.3とOracle Application Server 10.1.2では、パスワード・インダイレクションの解析方法に違いがあるためです。 この種のアプリケーションがデプロイできるように、Oracle Application Server 10.1.2のパッチが提供される予定です。

データベースの問題

Oracle Liteへの接続を作成する際の問題(Bug#4880755)

「サード・パーティJDBCドライバ」または「Oracle Lite」接続タイプを使用してOracle Liteへの接続を作成するには、テキスト・エディタで <jdev_home>\jdev\bin\jdev.conf を開き、Oracle10g Lite Settingsセクションを非コメント化し、Oracle Liteインストールを指すようにディレクトリを変更する必要があります。 このように変更しないと、接続に失敗します。

JDeveloper外部でデータベースを更新した後に接続のリフレッシュが必要(Bug#4726652および4468968)

SQL*Plusを使用するなど、JDeveloper外部でデータベースを変更した場合、JDeveloperではデータベース・オブジェクトのキャッシュがリフレッシュされません。 接続ナビゲータで接続名のノードを選択し、「リフレッシュ」ボタンをクリックして、接続を手動でリフレッシュする必要があります。

汎用JDBCデータベースのサポート(Bug#4773865)

明示的なサポート対象ではない汎用JDBCデータベースへの接続を作成すると、接続ナビゲータで参照して、表をJDeveloperにインポートし、オフライン・データベース機能を使用できます。 ただし、列を参照すると、等価のJDBC型のかわりにネイティブのデータ型が表示されます。 長さ、リビジョンおよびスケールなどのプロパティが欠落した不完全なデータ型の場合もあります。

データベースへの生成または調整(Bug#4768254および4729493)

JDeveloperチームでは、正しいSQLが生成されるように、「オフライン・データベース・オブジェクトからSQLを生成」ウィザードを使用してデータベースに生成または調整することをお薦めします。

データベースに直接生成できない場合は、変更内容の適用後にデータベース・スキーマをオフラインで再度インポートしてから、他のオフライン変更を続行する必要があります。

InformixドライバとInformix表の使用時に列情報が取得されない(Bug#4424588)

バージョン3.4.68より前のDataDirectドライバを使用して INTERVAL型の列を含んだ表をインポートするか、接続ナビゲータで表示すると、データ型は空となります。 3.4.68または3.5.17以上のバージョンを使用している場合、表はインポートされず、接続ナビゲータでは参照できません。

モデリングの問題

「リファクタ」コンテキスト・メニューとUML(Bug#4463153)

UMLアーチファクトを含むナビゲータ・パッケージの場合は、「アプリケーション・ナビゲータ」のコンテキスト・メニューから「リファクタ」サブメニューを表示できます。 ただし、パッケージをリファクタしてもUMLアーチファクトはリファクタされませんが、Java型や他の型は予期したとおりにリファクタされます。

Javaクラス図のアクセシビリティ(Bug#4541424)

JAWSスクリーン・リーダーを使用している場合は、現在Javaクラス図のポップアップ・コード・エディタにアクセスできません。 回避策は、ダイアグラム上のJava要素には「編集」のかわりに「ソースへ移動」を使用することです。 これにより、通常のコード・エディタが起動します。

PL/SQLオブジェクトの命名規則(Bug#4588244)

PL/SQLオブジェクトにコロンを含む名前を付けると、正常に動作しなくなります。 引用符で囲まれていない名前はコロンが無効であるため、これは引用符で囲まれた名前にのみ該当します。

データベース・ダイアグラムのビジュアル・プロパティ(Bug#4864790および4613035)

データベース・ダイアグラムでは、一部のビジュアル・プロパティが機能しません。 この種のビジュアル・プロパティ(表やビューの「列のデータ型の表示」など)は、選択または選択を解除しても無効です。

新規に作成した外部キーのカーディナリティ(Bug#4923919)

新規に作成した外部キーのカーディナリティが正しく表示されないことがあります。 ダイアグラムを閉じてから再び開くと、正しい位置に表示されます。

ユースケースがユースケース・ダイアグラムのシステム境界内に表示されない(Bug#4944520)

ユースケースがユースケース・ダイアグラムのシステム境界内に予期したとおり表示されない場合は、そのユースケースのスコープが破損していることが原因と思われます。 基礎となるユースケース文書を開き、スコープ・セクションで有効な場所を参照していることを確認してください。 その後、JDeveloperを再起動します。

Web開発の問題

UIX設計時サポート

本リリースのJDeveloper 10.1.3には、UIXに対する設計時サポートが存在しません。 このサポートは、UIXページをOracle ADF Facesページに変換するためのユーティリティとともに、運用開始後に拡張機能として使用可能になります。 Oracle ADF FacesはUIXの大幅な進化版であり、新しいJSF標準に準拠しています。 ほとんどのUIXコンポーネントは移行ユーティリティで処理されますが、コードを移行するには手動による作業が必要です。

JDeveloper 10.1.2で作成したサーブレットがJDeveloper 10.1.3への以降後に動作しない(Bug#4697146)

以前のリリースのJDeveloperサーブレット・プロジェクトをリリース10.1.3に移行する場合は、サーブレットごとにサーブレット・マッピング・タグを web.xml に手動で追加する必要があります。

MyFacesプロジェクト内で作成したJSPのコンパイル・エラー(Bug#4481965)

MyFaces 1.0.9のhtmlタグ・ライブラリの outputLabel では、for 属性が必須としてマークされています。 JSF仕様とリファレンス実装では、その必要はありません。 この問題を回避するには、属性を1つ指定します。

この問題は、J2EEエディションとStudioエディションの両方に該当します。

新バージョンのStrutsにTilesServletクラスが含まれていない(Bug#4665667)

JDeveloper 10.1.3に付属するStruts(Struts 1.1)とは異なるバージョンのStruts(Struts 1.2.4など)を使用する場合、他のバージョンのダウンロードには TilesServlet が含まれていないことがあるため、デフォルトで TilesServlet を使用できないことがあります。 Strutsアプリケーション用のプロジェクトにTiles定義ファイルを追加し、アプリケーションの web.xml ファイルを調べようとすると、 org.apache.struts.tiles.TilesServlet クラスが見つからないことを示す警告が表示されます。

回避策は、クラスパスに org.apache.struts.tiles.TilesServlet を指定して新規ライブラリを作成し、この新規ライブラリをプロジェクトに追加します。

付属のStrutsとは異なるバージョンを使用する場合の詳細は、次のURLにあるOTNの「Oracle JDeveloper - How-To」を参照してください。

http://www.oracle.com/technology/products/jdev/howtos/index.html

管理プロパティの値の変更(Bug#4868502)

faces-config.xml の概要エディタの「Managed Bean」ページでは、NULLに設定されていたmanaged-propertyまたはmap-entryの値を設定できません。 回避策は、まずソース・エディタまたは「ソース構造」パネルから <null-value/> タグを削除することです。

TopLinkの問題

OC4JにおけるEJB2 CMPの使用(Bug#4379121)

OC4JでEJB2 CMPを使用すると、 orion-ejb-jar.xml に指定されているデータ・ソースおよびログイン情報がCMPのデプロイに使用されます。 orion-ejb-jar 内の情報は、アプリケーション・ナビゲータからプロパティ・エディタを起動して編集できます。 デプロイ・データベースの接続情報はTopLinkマップで編集可能ですが、TopLinkに対して指定した情報はデプロイ時に無視されます。

セッションBeanのリモート・インタフェースから戻されるTopLink POJOでjava.io.Serializableを実装する必要がある(Bug#4902787)

TopLink POJOオブジェクト用にセッションBeanファサードを作成する場合は、リモート・インタフェースを介してSessionBeanファサードから戻されるTopLink POJOオブジェクトごとに java.io.Serializable を実装する必要があります。 通常、この作業が必要になるのは、EJBクライアントをADF Swingを使用して実装している場合、またはEJBセッションBeanがクライアントとは異なるアプリケーション・サーバーで実行している場合です。

次の例外を取得した場合に java.io.Serializable を実装する必要があるとも言えます。

com.evermind.reflect.UndeclaredExceptionTypeException:
    /oracle.oc4j.rmi.OracleRemoteException/
    at __Proxy1.[Your Class Name Here] (Unknown Source) 

回避策は、各POJOオブジェクトを手動で編集して java.io.Serializable を実装することです。 今後のリリースでは、この手動手順は不要になる予定です。

ダブルバイト言語(Bug#4924156)

TopLinkマップまたはTopLinkセッションの構成ファイルにダブルバイト・キャラクタが含まれている場合は、POJOを生成すると例外が発生します。 tlmap.xml ファイルと sessions.xml ファイルの名前にダブルバイト・キャラクタが含まれていないことを確認してください。

SQL Serverのネイティブ順序付けの構成(Bug#4927333)

SQL Server固有の順序付けを構成できない場合は、別のデータベース・プラットフォーム(Oracle)を選択してネイティブ順序付けを有効化します。 その後、設定をSQL Serverに戻す必要があります。

移行後のデプロイメント・ディスクリプタの場所の変更(Bug#4928625)

デプロイメント・ディスクリプタの場所は、リリース9.0.5のTopLink ADFアプリケーションをリリース10.1.3に移行すると変更されます。 移行後のアプリケーションをリリース10.1.3で動作させるには、DeploymentDescriptorFileNameプロパティを META-INF\toplink-deployment-descriptor.xml から META-INF\package\toplink-deployment-descriptor.xml に変更する必要があります。

After Loadメソッドの選択が移入されない場合がある(Bug#4960233)

TopLink Mapping Editorでディスクリプタ(マップされたクラス)にアドバンスト・プロパティ「ロード後」を追加するためのオプションが用意されています。 「ロード後」のプロパティ・エディタで、TopLinkのAfter Loadメソッドのシグネチャ要件を満たすメソッドを含んだクラスを指定できます。 これらのメソッドが、「Staticメソッド」の選択に表示されないことがあります。

回避策

有効なAfter Loadメソッドを含むクラスを指定した後、指定のクラスをJavaソース・エディタで開き、空白または任意の文字を2つ入力します。 これにより、TopLinkマッピング・モデルのクラス・メタデータが更新され、そのクラスに定義されているAfter Loadメソッドが「Staticメソッド」の選択に表示されます。

技術的な解決策

リリース10.1.3のTopLinkエディタでは、TopLinkマッピングのメタデータ・モデルに必要な場合にクラス・メタデータを遅延ロードします。 これにより、「ロード後」プロパティで指定したクラスがマッピング・モデルで参照されていないと、その属性とメソッドが移入されないことがあります。 この問題の解決策は、After Loadメソッドで指定したクラスが移入されない場合、完全移入を強制的に実行させることです。

コンテナ外部にある関連TopLink POJOおよびEJB 3.0エンティティへのアクセス

TopLink POJOまたはEJB 3.0エンティティをリモート(コンテナ外部)で使用すると、エンティティは関連エンティティからの情報にアクセスできません。 解決策は、クライアントに送信する前に、必要なエンティティ・データをすべて事前ロードしておくことです。 たとえば、Departments および Employees という2つのエンティティがある場合は、Employees のコレクションを反復してデータをロードする必要があります。

次の例は、同じコンテナにエンティティ(またはPOJO)を持つセッションBeanについてデフォルトで生成される findAllDept()メソッドのコードを示しています。

public List<Dept> findAllDept() {
  Session session = getSessionFactory().acquireSession();
  List<Dept> results = (List<Dept>)session.executeQuery("findAllDept", Dept.class);session.release();
  return results;
}

DepartmentEmployees コレクション(empCollection フィールド)を事前にロードするには、このコードを次のように変更します。

public List<Dept> findAllDept() {
  Session session = getSessionFactory().acquireSession();
  List<Dept> results = (List<Dept>)session.executeQuery("findAllDept", Dept.class);session.release();
  //  Eagerly load all Emp's associated with each Dept so they can be
  //  accessed by a remote client.
  for (Dept dept : results) {
    dept.getEmpCollection().size();
  }
  return results;
}

このコードでは、Department ごとに関連する Employees がロードされます。 さらに各 Employee に関連する Addressをロードするには、次のように変更します。

//  Eagerly load all Emp's associated with each Dept so they can be
//  accessed by a remote client.  Also, for each Emp, eagerly load
//  its associated Address
for (Dept dept : results) {
  for (Emp emp: dept.getEmpCollection()) {
    emp.getAddress();
  }
}

EJBの問題

EJB 3.0のBeanのモデリングはサポート対象外

このリリースでは、EJB 3.0のBeanのモデリングに対するサポートはありません。

EJBデータ・コントロールでinterMediaのBLOB/CLOB型がサポートされない(Bug#4601958)

JDeveloperリリース10.1.3のEJBデータ・コントロールでは、interMediaのBLOB/CLOB型がサポートされません。 これらのデータ型を持つ列は、ベースCMP/POJOにあってもデータ・コントロール・パレットに表示されません。

EJBリレーションシップに Collection のかわりに Set を使用するとEJBをデプロイできない(Bug#4928365)

EJBリレーションシップに java.util.Set を使用すると、EJBをOC4Jにデプロイできません。 回避策は、java.util.Collection または java.util.List を使用することです。

埋込みサーバーでEJB(ソースなし)データ・コントロールを使用するとADFアプリケーションを実行できない(Bug#4880076)

EJBデータ・コントロール・ウィザード(リリース10.1.3の新機能)を使用して、インポートしたEJB JARファイルからADFデータ・コントロールを作成すると、埋込みOC4Jサーバーに対して実行できません。 ただし、リモート・サーバーを使用してアプリケーションを実行することはできます。

Webサービスの問題

EJB Webサービスが埋込みOC4Jサーバーにデプロイされている場合に、シリアライザなしというエラーが戻される(Bug#4012177)

Windowsでは、長い名前を持つWebサービスがJavaメソッドを公開し、そのJavaメソッドが同じく長い名前を持つJavaBeansを使用する場合、埋込みOC4Jサーバー上の結合ファイルへのパスが長すぎて認識できないことがあります。 このため、実行時にサービスからJavaBeans用のシリアライザを登録できないことがレポートされます。

回避策は次のとおりです。

  1. 「ツール」「埋込みOC4Jサーバーの設定」を選択し、「グローバル」が選択されていることを確認します。
  2. 「デプロイメント・ディレクトリ」を編集し、ルート・ディレクトリからの短いパスを持つ次のようなディレクトリに変更します。
    D:\JDevEmbeddedServer\application_deployments

外部OC4J上でEJB 3.0のWebサービスをテストするための「起動」ボタンがEMに存在しない(Bug#4769395)

EJB 3.0のWebサービスを外部OC4JにデプロイしてOracle Enterprise Managerからテストしようとした場合、「起動」ボタンが表示されないことがあります。 回避策はありません。

マルチポートWSDL用に生成されたプロキシの無効なWebサービス・エンドポイント(Bug#4867854)

複数のポートを使用するWebサービスへのプロキシを作成すると、そのWebサービスには無効なエンドポイントを持つプロキシが生成されることがあります。 回避策は、WSDLを調べて適切なエンドポイントURLを見つけ、それを生成されたプロキシ・クラスに貼り付けることです。

プロジェクトに複数のWebサービスが存在する場合のランタイム例外(Bug#4861145)

1つのプロジェクトに同じマッピング・ファイルを使用するWebサービスを複数作成すると、ランタイム例外が戻されます。 回避策は次のとおりです。

EJB 3.0のWebサービスを埋込みOC4Jで実行できない(Bug#4932519)

EJB 3.0から作成されたWebサービスは、埋込みOC4Jサーバーでは実行できませんが、外部OC4Jにはデプロイできます。

ADF Business Componentsの問題

このリリースではBC4JフェイルオーバーのデフォルトがFalseである(Bug#4393051)

このリリースでは、BC4Jフェイルオーバー・モードのデフォルトが false に切り替えられています。 これは、フェイルオーバーが提供するサービスの品質を必要としないデフォルトのBC4Jアプリケーションのパフォーマンスを強化するために行われた変更です。

フェイルオーバーを必要とする既存のアプリケーションの場合は、フェイルオーバーを再有効化できます。 そのためには、「プーリングおよびスケーラビリティ」タブ・ページで「アプリケーション・モジュール」構成を編集してフェイルオーバーを有効化します。

ADFの「状態マネージャ」とBC4Jのフェイルオーバー

ADF 10.1.3には、アプリケーションの状態を管理するために新しいStateManager状態リポジトリが導入されています。 これにより、ADFではWebリクエストごとにブラウザのCookieとしてBC4Jの受動化IDのような状態を書き込む必要がなくなります。 ただし、この追加により、BC4Jアプリケーションについて以前の実装で提供されていたのと同じサービス品質を必要とする場合、アプリケーション開発者は特定のプロビジョンを行う必要があります。 アプリケーションで状態をディスクに保存する必要がある場合は、ある程度の構成を実行する必要がありますが、 jbo.dofailover=true の場合でも、この構成をデフォルトで実行できないことがあります。

n個のノードに障害が発生した場合でもBC4Jの状態が確実に管理されるようにするには、アプリケーション開発者はStateManagerが状態をディスクに保存するように構成されていることを確認する必要があります。 WebベースのADFアプリケーション用のデフォルトのStateManagerリポジトリは、HttpSessionです。 したがって、コンテナで永続HttpSessionがサポートされる場合、アプリケーション開発者に必要なのはこの機能を有効化することのみです。

コンテナでHttpSessionの保持がサポートされない場合や、HttpSessionの保持が実現可能でない場合、アプリケーション開発者は別のStateManagerリポジトリを使用するように選択できます。 ADFにはJavaCache* StateManagerリポジトリも用意されており、このリポジトリではデフォルトで永続的な状態管理がサポートされます。 JavaCache StateManagerリポジトリを使用するには、コマンドラインで次のJavaシステム・プロパティを定義します。

oracle.adf.share.statemanager.class_name=oracle.adf.share.statemanager.javacache.StateManagerImpl

注意: JavaCacheオプションは、データ・バインディング(リリース10.1.2以降でのみ可能)を使用して生成されたアプリケーションにのみ適用されます。 それ以前のアプリケーション(9.0.xベースなど)の場合、このオプションは使用できません。 ただし、付加的な措置として、アプリケーション・モジュールごとにブラウザCookieを記述するという従来の方法も使用可能で、「アプリケーション・モジュール」の構成設定jbo.ampool.writecookietoclient=trueを使用して有効化できます。 この代替策には明らかに望ましくない副次効果(ブラウザCookieの上限に達するリスクの上昇)があり、あくまでも一時的な措置です。

ADFとADF Business Componentsを使用したチーム開発のためのヒント

この項では、ADFアプリケーションに関してチームで作業しており、1人が同じプロジェクトを変更した間に他のチーム・メンバーが変更内容をソース・コントロールにコミットしていた場合に、マージ競合が発生する可能性を最小限に抑えるためのヒントを示します。

getViewCriteriaWhereClause()をオーバーライドするユーザー向けのコード移行に関するアドバイス

ADF 10.1.3では、ビュー・オブジェクトに複数のビュー基準を使用できます。 この機能のサポートと、メモリー内の行のフィルタリングをさらに厳密にプログラムで制御するための関連機能のサポート導入の一環として、ブール・フラグを受け入れる ViewObjectImpl.getViewCriteriaWhereClause() について、新規のオーバーロードを導入する必要がありました。 引数を取らない以前のメソッドはコールされなくなりました。 そのため、リリース10.1.2以前に getViewCriteriaWhereClause() をオーバーライドしていた場合は、次の提案に従ってコードをリリース10.1.3に移行する必要があります。

次のコードから始めたとします。

public String getViewCriteriaClause() {
  // your-code here
}

VOのVCが1つのみで、VCが常にデータベース問合せに使用される(メモリー内のフィルタリングには使用されない)場合は、単に、オーバーライドした既存のメソッドを、ブール・パラメータを持つように変更できます。 これにより、新規メソッドのシグネチャのオーバーライドとなります。 ただし、複数のビュー基準機能やメモリー内フィルタリングに対するビュー基準のサポートを利用する場合は、ViewObjectImpl で次のメソッドを使用するように既存のオーバーライド・コードを拡張できます。

public ViewCriteria[] getApplyViewCriterias(int criteriaMode) 

データベース問合せのビュー基準を取得する場合は、oracle.jbo.ViewCriteria.CRITERIA_MODE_QUERYを使用してコールします。 メモリー内フィルタリングのビュー基準を取得するには、ViewCriteria.CRITERIA_MODE_CACHEフラグを使用してコールします。 メモリー内フィルタリングの場合、戻されるWHERE句にはデータベース列名ではなく、ビュー・オブジェクトの属性名を使用する必要があることに注意してください。 逆に、データベース問合せのWHERE句には、データベース列名を使用する必要があります。

oracle.jbo.domain.Rawドメインに対する動作の変更

Bug#4932766(リリース10.1.3でoracle.jbo.domain.Raw型の主キーを持つエンティティ・オブジェクトを検索する際の回帰)に対処するために、Rawドメインの動作が変更されました。 このリリースでは、Rawドメインの String コンストラクタは、文字列が行値の16進ダンプであることを期待します。 たとえば、バイト配列の長さが3で文字A、BおよびCを含む行が必要な場合は、次のようにコールする必要があります。

new Raw("414243");  // 0x41 is hex ascii code for 'A', etc.

既存のコードがRawドメインの文字列コンストラクタの以前の動作に依存する場合は、そのコードを次のように変更できます。

これにより、以前のセマンティックが保持されます。

インポート済のADF Business Componentsはウィザードやエディタに表示されるがナビゲータに表示されない

再利用可能なコンポーネント・ライブラリを共有するため、ADF Business Componentsのインポート機能を使用して大型のエンタープライズ・アプリケーションをビルドした多数のユーザーの経験に基づいて、インポート済のコンポーネントはインポート対象プロジェクトのナビゲータに表示されなくなりました。 インポート済のコンポーネントは、常にADF Business Componentsのウィザードとエディタの「使用可能なコンポーネント」リストにあるものとして表示されますが、「システム・ナビゲータ」や「アプリケーション・ナビゲータ」には表示されません。 これには主に2つのメリットがあります。

  1. インポート対象の(インポート済コンポーネントのない)プロジェクトで編集可能なコンポーネントがわかりやすくなります。
  2. アプリケーション・ナビゲータ(およびシステム・ナビゲータ)の表示が、参照でのみ使用されているコンポーネントで雑然とすることがなくなります。

これは優れた改良ですが小さなデメリットが1つあり、ADF BCコンポーネントのインポート済パッケージへの参照を完全に削除する必要が生じた場合に、コンポーネントのパッケージをアンインポートする特定の操作を追加するまでは、インポート対象プロジェクトの *.jpx ファイル内で対応するエントリを削除する必要があります。 次の手順に従います。

  1. プロジェクト内の既存のコンポーネントが、インポート対象から削除しようとしているパッケージ内のコンポーネントに依存しないことを確認します。 JDeveloperの「検索」「ファイル内を検索」機能を使用して、削除しようとするパッケージの完全修飾名をADF BC *.xmlコンポーネント・メタデータ・ファイル内で検索すると、そのパッケージ内のコンポーネントに依存する可能性のある候補コンポーネントを識別できます。
  2. 削除対象のパッケージをインポート中のプロジェクトを、現在JDeveloperで開いていないことを確認します。
  3. プロジェクトのソース・パスのルート(通常は ./src)で YourProjectName.jpx ファイルを検索します。
  4. メモ帳やviなどのテキスト・エディタで YourProjectName.jpxファイルを開き、インポート済パッケージに関連する <Containee> 要素を削除します。 _locationURL というプロパティを持つネストした <DesignTime> 要素があり、その内容は次のとおりです。
    <Containee
        Name="yourpackagename"
        FullName="com.yourcompany.yourapp.yourpackagename.yourpackagename"
        ObjectType="JboPackage">
        <DesignTime>
            <Attr Name="_LocationURL" Value="<SomePathHereTo>/YourLibraryName.jar" />
        </DesignTime>
    </Containee>
    該当する <Containee> および </Containee> タグとその間にあるすべてのテキストを削除する必要があります。
  5. JDeveloperで再びプロジェクトを開くと、インポート済パッケージのコンポーネントがどのウィザードやエディタの「使用可能」リストにも表示されなくなります。

ADF設計時には、次のいずれかのパッケージ内のコンポーネントのみが表示されます。

ビジネス・コンポーネントのパッケージをJDeveloperプロジェクトに追加(packagename というコンポーネントのパッケージの場合は packagename.xml ファイルを追加)すると、必要に応じてBC4Jウィザードを使用してあらゆる側面を編集でき、ソース・コードが表示されます。

ビジネス・コンポーネントのパッケージをライブラリからインポートすると、コンポーネントは現行プロジェクト内で編集可能なコンポーネントにより参照される各種ADF BC設計時ウィザードで使用可能になりますが、インポート済コンポーネントを変更することはできません。 つまり、Javaソース・コードがライブラリのJARファイルに存在する必要はありません(*.classおよび*Xmlファイルのみ存在)。

ADF BCコンポーネントをデプロイするには、ビジネス・コンポーネントのデプロイメント・プロファイルの作成時に「シンプルJARファイル」オプションを使用します。 このオプションには、アプリケーション・モジュール・コンポーネントの右マウス・メニューから「ビジネス・コンポーネントのデプロイメント」を選択してアクセスできます。

ADF BCコンポーネントのパッケージをインポートする手順は、次のとおりです。

  1. 「プロジェクト・プロパティ」「ライブラリ」タブでJARファイルのライブラリを作成します。 これらのコンポーネントのドメインと構成にアクセスする必要がある場合は、*CSMT.jar ファイルと *CSCommon.jar ファイルの両方がライブラリ定義に含まれていることを確認します。
  2. そのライブラリをプロジェクトのライブラリ・リストに含めます。
  3. 「ファイル」「インポート」「ビジネス・コンポーネント」を選択します。
  4. ファイルを開くダイアログを使用してライブラリのJARファイルにナビゲートし、そのライブラリからインポートするコンポーネントのパッケージ(この例ではpackagename)の packagename.xml ファイルを選択します。

インポート済コンポーネントの1つを選択すると、そのプロパティを「ビジネス・コンポーネント」エディタで検査できますが、設計上、インポート済コンポーネントはインポート対象プロジェクト内では編集できないため、すべてがグレー表示されていることがわかります。

注意: インポート対象プロジェクトで作業中に新規JARファイルを生成してインポート済プロジェクトを更新した場合、インポート対象プロジェクトを閉じてから再び開くまでは、変更内容がインポート対象プロジェクトで認識されないことに注意してください。

ADF BCアクセッサ・コレクションの通貨の保持(Bug#4927737および4927757)

ADF BCアクセッサ・ベースのコレクションの場合、リクエスト間で通貨を保持するには、アクセッサ・コレクションを起動する前に、マスター・ビュー・オブジェクト上で setViewLinkAccessorRetained(true) をコールして、ビュー・リンク・アクセッサ上で通貨を保持するようにマスター・ビュー・オブジェクトをマーク付けする必要があります。

これは、複数のWebページで同じアクセッサを使用する場合も同様です。 通貨をページ間で保持する場合は、アクセッサ・コレクションを起動する前に、マスター・ビュー・オブジェクト上で setViewLinkAccessorRetained(true) をコールして、ビュー・リンク・アクセッサ上で通貨を保持するようにマスター・ビュー・オブジェクトをマーク付けする必要があります。

たとえば、DeptViewImpl 内で ViewObjectImpl からの create メソッドをオーバーライドするには、次のようにします。

protected void create() {
  //for customized components to perform programmatic defaulting
  setViewLinkAccessorRetained(true);
}

その後、createメソッドでは、フォーカスが作成された行または選択された編集行に保持されます。

ADFのDataBindingの問題

DataBinding: 最新でないBindingContainer内のバインディングへの参照は移行後に変更する必要がある

ベスト・プラクティスは、各ページまたはパネルのバインディング・コンテナで、参照する必要のある全データについてバインディングを定義することです。 これは、ADFのデータ・コントロール・パレットからコントロールをドロップしてページを作成する際などにデフォルトで発生する状況です。 このベスト・プラクティスを使用してページを開発した場合、リリース10.1.3への移行時にアプリケーションを変更する必要はありません。 ただし、現行ページのバインディング・コンテナとは異なるバインディング・コンテナからのバインディングを参照するページがアプリケーションに含まれている場合は、既存のアプリケーションをリリース10.1.3に移行する際に注意が必要な重要情報を参照してください。

Webアプリケーションの場合、ライフサイクルのprepareModelフェーズ中に、ADF Modelランタイム・フレームワークにより自動的に現行のページ・リクエストに対する適切なバインディング・コンテナが準備され、現行のバインディング・コンテナ内のバインディングにより保持されている状態はリクエストの終了時に解除されます。 これにより、セッション・レベルの不要な状態が回避され、スケーラビリティが向上します。 リリース10.1.2では、現行ページが ${data.SomeNonCurrentBindingContainer.SomeBindingName}などのEL式を使用して別のバインディング・コンテナからのバインディングに対するアクセスを試行した場合、現行リクエストのコンテキスト内でそのバインディングに関連する単一イテレータに対して、オンデマンドの prepareModel() を試行していました。 これは、状況によっては正常に機能しました。 ただし、動作に一貫性がなく、予期しない副次効果が生じて、最新でないバインディングに関連していたイテレータの種類によっては多数の開発者を驚かす結果となりました。 この非一貫性に対処し、前述のベスト・プラクティスを促進するために、現在はこのオンデマンドの事前イテレータ作成は回避されています。 実際の効果として現行ページで可能なのは、デフォルトで、バインディングを固有のバインディング・コンテナから参照することのみです。

アプリケーション・ページで ${data. の出現箇所を検索すると、アプリケーションにこの種の参照が含まれているかどうかをチェックできます。 含まれている場合は、次の方法によりシステムで置換できます。

複数のページに組み込む共有JSPページのフラグメントで ${data.SomeBindingContainer.SomeBindingName} のようなバインディングを参照する場合は、現行のページ・リクエスト中に SomeBindingContainer をプログラム的に準備できます。 そのためには、既存の DataAction クラスの prepareModel() メソッドをオーバーライドし、 super.prepareModel() の後に次の prepareBindingContainer() のようなヘルパー・メソッドをコールして、ページで参照する必要のあるバインディングを含んだ必要なバインディング・コンテナをリフレッシュします。

public void prepareBindingContainer(DataActionContext ctx, String bcName) {
  ctx.getBindingContext().findBindingContainer(bcName)
     .refresh(DCBindingContainer.PREPARE_MODEL);
}

したがって、オーバーライドした prepareModel() メソッドは次のようになります。

// Programmatically prepare NameOfOtherPageUIModel binding container
// in this request, too
public void prepareModel(DataActionContext context) {
  super.prepareModel(context);
  prepareBindingContainer(context,"NameOfOtherPageUIModel");
}

このコードをリリース10.1.3でDataPageに初めて追加すると、クラスはオーバーライドするのと同じ prepareModel() ライフサイクル・メソッドを持つ新規の PageController クラスのサブクラスになり、ヘルパー・メソッドは次のようになります。

public void refreshBindingContainer(LifecycleContext ctx, String bcName) {
  ctx.getBindingContext().findBindingContainer(bcName);
  Refresh(DCBindingContainer.PREPARE_MODEL);
}

現在、ADF Business Componentsのデータ・コントロールは、この新規動作を積極的に規定するデータ・コントロールのみですが、他のデータ・コントロール実装は将来のメンテナンス・リリースでこのポリシーに従うことになります。 したがって、アプリケーションで使用中のデータ・コントロールの種類に関係なく、ベスト・プラクティスの推奨事項に即時に従うことが最善の方法です。

DataBinding: 存在しないELエントリについてページ定義内のRefreshConditionがTrueに評価される(Bug#4759317)

ページ定義ファイル内で実行可能ファイルの RefreshCondition プロパティに提供される el-expression の名前がEL領域に存在しないかNULLに評価される場合、現在は RefreshCondition が無視され、実行可能ファイルがリフレッシュされるかどうかは実行可能ファイルの Refresh プロパティによって決まります。 このデフォルト動作は、将来、El-expression 内の欠落エントリなどを false として解析するように変更される可能性があります。 このリリースでは、 RefreshCondition で提供されるエントリが実際にJavaブール値に評価されることをアプリケーションで確認する必要があります。

DataBinding: アプリケーション・モジュールの名前を変更してもDataBindings.cpxからの参照名が変更されない(Bug#3433164)

アプリケーション・モジュール名を変更すると、アプリケーション・モジュールのJavaクラスとデフォルト構成の名前が変更されます。 ただし、 DataBindings.cpx ファイルでは引き続き古い構成が参照され、プロジェクトの「デフォルトの実行ターゲット」では引き続き古いJavaクラス名が参照されます。 アプリケーション・モジュール名またはパッケージ名を変更した場合は、プロパティ・インスペクタを使用して必要な更新を行う必要があります。

DataBinding: リリース10.1.2のBeanデータ・コントロールを使用する検索フォームの移行

リリース10.1.2では、Beanデータ・コントロールで検索モードがサポートされていても、Bean属性は問合せ可能として識別されませんでした。 検索フォームをリリース10.1.3に移行する場合は、プロパティ・インスペクタを使用して、検索に関与させる検索フォームの属性について Beanデータ・コントロールの属性 IsQueriabletrue に設定します。 リリース10.1.3では、設計時に新規のBean属性が更新可能として定義されることに注意してください。

DataBinding: ELの「式ビルダー」ダイアログのリストに廃止になったプロパティが表示される

JDeveloperの 「式ビルダー」ダイアログでは、オブジェクト、マネージドBeanおよびプロパティのリストを指定してEL式を作成できます。 このダイアログを使用してADFバインディングのプロパティのADFデータバインド式を編集するときには、ページの各バインディング・オブジェクトで使用可能なADFバインディング変数が表示されます。 現在、このリストにはリリース10.1.3で廃止になった一部のバインディング・プロパティが含まれています。 たとえば、次のような廃止プロパティが表示されます。

前述のプロパティは将来のリリースで削除されるため、バインディングには使用しないでください。

JSF: Early Access 1 で作成したアプリケーションの移行

EA1でアプリケーションをビルドした場合は、Facesバインディングでメソッド名が invoke から executeに変更されたことに注意してください。 例えば、先頭の行に移動する「First」ボタンは、EA1アプリケーションでは、次のようにバインドされていました。

<af:commandButton actionListener="#{bindings.First.invoke}"
                  action="First" text="First"
                  disabled="#{!bindings.First.enabled}"/>

これは次のように更新する必要があります。

<AF:commandButton actionListener="#{bindings.First.execute}"
                  action="First" text="First"
                  disabled="#{!bindings.First.enabled}"/>

JSF: HTTPセッションを無効化した後に引き続きADFバインディングを使用するにはリダイレクトを使用する

設計上、ADF BindingContextは、リクエスト中に実行される転送の回数に関係なくリクエストごとに1度のみ作成されます。 HttpSessionを無効化してリクエスト中にBindingContextを破棄した場合は、新規のADFバインディング・コンテキストを使用する新規HTTPセッションが正常に作成されるように、HTTPリダイレクトを実行する必要があります。 JSFを使用すると、JSFナビゲーション・ケースでリダイレクト・プロパティをマーク付けして、このリダイレクトを宣言的に実行できます。

JSF: ADFmの使用時にBeanのスコープがリクエストされない場合のFacesメッセージ(Bug#4865235)

次のエラー・メッセージが戻されたとします。

SEVERE: Managedbean main_bean could not be created The scope of the referenced object:
    '#{bindings}' is shorter than the referring object

ADFmでバインドされているコマンド・コンポーネント用にプログラム的にメソッド・バインディングを作成する場合は、選択したマネージドBeanがリクエスト・スコープに存在する必要があることに注意してください。 コード生成時には、ADFバインディング・コンテナが管理プロパティとしてマネージドBeanにインジェクトされます。 バインディング・コンテナはリクエスト・スコープにあるため、Beanのスコープが広いとマネージドBeanで参照できません。

JSF: JSFページの検索フォームでは日付検索に正確な日付を使用する必要がある(Bug#4866111)

JSFページの検索フォームでは、デフォルトで、日付に <af:selectInputDate> コンポーネントが使用されます。 このコンポーネントで許可されるのは正確な日付のみであるため、他のコンポーネントに有効な > および < 演算子を使用すると検証エラーになります。 代替策は、ワイルドカードを使用する必要がある場合は <AF:inputText> コンポーネントを使用し <convertDateTime> タグを削除することです。

JSF: 重複PKでnewEmpがコールされたときの検証なしエラー(Bug#4894440)

EJB 3.0では、persistEntity のアクションがハードコード化されていると重複PKの検証が表示されないことがあります。 メソッドをダブルクリックしてコードを追加するメソッドをプログラム的に実行し、ユーザーを空ページの作成に戻すエラーが発生した場合は、結果としてNULLを戻す必要があります。

JSF: メソッド・パラメータ・フォームが削除されるときにページ定義ファイルが正しくない(Bug#4927825)

アクセッサ・ベースのVOメソッドを使用してJSF JSPページを作成すると、不正なページ定義が生成されます。 このため、ページの実行時にランタイム・エラーが発生します。 回避策は、生成されたページ定義ファイルを次のように手動で変更することです(メソッド名が foo であるとします)。

JSP: JSPセグメント・ファイルに対してADF Databindingがサポートされない(Bug#4482836)

JSPセグメント・ファイルの場合、ADF Databindingはサポートされません。 データバインドされたコンポーネントは、JSPセグメント・ファイルにドロップできません。

JSP: Struts ADF JSPページからUIコントロールを削除しても、ページ定義からバインディングが削除されない(Bug#4865716)

ビジュアル・エディタまたはStruts ADFアプリケーションのJSPページの「ソース」ビューでUIコントロールを削除しても、ページの定義ファイルでは対応するバインディングが削除されません。 構造ウィンドウまたはソース・エディタを使用すると、手動でページ定義ファイルからバインディングを削除できます。

TopLink: TopLinkプロジェクトの移行後にデータ・コントロール・パレットにfindAllノードが表示されない(Bug#4861593)

TopLinkのワークスペースを移行して session.xml からデータ・コントロールを再作成すると、データ・コントロール・パレットに「findAll」ノードが表示されません。 これは、このような問合せが定義されているのは新規作成されたプロジェクトのみであるためです。 回避策は、 findAll 問合せを必要なディスクリプタに追加することです。

EJB: 移行したワークスペース用のBean XMLファイルが作成されない(Bug#4561083)

EJBを含むワークスペースを移行し、そこからデータ・コントロールを作成すると、Beanクラスから生成される .xml ファイルは作成されません。 回避策は、構造ウィンドウのコンテキスト・メニューから「リフレッシュ」を選択してBeanクラスを手動でリフレッシュすることです。

Bean: ディテール・アクセッサのOperationsノードの欠落(Bug#4722815)

JavaBeansやEJBのデータ・コントロールなど、Beanベースのデータ・コントロールを生成すると、フレームワークはJDK 1.5の汎用コレクション型メタデータ(Collection<SomeType>)を横断できます。 Collectionのフィールド、メソッドまたはパラメータがこの方法で型指定されていない場合は、Collectionが保持するオブジェクトの型がわかっていれば、その型をフレームワークに対して指示する必要があります。 そのためには、構造ウィンドウでCollectionアクセッサを選択し、プロパティ・インスペクタを起動して、そのアクセッサのオブジェクト型を「Beanクラス」フィールドに入力します。

データ・コントロール・パレットでこのアクセッサに関連した「Operations」フォルダに表示するCollection操作を有効化するには、CollectionBeanClassフィールドに UpdateableCollection または ReadOnlyCollection などの値を入力します。

ADF Facesの問題

Early Access 1で作成したADF Facesアプリケーションの移行(Bug#4926577)

ライブラリが変更されたため、EA1から移行したアプリケーションが正しくレンダリングまたは実行されないことがあります。 この問題を解決するには、「プロジェクト・プロパティ」に移動し、taglibセクションを削除してからADF Facesタグ・ライブラリを読み取ります。

<af:document>の親として<afc:cache>を使用する際の問題(Bug#4904771)

<afc:cache> タグを <af:document> タグの親にすると、XMLソース・エディタに次のエラーが表示されることがあります。

要素af:documentの親要素が無効です

このエラーが発生しても実行時に問題は発生しません。 このエラーを無視するか、 <afc:cache> タグを <af:document> タグ内に移動できます。 後者の方法を選択すると、キャッシュには、 <f:view>タグに含まれていたページ・コンテンツではなく、<af:document> タグに含まれていたフラグメントのコンテンツが格納されます。 この変更は、キャッシュに格納される実際のコンテンツには影響しません。

再ポストするメイン・アプリケーション・ページからの対象フラグメントに<afc:cache>を使用する(Bug#4954619)

メイン・アプリケーションのページで再POST(同じページからのPOSTの結果であるリクエスト)を実行し、固有のサブページにある対象フラグメントが含まれている場合、対象フラグメントでは <afc:cache> を使用しないでください。 メイン・ページを更新するボタンやタブは、再POSTの一例です。 このタイプのフラグメントとともに <afc:cache> タグを使用すると、予期しないページ・ナビゲーションが発生することがあります。

リリース1.5.0_05ではMacでADF Facesの表がレンダリングされない(Bug#4961228)

Apple MacintoshプラットフォームでJDK 1.5を使用する場合は、JDKバージョン1.5.0_06以上を使用してください。 バージョン1.5.0_06以前のJDK 1.5には不具合があり、ADF Facesの表コンポーネントがビジュアル・エディタにレンダリングされず、他にもレンダリングに問題が発生する可能性があります。

ADF URLデータ・コントロールおよびWebサービス・データ・コントロールの問題

Webサービス・データ・コントロールを埋込みOC4Jインスタンス上のターゲットWebサービスと同じアプリケーションで実行する

Webサービスに関して生成されるWSDLファイルとエンドポイント情報は、標準ポート8888でスタンドアロンoc4jインスタンスに対してデプロイすることを意図しています。 データ・コントロールでは、Webサービスへの接続がこのポートで構成されます。 埋込みOC4Jはデフォルトでポート8988で実行されるため、データ・コントロールによりWebサービスが実行されるとエンドポイントに到達できません。 「Webサービス接続の編集」ダイアログを使用して、エンドポイントのポートを埋込みOC4Jのポートに変更する必要があります。

WSDLがWebサービス・データ・コントロールでサポートされない(Bug#4524777)

ANYデータ型として定義されている複合型を持つWSDL内のスキーマ、または型がスキーマ全体として定義されているスキーマは、サポートされません。 この種のスキーマを公開するサンプルWSDLは、次を参照してください。

http://www.jasongaylord.com/webservices/zipcodes.asmx?wsdl

埋込みOC4Jインスタンス上のURLデータ・コントロールの回避策(Bug#4561310)

埋込みoc4jインスタンスは、 <jdev_home>\j2ee\home\config\system-jazn-data.xmlembedded-oc4j\config にコピーした後、JSPを再実行する前に終了する必要があります。 終了しないと、新規にコピーした system-jazn-data.xml が埋込みOC4Jサーバーにより取得されません。

Oracle Application Server上でのURLデータ・コントロールの実行(Bug#4572201)

URLデータ・コントロールを使用するアプリケーションをOracle Application Server上で実行するには次の回避策が必要です。

  1. URLデータ・コントロール・プロジェクトが作成されたJDeveloperの<jdev_home>\j2ee\home\config 内の system-jazn-data.xmlを、<as_home>\j2ee\home\configにコピーします。 このファイルを上書きしないようにする場合は、このファイルにURLConnection資格証明をカット・アンド・ペーストします。
  2. <as_home>\opmn\bin\opmnctl stopall でOracle Application Serverを停止し、opmnctl startallで起動します。

ADF Swing(JClient)の問題

ADF Swing WebStartがEJB 3.0で動作しない(Bug#4755365)

EJB 3.0データ・コントロールに対してビルドされたADF Swingクライアントは、Java WebStartを使用してデプロイできません。 これは、WebStartのデプロイメント・ディスクリプタの制限によるものです。 ADF SwingクライアントをEJB 3.0データ・コントロールで動作させるには、VMにコマンドライン引数 -javaagent を渡す必要があります。 ただし、Java WebStartのデプロイメント・ディスクリプタでは、 -javaagent パラメータを指定できません。 この制限は、EJB 2.1データ・コントロールには影響しません。

JClientのセキュリティで引き続きAMプロパティ設定が必要である(Bug#4889913)

JClientアプリケーションでは、認証と認可を有効化するために、引き続きアプリケーション・モジュールの構成プロパティ jbo.security.enforce を使用する必要があります。 JClientの場合、リリース10.1.3の新しい adf-config.xmlauthorizationEnforce プロパティはまだサポートされていません。

9.0.4以前のリリースからのADF Swingアプリケーションの移行(Bug#4922256)

リリース9.0.4以前のADF Swing(JClient)アプリケーションをJDeveloper 10.1.3に移行すると、リリース10.1.3のアプリケーションで作成した新規パネルおよびフォームでは、移行したパネルを再利用できなくなります。 また、データ・コントロール・パレットからドラッグ・アンド・ドロップしても、移行したパネルを拡張することはできません。 このような制限は、JDeveloper 9.0.5以降にバインディングを定義するためのページ定義ファイルが導入されたことによるものです。 移行後のパネルを拡張する最善の方法は、コンポーネント・パレットを使用することと、パネルのソース内で Document および Model プロパティを編集することです。

その他の問題

XSQLページの設計時サポートの変更点

このリリースでは、Oracle XSQLページで作業中にJDeveloperでプロジェクトを自動的に構成する方法が一部変更されています。

  1. デフォルトでは、プロジェクトの XSQLConfig.xml ファイルを、JDBCデータ・ソースを使用するように構成します。 これにより、Oracle XSQL Pagesエンジンの組込み機能が利用され、データベース接続情報が簡素化され、安全性が向上して管理が集中的に行われるようになります。 これは、XSQLページではデフォルトで、J2EE Webアプリケーション環境で構成されたデータ・ソースが使用されることを意味します。 JDeveloperでは、これらの接続が接続ナビゲータで定義した接続に基づいて自動的に構成されます。
  2. したがって、XSQLのコンポーネント・パレットでは、 connection="scott"XSQLConfig.xmlファイルに直接定義した名前付き接続の使用時に必要)のかわりに、connection="jdbc/scottDS"のような構文で選択したデータ・ソースのJNDI名を使用して、必要に応じてページに接続属性が追加されます。

<connection-manager>/<factory>をXSQLのデフォルト(XSQLConfig.xml ベースの名前付き接続を使用)に変更する手順は、 XSQLConfig.xml ファイル内のコメントにあります。 この手順に従うと、元のメカニズムを引き続き使用できます。

リリース10.1.3.0.0にASKメッセージの翻訳ファイルがない(Bug#4919605)

リリース10.1.3.0.0のAskコンポーネントでサポートされているのは、en_US ロケールのみです。 そのため、コンテンツを表示する特定のエンド・ユーザーには、英語のみで表示されます。 以降のリリースでは、他のロケールがサポートされます。

Oracle Corporation
World Headquarters
500 Oracle Parkway
Redwood Shores, CA 94065, USA
http://www.oracle.com

Worldwide Inquiries:
1-800-ORACLE1
FAX 650.506.7200

Copyright © 2006, Oracle Corporation. All Rights Reserved.