ヘッダーをスキップ
Oracle Developer Suiteリリース・ノート
10gリリース2(10.1.2)for Solaris Operating System (SPARC), Microsoft Windows, and Linux x86
B25106-03
  目次
目次

戻る
戻る
 
次へ
次へ
 

6 Oracle JDeveloper 10g

この章では、Oracle JDeveloper 10g(10.1.2.1.0)に関する問題について説明します。この章の内容は次のとおりです。

6.1 概要

JDeveloperは、Java、XMLおよびSQLの最新の業界標準を使用してアプリケーションとWebサービスを構築するための統合開発環境(IDE)です。Oracle JDeveloperでは、アプリケーションのモデル化、コーディング、デバッグ、テスト、プロファイリング、チューニングおよびデプロイのための統合機能を備えた完全な開発ライフ・サイクルをサポートしています。ビジュアルで宣言的なアプローチと革新的なOracle Application Development Framework(Oracle ADF)により、アプリケーション開発が簡略化され、定常的なコーディング作業量が減ります。このことにより、開発者は比類のない生産性を実現でき、好みのテクノロジ・スタックの選択も可能になります。Oracle JDeveloperには、開発環境への機能追加とカスタマイズを行うためのExtension SDKが付属しています。Oracle JDeveloperの詳細および最新の情報は、Oracle Technology Network(OTN)にあるJDeveloperのホームページ(http://www.oracle.com/technology/products/jdev/)を参照してください。

このサイトの「Oracle JDeveloper 10g Release Notes Addendum」には、このリリース・ノートの発行時点で入手できなかった情報が記載されています。

6.2 JDeveloper 10.1.2.1.0の新機能

JDeveloper 10.1.2.1.0は主にメンテナンス・リリースですが、新機能もいくつか追加されています。

6.2.1 オフライン・データベース・オブジェクト

オフライン・データベース・オブジェクトのインポート・ウィザードでは、スキーマの選択が最後の手順となりました。これは、TopLinkプロジェクトのオンライン・スキーマ名をスキーマのデフォルトに設定できるようにするためです。

6.2.2 Strutsページ・フロー・ダイアグラム

  • 動的プロジェクトの大規模なダイアグラムのレンダリングおよび全般的なレスポンス速度が改善されました。

  • Strutsエディタがフォーカスを毎回取得するのではなく、プロジェクトのコンパイル時または開発者がコンテキスト・メニューから検証を明示的に選択したときにXMLをDTDに照らして検証することにより、Struts編集のパフォーマンスがさらに改善されています。

  • 接頭辞「/」(スラッシュ)が付いていないアクションを作成できるようになりました。つまり、先頭に「/」文字が付いていないページ名を指定することにより、ブラウザから直接アクセスできないプライベート・アクションを作成できます。逆に、ブラウザからアクションに直接アクセスできるようにする場合は、名前の先頭に「/」を付けます。

6.2.3 ビジネス・コンポーネント・ウィザードでの改善点

Fast Lane Reader設計パターンの実装が簡単にできるように、ビジネス・コンポーネント・ウィザードとビュー・オブジェクト・ウィザードが更新されました。新しいビュー・オブジェクトを作成する際に、読取り専用のSQL問合せによって移入されたデータを持つビュー・オブジェクトを作成できるようになりました。このモデルでは、すべてのデータがビュー・キャッシュに格納されるため、問合せが繰り返される場合にパフォーマンスが非常に向上します。

6.2.4 ADF Business Componentsのパフォーマンスの改善

このリリースでは、ADF Business Componentsのパフォーマンスが大幅に向上しています。コードやアーキテクチャに対して変更を加える必要はありません。このリリースを使用してアプリケーションを再コンパイルし、デプロイして実行するだけです。使用するアプリケーションのタイプによっては、パフォーマンスが30%も改善される場合があります。

6.2.5 データ・バインディング

Bug 3077519「BLANK NEW ROW PROBLEM IS BACK FOR WEB APPS」が修正されたため、データ・バインディングの設計時が多少変わりました。JDeveloper 9.0.5のこの不具合では、ユーザーがボタンをクリックして空白のフォームに新しい行を追加した後、ブラウザの「戻る」ボタンをクリックして参照フォームに戻ると、空白行が参照フォームに挿入されます。

ADF Business ComponentsにバインドされているWebページの場合、この動作は変更されました。つまり、デフォルトで、ユーザーが「戻る」ボタンをクリックしても、空白行は表示されません。以前の動作がページで必要な場合は、次の手順を実行します。

  • エディタでWebページまたはStrutsページ・フロー・ダイアグラムを開いた状態で、構造ペインの「UIモデル」タブに移動します。

  • 作成操作のアクション・バインディングを編集します。

  • ドロップダウン・リストで、デフォルトで表示されるCreateアクションのかわりにCreateInsertアクションを選択します。

6.2.6 埋込みOC4J

JDeveloper 10.1.2には、埋込みOC4Jバージョン10.1.2が組み込まれています。OC4J 10.1.2の拡張機能およびバグ修正については、OC4Jのリリース・ノートを参照してください。

6.2.7 JDBCドライバ

JDeveloper 10.1.2は、Oracle Application Server 10.1.2のOracle JDBCドライバとともに配布されています。

6.2.8 Oracle Application Server 10.1.2のADFランタイム

Oracle Application Server 10.1.2には、Oracle ADFランタイム・ライブラリが組み込まれています。つまり、ADFアプリケーションをOracle Application Server 10.1.2にデプロイする場合、ADF Runtime Installerを実行してADFライブラリをアプリケーション・サーバーにインストールする必要はありません。

6.3 移行の問題

この項では、JDeveloperアプリケーションの移行について説明します。

6.3.1 JDeveloper 9.0.3のPL/SQL Webサービスの再生成時にコンパイル・エラーが発生する

(3023311)JDeveloper 9.0.3のプロジェクトを開き、そのプロジェクト内でPL/SQL Webサービスを再生成しようとすると、それ以降コンパイルできない状態のままになります。

対処方法: サービスを再生成する前に、サービス・パッケージに直接関連するJavaファイルおよび該当サービスで使用するオブジェクト・タイプをプロジェクトからすべて削除します。

6.3.2 移行されたWebサービスを再生成すると不完全なデプロイメント・プロファイルになる場合がある

(3506154)以前のバージョンのJDeveloperから移行されたWebサービスを再生成する場合、再生成されたインタフェースがデプロイメント・プロファイルから消失し、それが原因でデプロイされたサービスがアクセス不能になる場合があります。

対処方法:

「デプロイメント・プロファイル」ダイアログを使用し、消失したファイルを手動でインクルードした後、サービスを再デプロイします。

6.3.3 WS-Iテスト・ツールの場所を再入力する必要がある

(3535897)JDeveloper 10gプレビューからユーザー設定を移行する場合、WS-Iテスト・ツールの場所は正しいように見えます。ただし、アナライザ・コードを正しく機能させるには、その場所を再入力し、非表示フィールドに移入する必要があります。

ツール」→「設定」を選択し、「WS-Iテスト・ツール」を選択します。フォルダを参照するか、場所を入力して、テスト・ツールのホームの場所を再入力します。

6.3.4 Oracle9i JDeveloperで作成されたStrutsアプリケーションのOracle JDeveloper 10g Strutsアプリケーションへの移行

JDeveloperまたは他のツールでは、Oracle JDeveloper 10gリリースに移行した後、正しくコンパイルできない場合があります。これは、該当アプリケーションがOracle JDeveloper 10gに正常に移行できた場合にも発生することがあります。

JDeveloper 10gに移行した後Strutsアプリケーションが正しくコンパイルできない場合は、移行プロセスでstruts.jarファイルがWEB-INF/libディレクトリから間違って削除されている可能性があります。

移行後のStrutsコンパイル・エラーを修正するには:

  • 正しいstruts.jarファイルを、JDeveloper_installation_directory/jakarta-struts/libディレクトリからプロジェクトのWEB-INF/libディレクトリにコピーします。

6.3.5 ADFイテレータ・バインディングへのバインド時にビュー・オブジェクト行セットのデフォルト・イテレータが先頭行に進む

JDeveloper 10gの新しいADFイテレータ・バインディングを使用すると、バインド先のイテレータが行セットの先頭行に進みます。これは、該当する行のUIレンダリングにとっては最適な動作です。この動作は、ADFイテレータ・バインディングがJSTLのような標準的なJSPタグ・ライブラリと連動して正しく機能するのに必要です。

ただし、この新しい動作が原因で、BC4JアプリケーションをJDeveloper 10gに移行しアプリケーションに新しいADFイテレータ・バインディングを追加すると、既存のアプリケーション・ロジックに問題が発生することがあります。例として、ユーザーが記述したビジネス・ロジックを表す次のようなアプリケーション・モジュール・メソッドを考えてみましょう。

public boolean employeeExists(Number empno) {
  EmpViewImpl eview = getEmpView();
  eview.setWhereClause("empno = :1");
  eview.setWhereClauseParam(0,empno);
  eview.executeQuery();
  /*
   * When an ADF iterator binding is bound to "EmpView" then after
   * the executeQuery() the iterator will advance to sit on the first
   * row of the result -- in this case, the only row in the result --
   * and the eview.hasNext() will return false.
   */
  if (eview.hasNext()) {
    return true;
  }
  else {
    return false;
  }
}
  * MIGRATION CAVEAT
   * ~~~~~~~~~~~~~~~~
   * When no ADF iterator bindings are bound to the "EmpView"
   * view object instance -- more precisely, to the default iterator
   * of its default rowset -- then immediately after executeQuery()
   * the iterator will be at the slot before the first row. Assuming
   * this query retrives a single row, then the eview.hasNext() will
   * be true, since we haven't yet advanced to the first row.
   *

この問題は、行セットの結果をループ処理し、行ごとに操作を実行するように作成されている中間層のビジネス・ロジックで表面化する場合もあります。例としては、各行で一部の数値属性の合計を計算する場合などがありますが、それだけではありません。たとえば、次のようなコードを考えてみましょう。

public Number shoppingCartTotal() {
  ShoppingCartImpl cart = getShoppingCart();
  cart.reset();
  double total = 0;
  /*
   * MIGRATION CAVEAT
   * ~~~~~~~~~~~~~~~~
   * When no ADF iterator bindings are bound to the "ShoppingCart"
   * view object instance, then immediately after the reset() call above
   * the iterator will be at the slot before the first row. The loop
   * below will operate over all N rows in the rowset coded like this.
   *    * When an ADF iterator binding is bound to "ShoppingCart" then after
   * the reset() call, the iterator will advance to sit on the first
   * row of the result. If the loop code is not changed, then it will
   * operate on the 2nd through the Nth rows, missing the first row.
   */
  while (cart.hasNext()) {
    ShoppingCartRowImpl curCartItem = (ShoppingCartRowImpl)cart.next();
    total += curCartItem.getExtendedTotal().doubleValue();
  }
  return total;
}

問題の対処方法としては、次の2つがあります。

  1. 先頭行が存在しているかどうかをテストするだけの場合は、first() APIを使用し、結果がNULLかどうかをテストします。

  2. 行セットに対して反復を実行する場合は、createRowSetIterator() APIを使用し、中間層のビジネス・ロジックで使用するセカンダリ・イテレータを作成します。イテレータをアクティブなまま存在させない場合は、ループが終了したときにイテレータ上でcloseRowSetIterator()を必ずコールしてください。

作成する新しいコードでも、これらの最適な方法を使用します。この2つのアドバイスに従うと、前述の2つのサンプルは次のように書きなおすことができます。

public boolean employeeExists(Number empno) {
  EmpViewImpl eview = getEmpView();
  eview.setWhereClause("empno = :1");
  eview.setWhereClauseParam(0,empno);
  eview.executeQuery();
  /*
   * Using first() instead of hasNext() to test for existence of
   * at least one row in the result since default iterator might be
   * bound to an ADF iterator binding being used in the view layer
   */
  if (eview.first() != null) { /* Using first() instead of hasNext() */
    return true;
  }
  else {
    return false;
  }
}

および

public double shoppingCartTotal() {
  ShoppingCartImpl cart = getShoppingCart();
  /*
   * Using secondary iterator since default iterator
   * might be bound to an ADF iterator binding being used
   * in the view layer
   */
  RowSetIterator cartIter = cart.createRowSetIterator(null);
  double total = 0;
  while (cartIter.hasNext()) {
    ShoppingCartRowImpl curCartItem = (ShoppingCartRowImpl)cartIter.next();
    total += curCartItem.getExtendedTotal().doubleValue();
  }
  cartIter.closeRowSetIterator();
  return total;
}

6.3.6 bc4jhtml.jarを使用するプロジェクトの移行

ADF BCランタイム・アーカイブbc4jhtml.jarは、JDeveloperの今回のリリースで分割されています。移行するプロジェクトがbc4jhtml.jarを使用している場合、クラスパスを更新し、<JDEV_HOME>/BC4J/jlib/bc4jhtml.jar<JDEV_HOME>/BC4J/lib/adfmweb.jarが含まれるように設定します。

6.3.7 Java Web StartおよびJNLPを使用するJClientプロジェクトの移行

JClientアプリケーションがJava Web Startに依存している場合、JDeveloper 9.0.5.2以前のbc4jlibs.earファイルにはjndi.jarが含まれています。JDeveloper 10.1.2以降、このJARファイルは不要です(このファイルは、現在では標準のJDK 1.4拡張機能として利用可能)。このjndi.jarファイルは、9.0.5.x JClientアプリケーションを10.1.2に移行する際、bc4jlibs.earファイルから削除する必要があります。

6.3.8 JClientのカスタム・エラー・ハンドラ・ダイアログの移行

JClientベースのアプリケーションを9.0.3または9.0.4からJDeveloper 10g(9.0.5または10.1.2)にアップグレードするときに、アプリケーションにoracle.jbo.uicli.controls.JUErrorHandlerDlgを拡張しないカスタム・エラー・ダイアログがある場合、それらのカスタム・エラー・ハンドラ・ダイアログは、新しいoracle.adf.model.binding.DCErrorHandlerインタフェースを実装する必要があります。これは、oracle.jbo.uicli.binding.JUErrorHandlerインタフェースの実装でreportException()メソッドの既存の実装に委任することにより実行できます。

6.3.9 EJB: OC4J 9.0.xネイティブCMPマッピングの移行

OC4Jネイティブ(TopLinkではない)CMPマッピングを使用するCMP Entity Beanが含まれるEJBアプリケーションを移行する場合、ユーザーは次の簡単な操作を実行しないと、アプリケーションを10.1.x OC4Jサーバーに再デプロイできません。

CMP Entity Beanを選択し、JDeveloperのナビゲータでそのEJBノードを右クリックした後、「CMPマッピングの編集」を選択します。


注意:

このメニュー項目は、OC4JネイティブCMPマッピングを使用してCMP Entity Beanがマッピングされている場合にのみ表示されます。該当するコンテキスト・メニュー項目が表示されない場合は、OC4Jネイティブ・マッピングを使用してEntity Beanがマッピングされていないため、移行手順を実行する必要はありません。

CMPマッピング・エディタが開いたら、「CMPフィールドのマッピング」ツリー・ノードを選択し、「関連マッピング」タブをクリックして、CMP Entity Beanが関与しているそれぞれの関連にアクセスします。該当するパネルにアクセスするだけで、そのパネルの終了時に新しいデータが保存されます。

CMPマッピング・エディタで、EJBモジュール内のCMP Entity Beanごとにこのプロセスを繰り返します。完了したら、「OK」を選択してマッピング・エディタを終了し、変更内容を適用します。

これらの手順を実行すると、EJBモジュールはOC4J 10.xサーバーにデプロイできる状態になります。

6.3.10 Oracle9i JDeveloper 9.0.4からWebアプリケーションを移行する際の問題点

(3672145)JDeveloperリリース9.0.4からWebアプリケーションをコンパイルしようとすると、次のエラーが発生する場合があります。

/WEB-INF/ojsp-global-include.xml:oracle.xml.parser.v2.XMLParseException: Unexpected text in content of Element 'ojsp-global-include'

この問題を解決するには、/WEB-INF/ojsp-global-include.xmlファイルを編集して次の要素を変更します。

<?xml version="1.0" standalone='yes' ?>

この要素を、次のように変更します。

<?xml version="1.0" standalone='no' ?>

6.3.11 9.0.5.1から10.1.2に移行する際に移行ダイアログが表示される場合がある

(3797912)アプリケーションをOracle JDeveloper 10gリリース9.0.5.1からリリース10.1.2に移行する場合、これらのリリース間でテクノロジ・スタックが変更されていない場合でも、移行ダイアログが開く場合があります。このダイアログは、無視しても問題ありません。

6.3.12 異なる動作をするOracleスタイル・バインド・パラメータ

(3848733)リリース9.0.5.2以前のOracle JDeveloperに含まれるバージョンのJDBCでは、Oracleスタイルのバインド・パラメータに対する厳密なエラー・チェックがサポートされていません。そのため、次のように同名のバインド・パラメータが複数含まれる式が許可されていました。

WHERE SALARY > :1 AND DEPARTMENT = :2 AND MANAGER_ID = :1

前述の式の第1パラメータおよび第3パラメータは「1」という名前になっていますが、これは以前のバージョンのJDBCでは検出されなかったエラーです。

以前のバージョンのJDBCでは、パラメータ名のコロンと数値部分の間のスペースに関するエラーも検出されませんでした。「: 1」(スペースあり)は、有効なOracleスタイルのバインド・パラメータではありませんが、以前のバージョンのJDBCではエラーとして検出されませんでした。

Oracle JDeveloper 10g(10.1.2)に組み込まれているバージョンのJDBCでは、厳密なエラー・チェックがサポートされており、where句や、パラメータにスペースが含まれる前述のような式に対しては例外がスローされます。以前のバージョンのJDeveloperからアプリケーションを移行する場合、一意でないOracleスタイルのJDBCバインド・パラメータを持つ式がそのアプリケーションに含まれているのであれば、その式内で一意になるようにパラメータ名を変更する必要があります。たとえば、前述の式は次のように変更します。

WHERE SALARY > :1 AND DEPARTMENT = :2 AND MANAGER_ID = :3

また、バインド・パラメータ名にスペースを含めず、ViewObject.setWhereClauseParam()およびViewObject.setWhereClauseParams()に対するコールを変更してすべてのパラメータ値を与えるようにする必要があります。たとえば、前述のWHERE句を含むビュー・オブジェクト定義で、次の命令があるとします。

setWhereClauseParams(new Object[]
{
  value1,
  value2
}

この命令を次の命令で置き換える必要があります。

setWhereClauseParams(new Object[]
{
  value1,
  value1,
}

6.3.13 Oracle JDeveloper 10gリリース10.1.2へのEJB CMR関連の移行

(3557211)以前のリリースからリリース10.1.2に移行する場合、CMP EJB Entity BeanがCMR関連を持つときは、それらの関連を更新する必要があります。各関連は、CMPマッピング・エディタで選択するだけで、JDeveloperによって自動的に適宜更新されます。

6.3.14 移行後の9.0.X UIX/BC4J/JSPアプリケーションに利用可能なUIXリソースおよびスタイルがない

(3665125)9.0.X UIX/BC4J/JSPのアプリケーション・プロジェクト一式をJDeveloper 10gに移行し、そのアプリケーションを実行すると、UIXのリソースおよびスタイルが実行時に表示されません。移行プロセスでは、製品の以前のバージョンに関連するオブジェクトおよびファイルが削除されるのみなので、インストール可能な新しいリソースが追加されません。

対処方法:

  1. アプリケーションを移行します。

  2. モデルを再構築し、9.0.Xアプリケーションのプロジェクトを個別に表示して、UIXの最新のリソースおよびスタイルを追加します。

6.4 デプロイの問題

この項では、JDeveloperでのアプリケーションのデプロイに関する問題について説明します。

6.4.1 開かれていないサーブレット2.2 WARファイルから、XSQL Page Processorでページを読み取ることができない

(1552039)XSQLページは、WebLogic 6.1/7.0、JBoss 3.0.4およびTomcat 4.1.12では実行できません。

6.4.2 WebLogicへのデプロイ時の型の非互換

BEA提供のOracleクラスを使用する場合、WebLogicにデプロイされたアプリケーションの中には、型の互換性がないものがあります。これらの問題が発生しないようにするには、サーバーのlibディレクトリにあるclasses12.zipおよびclasses12.jarファイルをjdev_install/jdbc/libディレクトリのclasses12.jarで置き換えます。

6.4.3 WebLogic6.1がXMLファイルの'Windows-1252'エンコーディングを認識できない

WebLogic6.1はXMLファイルのWindows-1252エンコーディングを認識できません。これは、WebLogic6.1のXMLパーサーのバグです。JDeveloperのアプリケーションをWebLogic6.1にデプロイするには、WebLogic6.1が認識するIANAエンコーディングにエンコーディングを変更します。UTF-8エンコーディングの使用をお薦めします。日本語ユーザーはShift_JISを使用する必要があります。

  1. ツール」→「設定」を開きます。

  2. 「環境」パネルで「エンコーディング」フィールドを「UTF-8」に変更します。

  3. OK」をクリックします。

    ここで、新規プロジェクトとアプリケーションを作成します。

6.4.4 Bean型がリモートからローカルに変更された場合にweb.xmlのejb-refが更新されない

(2589997)BC4JセッションFacade結果に対してJSPアプリケーションを作成すると、そのプロジェクトのweb.xmlにejb-refエントリが追加されます。そのFacadeのインタフェース・タイプをローカルからリモートに、またはリモートからローカルに変更する場合は、web.xmlのejb-refエントリを更新する必要があります。たとえば、Bean型をリモートからローカルに変更する場合は、web.xmlの<ejb-ref>セクションのかわりに、適切な<ejb-local-ref>タグを記述する必要があります。

6.4.5 ADF UIXテクノロジ・スコープが設定されているプロジェクトで正しいデプロイメント・プロファイルが表示されない

(3316426)ADF UIXテクノロジ・スコープのみが割り当てられているプロジェクトを操作する場合は、「新規ギャラリ」ダイアログで、フィルタに「プロジェクト・テクノロジ」が設定されたデプロイメント・プロファイルの正しいリストが表示されません。フィルタを「すべてのテクノロジ」に切り換えると、デプロイメント・プロファイルのリストがすべて表示されます。

6.4.6 UIXアプリケーションをWebLogicにデプロイするための追加手順

(3390872)UIXアプリケーションをWebLogicにデプロイする場合は、提供されているドキュメントに加えて、次の追加手順も参考にしてください。

EAR/WARアーカイブ・ファイルを展開する場合は、アーカイブ・コンテンツのターゲット・ディレクトリの名前をアーカイブの名前と同じにする必要があります。たとえば、webapp1.warを含むwebapp1.earを解凍する場合は、ディスク上に次の構造が作成されている必要があります。/webapp1(EARコンテンツ)/webapp1/webapp1/(WARコンテンツ)

アーカイブを展開したら、EARファイル内のapplication.xmlで、WARファイルのかわりに展開したディレクトリを示すように編集する必要があります。

EARファイルとWARファイルを展開したら、これらのファイルを削除して、展開されたファイルのみがアプリケーションの一部となるようにします。

6.4.7 orion-ejb-jar.xml内での永続性マネージャの構成がOracleAS 10.1.2でサポートされない

コンテナ管理の永続性(CMP)Entity BeanをJDeveloper 10.1.2からOracleAS 10.1.2以前のバージョンにデプロイする場合は、orion-ejb-jar.xml内の永続性マネージャの設定を構成することはできません。これらの設定を行うとデプロイ・エラーが発生します。

6.4.8 ADFアプリケーションを起動するとWebsphere 5.1で例外が発生する

(3590864)EARをWebSphere 5.1にデプロイした後、ADF BC4J JSPアプリケーションを起動すると、そのアプリケーションが異常終了し、次のような例外がアプリケーション・サーバー・ログに書き込まれる場合があります。

Exception:
AppDeploymentException: [ADMA0092E: Unexpected exception occurred while preparing
task MapRunAsRolesToUsers. Please check server machines FFDC for more information.]
AppDeploymentException: []
com.ibm.etools.archive.exception.DeploymentDescriptorLoadException:
WEB-INF/web.xml
AppDeploymentException: []
com.ibm.etools.archive.exception.DeploymentDescriptorLoadException:
WEB-INF/web.xml
com.ibm.etools.archive.exception.DeploymentDescriptorLoadException:
WEB-INF/web.xml

この例外を修正するには、アプリケーションのweb.xmlファイルから<filter-mapping>属性を削除します。

6.4.9 外部jazn.xmlとのスタンドアロンOC4Jの使用

スタンドアロンOC4Jを使用して、JAAS認証およびOracle ADF Business Componentsを使用するアプリケーションを実行し、<oc4j_home>/home/configで提供されているjazn.xmlのコピーを使用しない場合、プロパティoracle.security.jazn.configを使用してJVMにjazn.xmlのコピーの場所を渡す必要があります。たとえば、jazn.xmlファイルがディレクトリ/jazn/にある場合、次のコマンドを使用します。

java -Doracle.security.jazn.config=/jazn/jazn.xml -jar oc4j.jar

このコマンドによりサーバーを起動します。

6.4.10 BC4J EJBをベースにしたJClient JNLPアプリケーションをOracle Application Serverにデプロイできない

(4025025)BC4J Session BeanをベースにしたJClient Web StartアプリケーションをOracle Application Serverにデプロイする場合、次のデプロイ・エラーが発生することがあります。

Closing connection to Oc4jDcmServlet
#### DCM command did not complete successfully (-8)
#### HTTP return code was -8
Exit status of DCM servlet client: -8

この問題を修正するには、次の対処方法に従ってください。

  1. JClient Web Startウィザードによって生成されたweb.xmlファイルで、<ejb-ref>要素とその内容を完全に削除します。次にweb.xmlのエントリの例を示します。

    <ejb-ref>
    <ejb-ref-name>ejb/AppModuleBean</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <home>mypackage1.common.ejb.beanmanaged.AppModuleHome</home>
    <remote>mypackage1.common.ejb.beanmanaged.RemoteAppModule</remote>
    <ejb-link>AppModuleBean</ejb-link>
    </ejb-ref>
    
  2. WARデプロイメント・プロファイルで設定されたプロファイルの依存性を削除します。これは次の手順で行います。

    1. WARプロファイル(client_war.deploy)をダブルクリックします。

    2. パネルの左側に表示されたツリーで「プロファイルの依存性」を選択します。

    3. パネルの右側に表示されたツリーで「プロファイルの依存性」を選択解除します。

  3. WARをOracle Application Serverにデプロイし、Web Startを実行します。

6.5 ADF DataAction for Strutsに関する既知の問題

この項では、ADFに関する問題について説明します。

6.5.1 メソッド結果に対するADFバインディングのベスト・プラクティス

ADFベースのStruts Webアプリケーションでは、データ・コントロールから宣言的にメソッドを起動し、その結果のデータをページに表示する場合は、(専用のバインディング・コンテナを持つ)別のDataActionでメソッドを起動し、その結果をDataActionまたはDataPageに転送して表示するようにしてください。メソッドを、その結果にバインドされるイテレータと同じバインディング・コンテナで、メソッド・アクション・バインディングを使用して宣言的に実行しようとすると、問題が発生する場合があります。

6.5.2 DataForwardActionを拡張するデータ・アクションによりデータ・ページが正しく変わらない

(4113412)基本的なADFデータ・アクションをカスタマイズする場合、それらのカスタム・アクション・クラスがoracle.adf.controller.struts.actionsパッケージのDataActionクラスを直接または間接的に拡張する必要があります。一方、ADFデータ・ページのアクションをカスタマイズする場合、その同じパッケージのDataForwardActionクラスを直接または間接的に拡張する必要があります。さらにデータ・ページについては、struts-config.xmlファイルにおけるStrutsアクションのパラメータ属性の値でそのページの名前を記録することによって、JDeveloperがそのアクションをその関連ページに関連付けます。それに対して、データ・ページではないプレーン・データ・アクションでは、パラメータ属性は記録されません。

9.0.5.2および10.1.2では、ユーザーが、正しいDataActionクラスのかわりに、DataForwardActionクラスを不適切に拡張するカスタム・データ・アクション・クラスを誤って作成する場合があります。これは、9.0.5.2では問題はありませんが、10.1.2では、DataActionではなくDataForwardActionを拡張するカスタム・アクション・クラスを持つデータ・アクションには、Strutsページ・フロー・ダイアログラムが各JDeveloperセッションで初めて開かれたときに、望ましくない副作用があります。JDeveloper 10.1.2では、そのアクションによってDataForwardActionが拡張されていることが検出され、それがデータ・ページを意味するとみなします。そして、JDeveloper 10.1.2では、このみなされたデータ・ページには必須のパラメータ属性が欠落していることが検出され、それにparameter="unknown"属性が追加されます。これによって、ダイアグラムのデータ・アクション・ノードがデータ・ページ・ノードに変わるという望ましくない副作用が発生することがあります。

この問題を回避するには、次のようにして、カスタム・データ・アクション・クラスがデータ・ページであるとみなされないようにします。

6.6 ADF Business Componentsに関する問題

この項では、ADF Business Componentsに関する問題について説明します。

6.6.1 ADF Business Componentsでは「ソースパスをスキャンしてプロジェクト・コンテンツを設定」を使用しない

(3508285)ADF Business Componentsでは、JDeveloperのプロジェクト・オプションである「ソースパスをスキャンしてプロジェクト・コンテンツを設定」の動作は保証されません。このリリースでは、プロジェクトにADF Business Componentsが含まれている場合は、このプロジェクト・オプションを使用しないでください。

6.6.2 WebLogic 8.1.2でADF BC4J JSPアプリケーションを実行すると「メソッドはありません」というエラーが表示される

(3739767)WebLogic 8.1.2でADF BC4J JSPアプリケーションを実行すると、次のようなエラー・メッセージが表示されます。

java.lang.NoSuchMethodError:
javax.xml.namespace.QName.(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

このエラー・メッセージが表示されないようにするには、アプリケーションを実行する前に、WebLogicサーバーのクラスパスに次の項目を追加します。

xmlparserv2.jar
adfmweb.jar

6.6.3 バッチ・モードでのビュー・オブジェクト・カスタム・メソッド

(3274140)バッチ・モードで実行する場合は、カスタムのADFビュー・オブジェクト・インタフェースを使用するクライアント・サイドのコードもバッチ・モードで実行する必要があります。その場合は、最初にビュー・オブジェクトをアプリケーション・モジュールのカスタム・メソッドから戻します(このカスタム・インタフェースにキャストします)。そのようにしないと、ClassCastExceptionがスローされることがあります。

6.6.4 LDAPを使用した認証はスタンドアロンOC4Jで機能しない

(3903758)スタンドアロンOC4J(完全なOracle Application Serverのインストールではない)を使用してADF Business Componentsを実行する場合、LDAPを使用して認証または認可のためのID管理を行えません。LDAPを使用してID管理を行うアプリケーションには、次の2つの条件があります。

6.6.5 1対多エンティティ・ビュー・リンク・アクセッサにアクセスするClassCastException

(4113607)JDeveloper 10.1.2より前は、ADF BCランタイムは、エンティティ・レベルで公開されたビュー・リンク・アクセッサの戻り値のデータ型がRowIteratorであると誤ってハードコードされていました。これによって、公開されたビュー・リンクが1対1リンクであった場合に問題が発生しました。このバグ(3839762)は10.1.2で修正されましたが、10.1.2ビルド1811が出荷された後に、このバグ修正によって新しい問題が明らかになりました。その問題は、ビュー・リンクのソース・タイプと宛先タイプが誤って逆になるという設計時バグです。この設計時バグによって、エンティティのXMLディスクリプタにビュー・リンク・アクセッサのデータ型が書き込まれます。10.1.2より前は、RowIteratorであると想定してハードコードされたとき、XMLで誤ったデータ型は、実行時にデータ型に依存しないので、重大ではありませんでした。JDeveloper 10.1.2.1.0ではXMLベースの<ViewLinkAccessor>行タイプ情報を使用するため、データ型の不一致によってこの新しいClassCastExceptionが発生します。

たとえば、Employeesというアクセッサ名でDept EOレベルのDeptViewとEmpViewとの間のWorksInDeptLinkビュー・リンクを公開する場合、正しくないXML SnippetがDept.xmlファイルに書き込まれます。

<!-- In Dept.xml entity XML file -->
   :
  <ViewLinkAccessor
      Name="Employees"
      ViewLink="test.mypackage.WorksInDeptLink"
      ViewLinkEnd="test.mypackage.WorksInDeptLink.EmpView"
      ViewLinkOtherEnd="test.mypackage.WorksInDeptLink.DeptView1"
      Type="oracle.jbo.Row"
      IsUpdateable="false" >
   </ViewLinkAccessor>

DeptView VOがカスタム行クラスを公開する場合、それが反映され、次のようになります。

<!-- In Dept.xml entity XML file -->
   :
   <ViewLinkAccessor
      Name="Employees"
      ViewLink="test.mypackage.WorksInDeptLink"
      ViewLinkEnd="test.mypackage.WorksInDeptLink.EmpView"
      ViewLinkOtherEnd="test.mypackage.WorksInDeptLink.DeptView1"
      Type="test.mypackage.DeptViewRowImpl"
      IsUpdateable="false" >
   </ViewLinkAccessor>

generic oracle.jbo.Rowも、より具体的なtest.mypackage.DeptViewRowImplも、このアクセッサの戻り値のデータ型には適切でありません。この問題がメンテナンス・リリースで修正されるまでの対処方法は、JDeveloperの外部でDept.xmlファイルを更新し、ビュー・リンク・アクセッサの適切なデータ型を反映することです。前述の例では、次のようにデータ型をoracle.jbo.RowIteratorに変更します。

<ViewLinkAccessor
      Name="Employees"
      ViewLink="test.mypackage.WorksInDeptLink"
      ViewLinkEnd="test.mypackage.WorksInDeptLink.EmpView"
      ViewLinkOtherEnd="test.mypackage.WorksInDeptLink.DeptView1"
      Type="oracle.jbo.RowIterator"
      IsUpdateable="false" >
  </ViewLinkAccessor>

注意:

ビュー・リンク・エディタでビュー・リンクを再度変更した場合、ウィザードが不正なデータ型の値を再び書き込んだ後で、この対処方法の再適用が必要になることがあります。

6.6.6 19個を超えるトップレベル・アプリケーション・モジュール・インスタンスを1つのアプリケーションで使用しない

Webアプリケーションの場合、トップレベルの各アプリケーション・モジュールは、セッションCookieを使用してアプリケーションの安定性を高め(フェイルオーバーを使用)、状態の管理に役立ています。ADFもそれ自体のCookieを追加します。Microsoft Internet Explorerでは、その制限により、1つのホストごとに20個を超えるCookieは受け付けません。したがって、アプリケーションがMicrosoft Internet Explorerを使用してアクセスされる可能性があり、フェイルオーバーを無効にしていない場合、1つのクライアント・インスタンスに19個を超えるトップレベル・アプリケーション・モジュール・インスタンスは使用しないでください。必要な追加のアプリケーション・モジュール・インスタンスは、その19個のうちの1つの定義にネストする必要があります。1つのクライアント・インスタンスで19個を超えるトップレベル・アプリケーション・モジュール・インスタンスを使用すると、Microsoft Internet Explorerでは予期しない動作になることがあります。

6.7 ADF UIXに関する問題

この項では、ADF UIXに関する問題について説明します。

6.7.1 サード・パーティのポップアップ・ブロッカおよびツールバーがADF UIXを妨害することがある

(2900583)特定のADF UIXコンポーネント(日付の選択、値リストなど)では、外部のポップアップ・ウィンドウを使用して、ユーザーが別のページに移動することなく値を選択できるようになっています。しかし、サード・パーティのツールバーの中には、これらのウィンドウの使用を許可せず、HTMLのようにベース・ページに戻って対話できないものがあります。現時点でのこの問題の唯一の対処方法としては、UIXコンテンツを含むサイトに対してポップアップ・ブロッキングを無効にします。

6.7.2 Javascriptを圧縮するとADF UIXに問題が発生することがある

UIXをホストしているサーバーでパフォーマンスを最適化するオプションとしてJavaScriptファイルの圧縮を有効にしている場合、Microsoft Internet Explorerの不具合により、ADF UIXがJavaScriptライブラリをロードするルーチンが正常に機能しない場合があります。ADF UIXではこの最適化はデフォルトで実行されておらず、一部のサーブレット・コンテナまたはOracleのWeb Cacheテクノロジで構成できます。この問題を回避するには、UIXアプリケーションによってロードされるJavaScriptライブラリを圧縮しないようにしてください。

この問題は、他のブラウザには影響しません。

6.7.3 挿入するコンテキスト・メニューからUITテンプレートを使用できない

(3038299)特定の条件下では、プロジェクトの.uitテンプレートの中には、UIXページに挿入するコンテキスト・メニューに表示されないものがあります。「すべて保存」操作を実行すると、プロジェクトのすべてのテンプレートが使用可能になります。

6.7.4 イメージが別のドライブに保存されていると、UIX Imageコンポーネントのソース属性を設定できない

(3458363)UIX Imageコンポーネントのソース属性を設定するときに、選択したイメージがhtml_rootディレクトリ以外の場所に保存されていたり、JDeveloperがインストールされているドライブとは異なるドライブに保存されていると、html_rootディレクトリにファイルをコピーするオプションの操作は失敗します。この問題を回避するには、イメージ・ファイルをファイル・システムに手動で移動またはコピーします。

6.7.5 UIXプレビューにおけるライブ・データ

このリリースのUIXプレビューでは、ADFデータ・コントロールを使用してバインドされたページにライブ・データを表示できません。

6.8 Apache Strutsの制限事項

この項では、JDeveloperおよびApache Strutsでの制限事項について説明します。

6.8.1 単一プロジェクト内の複数のStrutsアプリケーション・モジュールはサポートされない

このリリースのStrutsダイアグラミングでは、1つのワークスペース・プロジェクトでサポートできるStruts Diagramは1つだけです。複数のStruts構成ファイルは、個別のプロジェクトに振り分ける必要があります。複数のStruts構成ファイルによるアプリケーションの作成方法は、次のURLにある、OTNのJDeveloper How To Documentsのページを参照してください。

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

6.8.2 Tilesベース・アプリケーションの部分的サポート

JDeveloper 10gでは、Tileを使用したStrutsアプリケーションの開発が可能ですが、そのようなアプリケーションでページ・フロー・ダイアグラマ・ビューを使用することはできません。Struts構成ファイルの直接編集、Strutsコンソール・エディタの使用および構造ペインとプロパティ・インスペクタの利用は、Tileベースのアプリケーションの開発時にも可能です。

6.8.3 Web.xmlの<welcome-file>エントリ

(3423938)Actionを(ページ・フロー・ダイアグラムのコンテキスト・メニューを使用して)Struts Pageフローのデフォルトの開始アクションとして定義すると、プロジェクト・プロパティが更新され、指定したアクションがデフォルトの実行ターゲットになります。また開始アクションがForward Actionの場合は、web.xmlの<welcome-files>コレクションが、指定されたページの新しい<welcome-file>エントリで更新されます。このエントリを必要に応じてweb.xmlで修正し、基本のActionForwardのページではなく、Strutsアクションにリダイレクトするページを使用できます。また、同じデフォルトの開始アクションをプロジェクトで数回設定する場合は、複数のエントリをwelcomeファイル・リストに追加することもできます。

6.8.4 JSPページにHTMLフォームを使用する場合は、action属性を編集する必要がある

(3452660)StrutsベースのWebページに挿入するコンポーネントに、入力フィールドなどのフォーム要素が必要な場合、JDeveloperでは、作成されるフォーム内にコンポーネントを挿入するように求められます。フォーム要素は、Requestオブジェクトに値を渡すために実行時に使用されるもので、次のようなターゲットのStrutsアクションを指定するためのプレースホルダ・テキストが含まれています。

<html:form action="/Handle_This_Form.do">

このaction属性を編集して、ページ・フローがフォーム入力を処理するために使用するアクションの名前を指定する必要があります。たとえば、アクションの名前がMyActionNameである場合は、/Handle_This_form.doを/MyActionName.doに変更します。

6.8.5 フォワード・ラベルがData Page/Data Actionと重なると、メソッドをData Page/Data Actionにドラッグ・アンド・ドロップできない

(3443358)Strutsページ・フロー・モデラーでの作業中に、フォワードを表すテキスト・ラベルがData Page/Data Actionと重なると、メソッドをデータ・コントロール・パレットからData Page/Data Actionにうまくドラッグ・アンド・ドロップできない場合があります。この場合は、フォワード・ラベルをData Page/Data Actionと重ならない位置に移動すると、メソッドをData Page/Data Actionにドラッグ・アンド・ドロップできます。

6.8.6 コンソールに「ディレクトリWEB-INFが存在しません。」メッセージが表示される

(3976907)簡単なStrutsアプリケーションを設計または実行しているときに、コンソールに次のエラー・メッセージが表示される場合があります。

ディレクトリC:\WEB-INFが存在しません。

このメッセージは無視してもかまいません。

6.9 データ・バインディングの問題

この項では、データ・バインディングに関する問題について説明します。

6.9.1 データのフェッチ時またはクライアント・サイドのキャッシュの追加時におけるパフォーマンス問題の回避

(3278854)変更されたrangeSizeでデータをフェッチしたり、クライアント・サイドのキャッシュを後から付加する際のパフォーマンス問題を回避するには、同じアプリケーションやアプリケーション・フローの複数のバインディング・コンテナにおいて、イテレータ・バインディングに関連付けられたRowSetIteratorのすべての使用に対し、同じrangeSizeを設定してください。

6.9.2 Beanアクセッサによって返されるスカラー属性

(3389123)Beanアクセッサによって返されるスカラー属性は、ADFデータ・バインディングでは「readonly」とマークされます。このリリースでは、これらの値の更新サポートは実装されていません。

6.9.3 スカラー属性を持たないBeanをレンダリングしようとすると、NoDefExeceptionがスローされる

(3475505)<adf:render>または<adf:inputrender>タグを使用して、スカラー属性を持たないBeanをレンダリングしようとすると、oracle.jbo.NoDefExceptionがスローされます。

6.9.4 oracle.jbo.domain.Arrayデータ型

(3412750)oracle.jbo.domain.Arrayデータ型は、JSPのカスタムInput/Valueレンダラや、JClientのJUArrayComboBoxを使用してレンダリングできます。将来のリリースでは、これらのArrayオブジェクトはコレクション型として間接参照したり処理できるようになるため、そのノードを開いたり、Arrayコンテンツ(スカラーを持たない)をデータ・バインディング・パレットからアクセスして削除できるようになります。

6.9.5 カスタムAMメソッドでRowset戻り型の型を設定できない

(3323420)カスタム・アプリケーション・モジュール(AM)メソッドのコレクションの戻り型の型(Beanクラス)は設定できません。他のモデルでは、XMLファイルを編集して、コレクションのBeanクラスを設定できます。ただし、BC4Jモデルではこれらの操作ができません。この問題を解決するには、設計時にメタデータを必要としない動的なウィジェットを使用します。

6.9.6 2番目のRSIをマスターに使用していると、ディテール行が返されない

(3507403)ビュー・リンクのマスター/ディテールがページから削除され、マスター・ビュー・オブジェクトのRSINameがNULL以外に変更された場合、ディテールはマスターとアクティブに調整されません。これは、削除されたディテールがマスター・ビュー・オブジェクトのデフォルトのRowSetIterator(指定のRSIでなはい)にバインドされているためです。この問題を回避するには、マスターViewObjectのiteratorBindingのRSINameを編集または変更しないでください。NULLのままで使用してください。

6.9.7 .cpxファイル内のDataControlのIDは一意にする

(3539053)クライアント・プロジェクトで複数のビジネス・サービスを使用する場合、各データ・コントロールのIDは.cpxファイル内で一意である必要があります。データ・コントロール・パレットを使用してドキュメントを設計する場合、データ・コントロール参照は、一意のIDで.cpxファイルに追加されます。実行時のエラーを回避するため、.cpxファイルでデータ・コントロールのIdプロパティを(プロパティ・インスペクタで)編集して、同じ名前を使用しないようにしてください。

6.9.8 読取り専用ビュー・オブジェクトの最初に計算された属性が一時属性に戻る

(4081647)JDeveloper 10.1.2のビュー・オブジェクト・ウィザードの最初のパネルにある「読取り専用アクセス」ラジオ・グループを選択して読取り専用ビュー・オブジェクトを作成する場合、次に表示されるパネルでSQL問合せを入力した後、ウィザードを続行(「次へ >」を選択)し、「属性」パネルが表示されると、最初の属性の「問合せで選択済」プロパティが誤って「False」に設定されます。これにより、問合せの最初のSELECTリスト列から移入されるSQL導出属性が、意図しない一時属性に変更されます。この問題には、次の2つの簡単な対処方法があります。

  1. ビュー・オブジェクト・ウィザードで、「終了」をクリックしてから「属性」ページに進みます。

  2. 最初の属性の「問合せで選択済」プロパティを「True」に戻します。

6.10 JClientに関する問題

この項では、JClientに関する問題について説明します。

6.10.1 JClientクライアントではツールチップ・テキストが使用されない

(3442568)JClientクライアントでは、基本のエンティティ・オブジェクト属性またはビュー・オブジェクト属性に入力されたツールチップ・テキストは無視されます。この問題を回避するには、クライアント・コードにツールチップ・テキストを設定します。次の例に、Deptno属性にツールチップ・テキストを設定する方法を示します。

mDeptno.setToolTipText(panelBinding.findCtrlValueBinding("Deptno").getTooltip());

6.10.2 JClientコントロールで、設計時のビジネス・コンポーネントのコントロール・ヒントが無視される

(3405193)エンティティ・オブジェクト・エディタやビュー・オブジェクト・エディタでビジネス・コンポーネント属性に設定した表示の幅と高さは、Javaビジュアル・エディタでコントロールをレンダリングする際に使用されません。

6.10.3 コレクションにバインドされたJClientのコントロールが、Javaビジュアル・エディタに表示されない

(3379812)データ・コントロール・パレットからJClientパネルやフォームに、コレクションにバインドするコントロール(表、ツリー、リスト、グラフなど)を挿入すると、そのコントロールの幅と高さは0に設定されます。幅と高さのサイズが0では、ビジュアル・エディタでコントロールのサイズを変更できません。サイズを変更できるようにコントロールを表示するには、構造ウィンドウでコントロールを選択し、プロパティ・インスペクタでサイズ・プロパティを編集します。

6.10.4 JClientでコミットできる行が作成されない

JDeveloper 9.0.5.xからは、JClientアプリケーションで作成する新規行は、TEMPORARYとして初期化され、検証やポストは行われません。検証やポストを行うには、ユーザーが行を編集するか、setNewRowState()をコールして行の状態をNEWにする必要があります(次の説明を参照)。この変更を行ったのは、スプレッドシートのように、Java UIアプリケーションの一般的な動作を反映させるためです。これにより、一連の行を事前に作成および挿入できるので、アプリケーションではユーザーが入力した行を検証、ポストおよびコミットするだけで済みます。

ただし、この動作により、行を完全に、ポストできる状態として作成する必要があるJClientアプリケーションがトランザクション・コミットの間無視される場合があります。新しい行の状態をNEWに設定し、9.0.5より前のJClientの動作をシミュレートするには、その行の状態に遷移するコードを作成する必要があります。これには、次のようにいくつかの方法があります。

  1. ViewRowImplサブクラスのsetNewRowState()コールをオーバーライドして無視します。

  2. デフォルトのnavbarアクションをオーバーライドして作成し、superの後に、getIteratorBinding().getCurrentRow().setNewRowState(Row.STATUS_NEW)を使用して、イテレータに現在の行を取得し、新しい行の状態をNEWに戻します。

  3. カスタム・アクションで実行されるイベントを「作成」または「新規」ボタンに実装し、コードの該当するRowSetIteratorでcreateRow()/insertRow()をコールします。

6.10.5 IE 5.5でJava Web Startが起動しない

デフォルトのブラウザがInternet Explorerの場合、Java Web StartでJSPを起動するのではなく、JSPをダウンロードするように求められます。これは、Internet Explorerバージョン6以前の既知の問題です。この問題を解決するには、静的JNLPファイルを作成するか、JDeveloperツールの設定を使用して別のブラウザを起動します。JClient Java Web Startウィザードでは、静的JNLPファイルを生成できるので、これを変更して、JNLP定義を含めることができます。または、動的JNLPを使用し、使用するキャラクタ・セットが英語である場合は、Local.jspファイルを編集して、次のようにファイルのページ・ディレクティブにあるcharsetエンコーディング属性を削除します。

<%@ page contentType="application/x-java-jnlp-file" %>

6.11 TopLinkに関する問題

この項では、JDeveloperおよびTopLinkに関する問題について説明します。

6.11.1 Mapping Editorでの「カスタム問合せ」タブの使用

TopLink Mappings Editorで「カスタム問合せ」タブを使用すると、TopLinkディスクリプタの挿入、更新、削除、読取りまたはすべて読取りの各アクションに使用するカスタムSQLを定義できます。たとえば、デフォルトのTopLink readObject関数をカスタム・ストアド・プロシージャに置き換えるには、カスタムSQL文字列を追加して、「カスタム問合せ」タブの「読取り」タブで置換コードを実装します。

6.11.2 TopLink Mapping Workbenchからのプロジェクトのインポート

OracleAS TopLink Mapping Workbench 9.0.4.xプロジェクト(.mwp)をOracle JDeveloper 10gにインポートするには、次の手順を使用してください。

この手順を実行する前に、オリジナルのMapping Workbenchプロジェクトのバックアップ・コピーを必ず作成してください。

Mapping Workbenchのプロジェクトをインポートする手順は次のとおりです

  1. JDeveloper TopLink対応プロジェクトを新規作成します。

  2. このプロジェクトに、オフラインのデータベース・オブジェクトを作成します。次のメソッドのいずれかを使用して、(Mapping Workbenchプロジェクトの\mw\tableディレクトリでの指定に従って)必要なデータベース表を作成します。

  3. Mapping Workbenchプロジェクトの表が、稼動中のデータベースからインポートされたものである場合は、その表をJDeveloperプロジェクトにインポートします。

    表がMapping Workbenchプロジェクトで作成され、稼動中のデータベースに存在しないものである場合は、各データベース表を手動で作成します。


    注意:

    JDeveloperの表名、列名、外部キー制約がそれぞれ、Mapping Workbenchで対応する表名、フィールド名、参照名と同一であることを確認してください。この名前が同一でない場合、JDeveloperでは、マッピング情報が正しくインポートされないことがあります。

  4. JDeveloperプロジェクトを閉じます。

  5. 元のMapping Workbenchプロジェクトから、次のファイルとディレクトリをコピーします。

    表6-1 コピーするMapping Workbenchファイルとディレクトリ

    Mapping Workbenchプロジェクトからコピーする要素 JDeveloper内での配置先

    <file name>.mwp

    このファイル名をtoplink_mappings.mwpに変更し、JDeveloperの<project name>ディレクトリに置きます。

    descriptorディレクトリ

    <project name>/descriptor

    Javaのソース・ファイルとディレクトリの構造

    <project name>/src

    EJB 2.0 CMPプロジェクトの場合: ejb-jar.xml

    <project name>/META-INF


  6. テキスト・エディタでtoplink_mappings.mwpファイルを開き、Schema.Tableについて次の変更を行います。

    1. プロジェクトの<name>要素の変更

    2. プロジェクトの<name>要素をtoplink_mappingsに変更します。

    3. 各データベース表の<name>要素を変換します。

      <database-table>要素には、各データベース表が<name>要素で列挙されます。この<name>には、カタログ、スキーマおよび表の名前が含まれる場合があります。それぞれの表を変更して、スキーマと表の名前だけが含まれるようにする必要があります。

      次の表は、いくつかの変換例を示しています。

      表6-2 データベース表の要素の変換例

      データベース表の<name>要素 <name>要素の変換結果

      <name>Catalog.Schema.Table</name>

      <name>Schema.Table</name>

      <name>Schema.Table</name>

      変換不要

      <name>Table</name>

      <name>Schema.Table</name>


    4. テキスト・エディタで各ディスクリプタの<projectname>/descriptor/<descriptor name>.xmlファイルを開き、次のように変更します。

    5. 各データベース表のディスクリプタの表要素を変換します。

    6. JDeveloperプロジェクトを開きなおして、次のいずれかの方法で、プロジェクトにソース・ファイルを追加します。

      toplink_mappings.mwpファイルで変更した<name>に対して、各ディスクリプタの<project name>/descriptor/<descriptor name>.xmlファイルの次の要素で同一の名前変更を行う必要があります。

      <field-table>
      <primary-table>
      <associated-table>
      <reference-table>
      <reference-name>
      <relation-table>
      <sequencing-policy-table>
      <source-table>
      <target-table>
      
      
  7. 「プロジェクト・プロパティ」ダイアログで「ソースパスをスキャンしてプロジェクト・コンテンツを設定」オプションを選択します。これによって、動的なソース・パスにソース・ファイルが追加されます。

  8. 「プロジェクト」→「プロジェクトに追加」を選択して、<project name>/srcフォルダのコンテンツを追加します。これにより、プロジェクトにソース・ファイルが直接追加されます。EJBプロジェクトの場合、「ファイル」→「インポート」→「EJBデプロイメント・ディスクリプタ・ファイル」を選択します。ウィザードを使用して、<project name>/META-INF/ejb-jar.xmlファイルと/srcファイルをインポートします。

6.11.3 作業ユニットではオブジェクトの主キー属性を変更できない

(3376332)作業ユニットでオブジェクトの主キー属性を変更できません。これは、サポートされていない操作であり、例外やデータベースの障害などの予期しない動作を引き起こします。

一意制約を持つオブジェクトのインスタンスを他のオブジェクトと置き換えるには、作業ユニットのsetShouldPerformDeletesFirstメソッドを使用します。詳細は、『Oracle Application Server TopLinkアプリケーション開発者ガイド』を参照してください。

6.11.4 TopLinkを使用してCMPをデプロイするにはorion-ejb-jar.xmlが必要

(3492309)TopLinkを使用してEJB 2.0 CMPプロジェクトをデプロイするには、orion-ejb-jar.xmlファイルが必要です。プロジェクトにorion-ejb-jar.xmlファイルがない場合は、プロジェクトの任意のCMP EJBのTopLinkマッピングをクリックすると、次の例に示すように、基本的なorion-ejb-jar.xmlファイルが作成されます。CMP EJBの「TopLinkマッピング」タブをクリックすると、永続性マネージャがTopLinkとして設定されます。

TopLinkテクノロジが選択されたプロジェクトに新しいクラス(.java)をインポートし、その後で、構造ペインのTopLinkノードで「ディスクリプタを作成」ボタンを選択してこれらのクラスをマッピングしようとすると、oracle.toplink.workbench.external.meta.ExternalClassNotFoundExceptionエラーが発生します。このエラーを回避するには、初めてマッピングする前に、インポートしたクラスを1回コンパイルします。

orion-ejb-jar.xmlの各EJB CMPに、<PM-name="toplink">属性エントリが設定されていることを確認してください。

この手順を使用して、<PM-name="toplink">属性エントリを作成することもできます。

  1. 「新規ギャラリ」ダイアログから「デプロイメント・ディスクリプタ」→「orion-ejb-jar.xml」を選択して、最小のorion-ejb-jar.xmlを作成します。

  2. アプリケーション・ナビゲータで「TopLink Mappings」ノードをクリックします。

  3. 「TopLink Mapping構造」ペインで各CMP EJBをクリックします。この操作により、TopLink Mappings Editorが起動し、<PM-name="toplink">属性エントリが各CMP EJBの<entity-deployment>タグに追加されます。

6.11.5 テクノロジ・スコープにTopLinkが設定されたプロジェクトでクラスをマッピングする際に例外が発生する

(3530302)TopLinkテクノロジが選択されたプロジェクトに新しいクラス(.javaファイル)をインポートし、その後で「TopLink構造」ペインの「ディスクリプタを作成」ボタンをクリックしてこれらのクラスをマッピングしようとすると、oracle.toplink.workbench.external.meta.ExternalClassNotFoundExceptionエラーが発生します。このエラーを回避するには、初めてマッピングする前に、インポートしたクラスを1回コンパイルします。

6.11.6 コード・エディタで「TopLink Mappings」タブを使用できない

(2986395)コード・エディタでTopLinkデプロイメント・ディスクリプタを追加した後、「TopLink Mappings」タブがコード・エディタに表示されない場合があります。その場合は、コード・エディタをいったん閉じてから開きなおすと、「TopLink Mappings」タブが表示されます。

6.11.7 .JAVAファイルを変更した後、TopLinkディスクリプタが失われる

(3733058)表からJavaオブジェクト(およびTopLinkディスクリプタ)を作成した後、.javaファイルを不適切な構文(たとえば、private Stri)で変更してJDeveloperを閉じると、JDeveloperを再起動したときに、変更した.javaファイルのTopLinkディスクリプタが失われます。

6.11.8 TopLink Mappings Editorにアクセッサ(ゲッターおよびセッター)がメソッドとして表示されない

(3633296)TopLink Mappings Editorにアクセッサをメソッドとして表示するには、Mappings Editorを終了し、JDeveloperプロジェクトを保存してから、Mappings Editorを再起動します。これで、アクセッサはメソッドとして表示されます。

6.11.9 「TopLink Mapping構造」ウィンドウが正しく更新されない

(3747403および3773050)マッピングされた属性を変更したとき、「TopLink Mapping構造」ウィンドウが正しく更新されず、変更が表示されない場合があります。「TopLink Mapping構造」ウィンドウを更新させるには、変更を行った後でプロジェクトを保存する必要があります。

6.11.10 TopLinkのアクセシビリティに関する問題

(3845935、3845909、3845804)TopLink Mappings EditorにJAWSスクリーン・リーダーを使用すると、次のユーザー・インタフェース要素が正しく読み取られない場合があります。

6.11.11 ドル記号を含むクラス名

(3768125)ドル記号($)が含まれたクラス名は内部クラスです。TopLink Mappings Editorを使用して、それらのクラスに対してTopLinkディスクリプタを作成することはできません。

6.11.12 TopLink Mapping EditorでOracle Database 10gを使用する

(3856465)JDeveloperには10g固有のデータベース・ファイルが含まれていません。TopLink Mappings EditorでOracle Database 10gを使用するには、Oracle9iデータベース・オプションを選択します。

6.11.13 TopLinkデータ・コントロール・パラメータの移行

(3859963)JDeveloperプロジェクトをTopLinkマッピングとともに10.1.2に移行する場合、TopLinkSequenceOnCreateおよびTopLinkShouldPerformDeleteFirstパラメータはオプションであるため、移行先プロジェクトに含めることができません。必要に応じて、構造ウィンドウまたはプロパティ・ウィンドウを使用して、これらのパラメータを追加する必要があります。詳細は、Javadocを参照してください。

6.11.14 「TopLink構造」ウィンドウに一部の属性が表示されない場合がある

(3813680).javaファイルのコードに属性を追加する場合は、ファイルを保存して属性が「TopLink構造」ウィンドウに正しく表示されるようにする必要があります。

6.11.15 デフォルトのTopLink問合せは構成できない

(3603407)TopLink Mappings Editorでは、デフォルトのTopLink問合せ(「すべて読取り」や「一度に読み込む」など)にキャッシュ・オプションを構成できません。たとえば、「キャッシュの使用方法」、「バインディング」、「タイムアウト」、「返す行数(最大桁)」などの項目を変更できません。

6.11.16 TopLink ADFデータ・バインディングの使用

(3736337)OracleAS 10g(10.1.2.1.0)にデプロイするときに、TopLink ADFデータ・バインディングを使用するには、JDeveloperで「ツール」→「ADF Runtime Installer」オプションを選択します。スタンドアロンOC4Jを使用する場合は、ADF Runtime Installerを使用する必要はありません。

6.11.17 接続プールでデータベース・セッションを使用すると、SessionLoaderの例外が発生する

(3887079)TopLink sessions.xmlでデータベース・セッションを使用する場合は、接続プールを作成または使用しないでください。接続プールはサーバー・セッションにのみ使用します。

6.11.18 クラスをリファクタしてもTopLinkディスクリプタが更新されない

(3903528および3926599)クラスをリファクタ(名前の変更または削除)しても、関連するTopLinkディスクリプタの名前の変更や削除が行われません。TopLinkディスクリプタの名前を変更するには、最初にディスクリプタをプロジェクトから削除してから、名前を変更したJavaクラスを再インポートします。新しいTopLinkディスクリプタは、新しいクラス名で作成されます。

6.11.19 セッション名の先頭に空白を付加すると、実行時に例外が発生する

(3900559)JDeveloperでは、TopLink sessions.xmlのセッション名の先頭に空白を付加できますが、空白を付けると実行時に例外が発生します。セッション名の先頭には空白を付けないでください。

6.11.20 Datacontrols.dcxとDatabindings.cpxの同期化

(3917609)JDeveloperでデータ・コントロールを操作しているときに、DCXを変更してもCPXに反映されない場合があります。この問題を回避するには、データ・コントロール(DCX)を変更する前に、データ・バインディング(CPX)を変更してください。

6.11.21 レコードを削除およびコミットするときにエラーが発生する

(3815959、3903366)TopLinkにマッピングされたオブジェクトが1:Mの関係にあり、双方向の関係のメンテナンスを使用する場合、この関係の外部キー制約のソース列に非NULL制約があると、UnitOfWork.commit()にデータベースの整合性制約違反が発生する場合があります。この問題は、コミット・データ・アクション時にTopLink ADFで発生します。

対処方法:

6.11.22 session.xmlの「ソース」ビューのマルチバイト文字列が文字化けして表示される

(3983407)マルチバイト文字列がsession.xmlにある場合、session.xmlの「ソース」ビューに文字化けして表示されます。これは、表示上の問題です。「ソース」ビューまたはsession.xmlは読取り専用であるため、実際のsession.xmlは正しくエンコードされます。

6.11.23 TopLinkの作業ユニットのリセットによるパフォーマンスの向上

TopLinkの作業ユニットのコミット時には、その状態が自動的にリセットされません。トランザクションが複数にわたると、作業ユニットのチェンジ・セットが大きくなり、結果としてパフォーマンスが低下する場合があります。作業ユニットの状態は、ビュー層またはコントローラ層の中からTopLinkDataControl.resetState()をコールすることで明示的にリセットできます。たとえば、Struts DataActionのhandleLifecycle()メソッド内からコールする場合、コードは次のようなものになります。

TopLinkDataControl dc =
  (TopLinkDataControl) actionContext.getBindingContext().findDataControl("DataControlName");
if (! this.hasErrors(actionContext) )
{
  dc.resetState();
}

また、コミット操作後にresetState()をコールして、状態のアンマップされた機能を明示的にリセットすることもできます。PL/SQL Webサービスを再生成した後、コンパイル・エラーが発生する場合があります。その原因は、再生成中にいくつかのファイルがプロジェクトから削除されるためです。この問題を解決するには、削除されたファイルを手動でプロジェクトに再追加する必要があります。

6.12 Webサービスの問題

この項では、Webサービスに関する問題について説明します。

6.12.1 WSDLドキュメントにはインサイトを使用できない

(2954818)JDeveloperでは、起動時に有効なネットワーク接続が確保されるとはかぎりません。また、関連するすべてのスキーマはW3Cサイトにあり、それらは法律上の理由でローカル・インストールにコピーできないため、JDeveloperにWSDLファイル・タイプ用のXMLスキーマを事前登録することができません。このような理由により、JDeveloperのXMLエディタではWSDLドキュメントの編集にコード・インサイトを使用できません。

6.12.2 PL/SQL Webサービス再生成後にコンパイル・エラーが発生する

(3431499)ナビゲータでは、Webサービス・ノードを選択し、「アプリケーションに追加」ボタン(+記号)をクリックします。ダイアログで、\src\<package>ディレクトリにナビゲートします。.sqljファイルをすべて選択して、「開く」をクリックします。これで、プロジェクトをコンパイルしてもエラーが発生しなくなります。

6.12.3 Webサービスの検索ウィザードでは、行をロードしないとJAWSが有効値を返さない

(3194304)JAWSなどのアクセシビリティ・リーダーを使用する際には、Webサービスの検索ウィザードの使用に注意する必要があります。「WSDLかどうか」列に有効値が返されていることを確認するには、ウィザードの「モデル」ページに、行が正常にロードされるまで待機する必要があります。これを行うには、まず「説明」列に移動します。行がロードされている間は、「説明」列に「ロード中」と返されます。行のロードが終了すると、「説明」列にWebサービスの説明が表示されます。この時点で、「WSDLかどうか」列に移動して、値を読み取ります。

6.12.4 PL/SQL Webサービス・ウィザードでプロジェクトを変更すると、エンドポイントのコンテキスト・ルートを更新できない場合がある

(3477647)PL/SQL Webサービス・ウィザードのステップ1には、Webサービスを生成するプロジェクトを選択できるコンボ・ボックスがあります。ウィザードのステップ3に進むと、選択したプロジェクトのコンテキスト・ルートを使用して、Webサービスのエンドポイントが自動生成されます。

ここで、ステップ1に戻って他のプロジェクトを選択してからステップ3に戻ると、Webサービスのエンドポイントの自動再生成に失敗し、エンドポイントには、最初に選択したプロジェクトのコンテキストが使用されています。

プロジェクトの正しいコンテキスト・ルートを反映させるには、Webサービスの生成前に、ウィザードでエンドポイントを手動で更新する必要があります。この操作を行わないと、生成されたWSDLドキュメントのエンドポイントが間違ったものとなり、Webサービスにアクセスするためにスタブが生成されても、間違ったエンドポイントを指すようになります。別の方法として、Webサービスを生成後に再編集し、正しいエンドポイントに設定を変更してから再生成することもできます。

6.12.5 PL/SQL Webサービスではスキーマ修飾名を使用する必要がある

(2966028)オブジェクト型のパラメータまたは属性としてXMLTYPEを使用するPL/SQL Webサービスでは、SYS.XMLTYPEというスキーマ修飾名を使用する必要があります。

6.12.6 JDeveloperのインストール・パスにスペースが含まれている場合に生成されたWebサービス・スタブが異常終了する

(3068701)JDeveloperをインストールしたパスのフォルダのいずれかの名前にスペースが含まれている場合に、Webサービスを生成して、埋込みOC4Jサーバーで、またはOC4Jサーバーの外部インスタンスで実行すると、そのWebサービスをコールしたときにWebサービスへのスタブが異常終了します。

対処方法として、フォルダ名にスペースが含まれていないパスにJDeveloperをインストールします。

6.12.7 Webサービスでは、Base64を参照するスタブを生成できない

(2920137)Webサービス・スタブ/スケルトンの作成ウィザードの「Webサービス記述を選択」ページでは、http://schema.xmlsoap.org/soap/encoding/のbase64タイプのXMLスキーマを認識できません。結果として、WSDLファイルからは、このタイプを参照するサービスを生成できません。

6.12.8 PL/SQLパッケージ名にハイフンが含まれている場合にJPublisherが不正なコードを生成する

(3522618)データベース・パッケージ名にハイフン(-)を含むプログラムを元にPL/SQL Webサービスを生成すると、ハイフンがJava識別子として有効な文字ではないため、JPublisherが不正なSQLJファイルを生成します。対処方法として、JDeveloperによって生成されたSQLJファイルを編集し、パッケージ名の出現部分を引用符("")で囲んでから再ビルドします。

6.12.9 WS-Iログ・ファイルの保存先は、JDeveloperと同じシステム・ドライブ上にある必要がある

(3535903)「ツール」→「プリファレンス」→「WS-Iテスト・ツール」で設定するWS-Iログ・ファイルの保存先は、JDeveloperと同じシステム・ドライブにあることが必要です。別のドライブが設定された場合には、ログ・ファイルは作成されません。たとえば、JDeveloperをDドライブにインストールした場合は、WS-Iログ・ファイルの保存先もDドライブにする必要があります。

Webサービス固有の移行情報については、「移行の問題」を参照してください。

6.12.10 WSDLでは特定のタイプを使用するスタブまたはスケルトンを生成できない

(3912349)JDeveloper 10.1.2では、WSDLドキュメントで定義可能なすべてのcomplexTypesのサブセットのみが認識されます。たとえば、WSDLのtypesセクションに次のタイプが出現する場合、これらのタイプを使用すると、スタブまたはスケルトンのUnknownTypeへの参照が生成されます。

6.12.11 名前空間パスにアンダースコアを使用すると、Webサービスに実行時エラーが発生する

(3992526)OC4Jで実行しているWebサービスがあり、生成されたスタブをそのサービスに対して実行すると、サービスのターゲット名前空間でURLの最初の部分にアンダースコアが含まれている場合に、「デシリアライザがありません」というメッセージが表示されてスタブが失敗します。これは、スタブが実行されると、ターゲット名前空間のアンダースコアがハイフンに変換されるためです。たとえば、http://hr_conn/My_WebService1.wsdlはhttp://hr-conn/My_WebService1.wsdlに変換されます。

対処方法として、次のいずれかを実行します。

6.12.12 UDDIレジストリのWebサービスのレポートが文字化けする

(4070841)UDDIレジストリでWebサービスのコンテキスト・メニューから「レポートの表示」を選択すると、選択したWebサービスに関する情報ページで、JAロケールのすべてのマルチバイト・キャラクタが文字化けして表示されます。これは表示の問題であり、次の対処方法によって回避できます。

  1. コマンドcd <DevSuiteHome>/jdev/lib/<J2SE_Install>/bin/jar xvf jdev.jar oracle/jdevimpl/webservices/uddi/report/uddiservicerpt.xslを実行して、レポートのフォーマットに使用するファイルを抽出します。

  2. 抽出したファイルをテキスト・エディタで開き、次のコードを変更します。

    <xsl:output method="html" />

    このエントリを次のように変更します。

    <xsl:output method="html" encoding="shift_jis"/>: Windows、またはUNIXのSJIS環境の場合

    <xsl:output method="html" encoding="euc-jp"/>: UNIXのEUC環境の場合

  3. <JDev_Install>jdev/bin/jdev.confを開いて、次のコードを追加します。

    AddVMOption -Duddi.serviceReport.Stylesheet=<JDev_Install>/jdev/lib/oracle/jdevimpl/webservices/uddi/report/uddiservicerpt.xsl

6.13 モデル化の問題

この項では、モデル化に関する問題について説明します。

6.13.1 UMLダイアグラム要素のディスクからの削除

(3421852)ダイアグラムでモデル化されているクラスやインタフェースがあり、「ディスクから削除」を使用して、ナビゲータからそのクラスやインタフェースを削除しても、ダイアグラムには表示されたままになることがあります。この現象が発生するのは、クラスやインタフェースを作成後に保存してからJDeveloperを終了し、JDeveloperの次回起動時に、ナビゲータからクラスやインタフェースを削除したときです。対処方法として、モデル化されたクラスやインタフェースを、ダイアグラムから手動で削除します。

6.13.2 モデル化されたEJBのディスクからの削除

(3100651)ダイアグラムでモデル化されているEJBがあるときに、モデル化されたEJBのコンテキスト・メニューから「ディスクから削除」を選択しても、EJBはナビゲータに表示されたままになります。これを削除するには、EJBを選択し、パッケージから「ファイル」→「削除」を選択します。ダイアグラムでモデル化されているEJBがあるときに、ナビゲータでそのEJBに対して「ディスクから削除」を選択しても、モデル化されたEJBは表示されたままになります。これを削除するには、EJBを選択し、コンテキスト・メニューから「ディスクから削除」を選択します。

対処方法として、EJBを削除する前にダイアグラムを閉じてから、ナビゲータでEJBを削除します。

6.13.3 制約を削除せずにダイアグラムから要素を削除すると、「ダイアグラムに追加」ダイアログのノードが影響を受ける

(3431254)ダイアグラムでモデル化されている制約を定義された要素がある場合に、制約を削除せずに要素を削除すると、「ダイアグラムに追加」ダイアログの「制約」ノードを開けなくなります。

6.13.4 モデル化されたJavaクラスを無効な名前に変更するとエラーが発生する

(3495725)「ツール」→「リファクタ」で、ダイアグラムのJavaクラスの名前をパッケージ名に変更すると(例、mypackage1.JavaClass1からmypackage1への変更)、ダイアグラムの別のクラスをモデル化しようとしたときにエラーが表示されます。このエラーが発生しないようにするには、モデル化されたクラスを、パッケージ名と同じ名前に変更しないでください。

6.14 チーム・ベースの開発に関する問題

この項では、チーム・ベースの開発に関する問題について説明します。

6.14.1 CVSのサポート: NT PSERVER接続の作成時の円記号の使用

(3075917)CVS接続のルート値のリポジトリ・フィールドにドライブ文字を指定するときは、次のように、ドライブ文字の後に2つのスラッシュが続く表記は使用できません。

d//cvshome

かわりに、リポジトリの先頭にスラッシュを1つ使用します。

/d//cvshome

またはドライブ文字の後にコロンを使用します。

d:\cvshome

6.14.2 WebDAV: Oracle9iASサーバーへのWebDAV接続でファイルをロック解除できない

(2624464)Oracle9iASサーバーへのWebDAV接続でファイルをロックする場合、JDeveloperを使用してそのファイルをロック解除することはできません。

6.14.3 Oracle SCMのバージョン履歴

(3998099)Oracle SCMでバージョン履歴を開くと、CDR-17043およびSQLエラーが発生することがあります。現在、この問題への対処方法はありません。

6.15 UNIX固有の問題

この項では、JDeveloperとUNIX固有の問題について説明します。

6.15.1 LinuxでのコマンドラインからのCodeCoachの実行

LinuxシェルでのCodeCoach起動は、セミコロン(;)を誤って解析することによって失敗する可能性があります。Linuxシェルはセミコロンをコマンド・セパレータと解釈しますが、CodeCoachオプションの中には、(-Xcc:incl:<packagelist>や-Xcc:excl:<packagelist>のように)セミコロンをリスト・セパレータとして使用するものもあります。このようなオプションは、二重引用符で囲みます。次に例を示します。

/java/jdk1.4.2_03/bin/Java -ojvm -Xcodecoach -Xcc:new -Xcc:level:4
-Xcc:disable:ALL -Xcc:enable:ALL

"-Xcc:excl:com;Java;javax;sun;sunw;org;oracle" -classpath
/home/fred/JDev9.0.5/jdev/mywork/Workspace1/Project2/classes:/home/Fred
/JDev9.0.5/jdev/lib/jdev-rt.jar mypackage2.Application1

6.15.2 LinuxでのOJVMのインストール

JDeveloperのLinuxインストールでは、OJVMが提供されます。OJVMは、JDeveloperとともにインストールできますが、この構成はOracleではサポートされていません。OJVMはHotSpotと互換性のあるJVMで、JDeveloperのプロファイラ機能とCodeCoach機能で必要とされます。また、高度なデバッグ機能も使用できるようになります。

rootとしてログインし、LinuxシェルからアプリケーションのJ2SEにOJVMをインストールします。

cd <jdev_install>/ojvm_linux_x86
sh installOJVM <j2se_location>

ここで、<jdev_install>はJDeveloperのインストール・ディレクトリ、<j2se_location>はJ2SEフォルダへのフルパスを表しています。

OJVMが正しくインストールされていることを確認するには、次のコマンドを実行します。

<j2se_location>/bin/Java -ojvm -version

6.16 Macintosh OS Xに関する問題

この項では、JDeveloperとMacintosh OS Xに関する問題について説明します。

6.16.1 ヘルプをスクロール・ボタンで下方向にスクロールできない

(3762896)ヘルプの使用時にスクロールするときは、スクロール・ボタンではなく、実際のスクロールバーを直接使用する必要があります。これは、Apple Bug 3748025です。

6.16.2 「スマート・データ」または「データ」ウィンドウの端付近をクリックするとコンソール例外が発生する

(3761047)コンソール・ウィンドウで、この例外が表示されることがあります。この例外は無害で、JDeveloperにはまったく影響しません。

6.16.3 JClientアプリケーションを実行すると、AppleのVMからの診断情報が表示される

(3722494)OS Xに付属するJava VMによって、コンソールに診断情報が表示されることがあります。この情報は無害です。

6.16.4 アクティブなビューが強調表示されない

(3728924)他のプラットフォームでは、アクティブな組込みウィンドウが濃い色で強調表示されます。Mac OS Xでは、強調表示されません。

6.16.5 列または行を再配置できない

(3757344)JSP/HTMLビジュアル・エディタでは、ドラッグ・アンド・ドロップ操作によって、列または行を再配置できません。

6.16.6 UIアウトラインによりグラフィックスが表示されない

(3760903)OS Xでは、UIデバッガでUIアウトラインが表示されません。

6.16.7 JSPビジュアル・エディタで、コンテキスト・メニューがポップアップ表示されない

(3895704)OS Xでシングル・ボタン・マウスを使用しているときは、コンテキスト・メニューがポップアップ表示されません。対処方法として、コマンド・キー、[Shift]キー、[-]キーを同時に押すか、またはツー・ボタン・マウスを使用します。

6.16.8 フォーカスがダイアログの適切なテキスト・フィールドに設定されない

(3896729)一部のダイアログを起動したときに、フォーカスがテキスト・フィールドではなくボタンに設定されます。テキスト・フィールドをクリックしてフォーカスを設定するか、またはタブ移動してから入力します。

6.16.9 動的なJNLPファイルがSafariで動作しない

(3907098)Web Startアプリケーションを作成する場合、JSPでJNLPファイルを動的に生成するのではなく、静的なJNLPファイルを選択してください。SafariではMIMEタイプが無視され、ファイル拡張子によってWeb Startを起動するかどうかが判断されます。

6.16.10 ドッキング可能なウィンドウをフローティングさせるとメニュー・バーが使用できなくなる

(3765717)ドッキング可能なウィンドウをフローティングさせると、メニュー・バーが空になります。ウィンドウをIDEに再ドッキングすると、この状況は解消されます。この問題は、Apple Bug 3752818で報告されています。

6.16.11 クイックJavadocの動作に必要なJava Developer Tools

JDeveloperのクイックJavadoc機能では、クラスのソード・コードへアクセスできることが前提となっています。Mac OS Xでは、src.jarは通常のJavaインストールの一部ではなく、Developer Toolsパッケージの一部になっています。このファイルは、JDKクラスのソースをクイックJavadocで使用するために必要です。

6.16.12 パレットからのドラッグがサポートされない

(3845763)Mac OS Xでは、パレットのドラッグ・アンド・ドロップ操作を実行できません。パレット項目を選択して、ビジュアル・デザイナでコンポーネントを表示する場所をクリックする必要があります。

6.17 スクリーン・リーダーに関する問題

この項では、JDeveloperとスクリーン・リーダーに関する問題について説明します。

6.17.1 JDeveloperで可能になったJava Access Bridge 1.2のインストール

JDeveloperとJAWSの連携動作を設定する場合は、インストレーション・ガイドの手順に従って、次のサイトからaccessbridge-1_2.zipをダウンロードしてください。

http://java.sun.com/products/accessbridge/

オンライン・ヘルプにあるスクリーン・リーダーの設定手順では、accessbridge-1_1.zipのダウンロードが推奨されていますが、これはAccess Bridgeの最新バージョンではありません。この手順は、Java Access Bridge 1.2が提供される前の情報です。

6.17.2 JAWS 3.70の使用時におけるJDeveloper 10.1.2に関する問題

JDeveloper 10.1.2でJAWS 3.70を使用するときは、次の問題に注意してください。

6.17.3 JAWS 3.70またはJAWS 5.0の使用時におけるJDeveloper 10.1.2に関する問題

6.17.4 JAWS 5.0使用時におけるJDeveloper 10.1.2に関する問題

JDeveloper 10.1.2でJAWS 5.0を使用するときは、次の問題に注意してください。

6.17.5 JAWS 3.70に関する問題

JAWS 3.70を使用するときは、次の問題に注意してください。

6.17.6 JAWS 5.0に関する問題

JAWS 5.0を使用するときは、次の問題に注意してください。

6.18 その他の問題

この項では、JDeveloperに関するその他の問題について説明します。

6.18.1 IDEを使用してアプリケーションをデプロイするときのエラー・メッセージ(4502734)

JDeveloperを使用してアプリケーションをデプロイする際、エラー・メッセージcheckIsLocalHost() error:が表示されることがあります。このメッセージは無視しても問題なく、全体的なデプロイ・プロセスに影響しません。

6.18.2 パスにJDK 1.5\JRE\BINを指定してJDeveloperを起動すると、クライアントVMを使用してデバッグできない(4502080)

WindowsでJDeveloperを起動するときに、パスにjdk1.5\jre\binが指定されている場合は、JDK1(JDeveloper 10.1.2でのデフォルトJDK)のデバッガをHotSpot JVM(hotspot、クライアントまたはサーバー)とともに使用できません。HotSpot JVMを使用してJDK1.4でデバッグしようとすると、次のエラーがログ・ウィンドウに表示されます。

FATAL ERROR in native method: No transports initialized Transport dt_socket failed to initialize, rc = 509.

このエラーは、デバッグ・プロセスがdt_socket.dllを検索し、JDK1.4バージョンのDLLのかわりにJDK1.5バージョンのDLLを、パスのjdk1.5\jre\binディレクトリから検出したことによって発生します。OJVMとデバッガを併用した場合は、OJVMではdt_socket.dllが使用されないため、このエラーは発生しません。

この問題を回避するには、次の対処方法のいずれかを使用します。

6.18.3 JDeveloper 10.1.2.0.0から10.1.2.1.0にライブラリ定義をアップグレードする際の問題

(4148838)JDeveloper 10.1.2.0.0で独自のライブラリ定義を作成し、そのライブラリにEL JARファイル(commons-el.jar、jsp-el-api.jarおよびoracle-el.jar)を手動で追加してJDeveloper 10.1.2.1.0でコンパイルまたは実行すると、NoClassDefFoundエラーが表示されることがあります。$DevSuiteHome/jakarta-commos-el/ではなく、新しい場所の$DevSuiteHome/jlib/にあるJARファイルを指すようにライブラリ定義を修正します。

6.18.4 UMLクラス・エディタでのNULLポインタ例外

(3891954)UMLクラス・エディタの使用中に[Alt]キーを押しながら[Tab]キーを押すか、またはマッピング・エディタを開いたままで構造ペインをクリックすると、NULLポインタ例外のjavax.swing.SwingUtilities.getWindowAncestor(SwingUtilities.java:63を受け取ることがあります。この現象はめったに発生しませんが、JDKの不具合が原因です。この不具合は、JDK 1.4.2_05以降では修正されています。

6.18.5 Windows XP Service Pack 2でのJDeveloperの実行

Windows XP Service Pack 2でJDeveloperまたはOC4Jを初めて実行するときは、Windowsのセキュリティ・アラートが表示されます。「ブロック解除」ボタンを1度クリックすると、これ以降、このアラートを受け取ることはありません。

SP2はすべてのポートをブロックします。OC4Jをブロック解除しても、デフォルト・ポートの8888はブロックされたままになります。そのため、外部のOC4J(ポート8888など)を使用するアプリケーションを実行するには、ファイアウォールの例外リストにポート8888を物理的に追加する必要があります。これは次の手順で行います。

  1. ネットワークのプロパティに進み、イーサネット接続を選択します。

  2. 詳細設定」をクリックします。

  3. ファイアウォールの設定をクリックします。

  4. 例外」タブをクリックし、「ポートの追加」をクリックして、ポート8888またはOC4Jで使用するポートとオプションの名前を指定します。

  5. OK」をクリックして「ネットワーク接続」ウィンドウを閉じます。

6.18.6 WEB-INF/libのJARに未使用のTLDがあると、JSPのメイク/実行ができない

(3421004)指定されているtaglibハンドラ・クラスがクラスパスに含まれている場合でも、JSPをメイクまたは実行する際に、次のようなエラー・メッセージが表示されることがあります。

Error(1): java.lang.ClassNotFoundException:
Error(1): Unable to load taghandler class:

このエラーは、WEB-INF/libのいくつかのJARファイルに使用していないTLDが含まれていて、その実装ライブラリが該当プロジェクトのクラスパスにない場合に発生します。このエラーは、次のいずれかの方法で解消できます。

6.18.7 マルチバイト環境でJDeveloperを使用すると、テキストの一部が文字化けする

(2670389)マルチバイト環境でJDeveloperを使用すると、埋込みブラウザで、すべてのマルチバイト文字が四角形で表示されることがあります。この問題は、次のオプションを使用することで解消されます。

AddVMOption -Dice.pilots.html4.ignoreNonGenericFonts=true

6.18.8 HEADタグ内の記述のサイズが大きいと、JSP/HTMLエディタでファイルのエンコーディングを正しくデコードできないことがある

(3313918)現時点では、JSP/HTMLエディタは、HEADタグ内のMETAタグ(例、<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=shift_jis"/>)を元にファイルのエンコーディングを認識しています。

JSP/HTMLエディタでは、このようなMETAタグをファイルの先頭から2000バイト以内に記述する必要があります。JSP/HTMLエディタで、JSPまたはHTMLファイルが文字化けしている場合は、METAタグがファイルの先頭から2000バイト以内に正しく記述されているかどうかを確認してください。

6.18.9 オフライン・データベース定義の操作

データベースからのインポートおよびデータベースへの生成は、Oracle以外のデータベースに対しては保証されていません。