ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development Framework Swingアプリケーションの開発
12c (12.1.3)
E59440-01
  目次へ移動
目次

前
 
次
 

9 ADF Swingログイン・ダイアログでの作業

この章では、ログイン・ダイアログを作成し、そのログイン・ダイアログを使用してADF Swingアプリケーションを実行する方法について説明します。ADF Swingログイン・ダイアログは、ADFビジネス・コンポーネント・プロジェクトと連携するように最適化されています。

この章の内容は次のとおりです。

9.1 ADF Swingログイン・ダイアログについて

ADFビジネス・コンポーネント・データ・モデルに対して作成したADF Swingアプリケーションを実行するために、ユーザー名およびパスワードを必要とするユーザー・インタフェース・プロジェクトにカスタマイズ可能なログイン・ダイアログを追加できます。現在、ログイン・ダイアログは、他のビジネス・サービスに対してサポートされていません。

デフォルトでは、生成されたログイン・ダイアログは、Oracle WebLogic Serverコンテナによって強制される認証と連動し、SECURITY_PRINCIPALおよびSECURITY_CREDENTIALSプロパティを使用します。ただし、これらのセキュリティ・プロバイダ・プロパティを使用せずに、DB_USERNAME_PROPERTYおよびDB_PASSWORD_PROPERTYプロパティを必要とするJDBC接続と連動させる場合は、生成されたファイルをカスタマイズできます。

フレームを生成してADF Swingアプリケーションを実行する場合は、ユーザー・インタフェース・プロジェクトにログイン・ダイアログ・クラスを追加します。適切なADF Swingブートストラップ・コードが含まれているJFrameを生成するために、ADF Swingの次の2つのウィザードを使用できます。

ログイン・ダイアログの生成オプションを選択してこれらのいずれかを実行すると、JDeveloperによって次のように実行されます。

生成されたログイン・ダイアログ(JCLoginDialog.java)によってインタフェースのメソッドが実装されるため、出発点となるコードとして利用して、変更できます。JCLoginDialog.javaファイルを使用すると、ログイン・ダイアログの次のどのような局面もカスタマイズできます。

9.2 ログイン・ダイアログを作成する方法

ADF Swingフォームの作成ウィザードまたは「ADF Swingの空のフォームの作成」ダイアログを使用して、ADF Swingアプリケーションに、生成されたログイン・ダイアログを追加できます。生成したログイン・ダイアログは、Oracle ADFセキュリティ・フレームワークに依存してプリンシパルと資格証明を認証するため、JDBC接続を使用しません。

ADF Swingのログイン・ダイアログをプロジェクトに追加するには、次のようにします。

  1. 「アプリケーション」ウィンドウで、ユーザー・インタフェース・プロジェクトを選択し、ADF Swingフォームの作成ウィザードまたは「ADF Swingの空のフォームの作成」ダイアログを起動します。

  2. フォーム・ウィザードの最終ページで、「ログイン・ダイアログの生成」を選択します。

  3. 「終了」をクリックすると、ウィザードが完了します。

9.3 ログイン・ダイアログを使用してアプリケーションを実行する方法

Oracle WebLogic ServerおよびADFセキュリティ認証でログイン・ダイアログを使用するには、ADFセキュリティの構成ウィザードを使用して、ADFセキュリティを使用するようにADF Swingアプリケーションを構成する必要があります。

ADF認証を使用するようにADF Swingクライアントを構成する手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、ADF認証を必要としているユーザー・インタフェース・プロジェクトを選択し、「アプリケーション」「保護」「ADFセキュリティの構成」を選択します。

  2. ADFセキュリティ・ウィザードで、「ADF認証および認可」を選択します。

  3. 「終了」をクリックします。

ADF Swingフォームのログイン・プロバイダを有効化するには、次のようにします。

  1. 「アプリケーション」ウィンドウで、ユーザー・インタフェース・プロジェクトを右クリックして、「プロジェクト・プロパティ」を選択します。

  2. 「プロジェクト・プロパティ」ダイアログで「ライブラリとクラスパス」をクリックし、ユーザー・インタフェース・プロジェクトと関連付けられているライブラリの現行リストを表示します。

  3. 「ライブラリの追加」をクリックします。

  4. ライブラリのリストで、BC4J Securityを見つけ、それをリストに追加します。

    そのようにしない場合、ログイン・ダイアログの使用時にエラー・メッセージが表示されます。BC4J Securityライブラリには、プロジェクト内でADF認証を使用するために必要なJARファイルが含まれています。

  5. 「OK」をクリックしてプロジェクト設定を保存します。

  6. ユーザー・インタフェース・プロジェクトでEJBセッションBeanとして配布されるADFビジネス・コンポーネントにアクセスする必要がある場合は、グループ内のユーザーに読取り/書込みアクセス権を付与する必要があります。

ユーザー・アカウントは、ADF Swingアプリケーションを基準とした./src/META-INFディレクトリにあるjazn-data.xmlファイルに格納されています。デフォルト名の1つはadmin/welcomeです。ログオン・ダイアログをテストするには、デフォルト名の1つを使用します。かわりに、独自のユーザーをjazn-data.xmlに追加できます。

アカウントの追加後、最初にサーバー・インスタンスが起動されたときに、jazn-data.xmlファイルによってパスワードが暗号化されます。パスワードが必ず暗号化されるようにするには、パスワードの前に!を追加します。たとえば、パスワードWELCOMEを暗号化するには、それを!WELCOMEとして定義します。

ユーザーのユーザー名と資格証明のペアを使用するには、例9-1のコードをアプリケーション内で使用します。

例9-1 ユーザー名と資格証明のペアのコード

Hashtable h = panelBinding.getBindingContext().getDefaultDataControl(). getApplicationModule().getSession().getEnvironment(); 
 
String username = h.get(JboContext.SECURITY_PRINCIPAL);
String credential = h.get(JboContext.SECURITY_CREDENTIALS);
…

9.4 ログイン・ダイアログを使用しないでアプリケーションを実行する方法

ADF Swingのウィザードの1つを実行してADF Swingフレームを生成するが、ADF Swingユーザー・インタフェース・プロジェクトにログイン・ダイアログを生成しない(ウィザード内の「ログイン・ダイアログの生成」を選択解除したままにする)場合、「データベース接続の編集」ダイアログの「パスワードの保存」を選択することでアプリケーションを依然として実行できます。この場合、アプリケーションを実行すると、JDeveloperによって、ログインが要求されることなくフレームが表示されます。

9.5 ログイン・ダイアログのコードのカスタマイズに関する必知事項

EnvInfoProviderインタフェースの必須のメソッドを実装する開始コードを変更する場合、ユーザー・インタフェース・プロジェクトでJCLoginDialog.javaファイルを生成します。このインタフェースは、ADFビジネス・コンポーネント接続手法で使用され、実行時にログオン・パラメータを変更するためのフックを提供します。

EnvInfoProviderインタフェースでは、次のメソッドが実装されることが想定されています。

public void getInfo(String info, Object connEnvironment)

このメソッドは、データベースに接続する前にコールされます。これにより、すべての接続パラメータでハッシュテーブルを更新(および返すこと)ができます。

Public int getNumOfRetries()

このメソッドは、ビジネス・コンポーネントが接続を失敗後に試行する回数を決定します。接続情報は、毎回、EnvInfoProviderから取得されます。


注意:

前のリリースではメソッドpublic void modifyInitialContext(Object initialContext)が使用されましたが、それは非推奨になりました。それは、空のメソッドとして実装できます。


9.6 JDBC接続と連動するようにログイン・ダイアログを変更する方法

生成したADF Swingログイン・ダイアログを変更し、Oracle ADF認証のかわりにJDBC接続と連動させることができます。

生成されたADF Swingログイン・ダイアログをJDBC接続用に変更する手順は次のとおりです。

  1. ADF Swingフォームの作成ウィザードまたは「ADF Swingの空のフォームの作成」ダイアログを使用して、ユーザー・インタフェース・プロジェクトにログイン・ダイアログを追加します。

    詳細は、第9.2項「ログイン・ダイアログを作成する方法」を参照してください。

  2. ユーザー・インタフェース・プロジェクトで、JCLoginDialog.javaファイルをダブルクリックします。

  3. Javaソース・エディタで、例9-2に示すようにそのコードをコメント・アウトします。

    例9-2 JCLoginDialog.javaでのコメント・アウト

    /*
      String securityEnforceStr =
          ((String)((Hashtable)connEnvironment).get(PropertyMetadata.ENV_SECURITY_ENFORCE .pName));
          if (securityEnforceStr == null
            (securityEnforceStr != null && PropertyConstants.SECURITY_ENFORCE_NONE.equals(securityEnforceStr)))
          {
            return null;
          }
    */ 
    
  4. [Ctrl] + [F]キーを押し、ソース・エディタで「検索」ダイアログを表示します。

  5. この検索を実行し、次のように操作を置換します。

    JboContext.SECURITY_PRINCIPAL
    Configuration.DB_USERNAME_PROPERTY
    に変更します。

  6. 「検索」ダイアログを再度表示し、別の検索を実行して、次のように操作を置換します。

    JboContext.SECURITY_CREDENTIALS
    Configuration.DB_PASSWORD_PROPERTYに変更します。


    注意:

    これらの変更はファイル内に2箇所あります。1つは、ハッシュ・テーブルから読み取るとき、もう1つは、ログイン・ダイアログのフィールドからユーザー名とパスワードを設定するときです。


  7. 変更内容をJCLoginDialog.javaに保存します。

  8. データ・モデル・プロジェクトを作成するときにパスワードを保存した場合(デフォルト)、これらの設定を変更する必要があります。「データベース」ウィンドウで、接続を右クリックして、「プロパティ」を選択します。

  9. 「データベース接続の編集」ダイアログで、パスワードを削除し、「パスワードの保存」を選択解除します。

これで、ADF Swingアプリケーションを実行できるようになりました。bc4j.xcfgファイルで指定されているJDBC接続がある場合、アプリケーションによってダイアログが自動的に起動されます。