Oracle® Fusion Middleware Oracle Application Development Framework Swingアプリケーションの開発 12c (12.1.2) E48100-01 |
|
![]() 前 |
![]() 次 |
この章では、ログイン・ダイアログを作成し、そのログイン・ダイアログを使用してADF Swingアプリケーションを実行する方法について説明します。ADF Swingログイン・ダイアログは、ADFビジネス・コンポーネント・プロジェクトと連携するように最適化されています。
この章の内容は次のとおりです。
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つのウィザードを使用できます。
ADF Swingフォームの作成ウィザード: 「ファイル名」ページの「ログイン・ダイアログの生成」をクリックします。
「ADF Swingの空のフォームの作成」ダイアログ: 「ログイン・ダイアログの生成」をクリックします。
ログイン・ダイアログの生成オプションを選択してこれらのいずれかを実行すると、JDeveloperによって次のように実行されます。
アプリケーション・ブートストラップ・コードのアプリケーション・オブジェクト・コンストラクタが、JCLoginDialog
のインスタンスを作成するように次のように変更されます。
BindingContext ctx = new BindingContext(); ctx.put(DataControlFactory.APP_PARAM_ENV_INFO, new JCLoginDialog());
JCLoginDialog.java
ファイルがユーザー・インタフェース・プロジェクトに追加され、それによってEnvInfoProviderインタフェースが実装されて、実行時ログイン・ダイアログが提供されます。このウィザードによって、同じ名前の既存のJCLoginDialog.java
ファイルが上書きされることはありません。
生成されたログイン・ダイアログ(JCLoginDialog.java
)によってインタフェースのメソッドが実装されるため、出発点となるコードとして利用して、変更できます。JCLoginDialog.java
ファイルを使用すると、ログイン・ダイアログの次のどのような局面もカスタマイズできます。
その外観(イメージを追加し、レイアウトを変更することによる)
ADFビジネス・コンポーネント・アプリケーション・モジュールに接続するための構成パラメータ
データベースに接続するための接続パラメータ
接続に失敗した後に接続を再試行する回数の指定
ADF Swingフォームの作成ウィザードまたは「ADF Swingの空のフォームの作成」ダイアログを使用して、ADF Swingアプリケーションに、生成されたログイン・ダイアログを追加できます。生成したログイン・ダイアログは、Oracle ADFセキュリティ・フレームワークに依存してプリンシパルと資格証明を認証するため、JDBC接続を使用しません。
ADF Swingのログイン・ダイアログをプロジェクトに追加するには、次のようにします。
「アプリケーション」ウィンドウで、ユーザー・インタフェース・プロジェクトを選択し、ADF Swingフォームの作成ウィザードまたは「ADF Swingの空のフォームの作成」ダイアログを起動します。
フォーム・ウィザードの最終ページで、「ログイン・ダイアログの生成」を選択します。
「終了」をクリックすると、ウィザードが完了します。
Oracle WebLogic ServerおよびADFセキュリティ認証でログイン・ダイアログを使用するには、ADFセキュリティの構成ウィザードを使用して、ADFセキュリティを使用するようにADF Swingアプリケーションを構成する必要があります。
ADF認証を使用するようにADF Swingクライアントを構成する手順は次のとおりです。
「アプリケーション」ウィンドウで、ADF認証を必要としているユーザー・インタフェース・プロジェクトを選択し、「アプリケーション」→「保護」→「ADFセキュリティの構成」を選択します。
ADFセキュリティ・ウィザードで、「ADF認証および認可」を選択します。
「終了」をクリックします。
ADF Swingフォームのログイン・プロバイダを有効化するには、次のようにします。
「アプリケーション」ウィンドウで、ユーザー・インタフェース・プロジェクトを右クリックして、「プロジェクト・プロパティ」を選択します。
「プロジェクト・プロパティ」ダイアログで「ライブラリとクラスパス」をクリックし、ユーザー・インタフェース・プロジェクトと関連付けられているライブラリの現行リストを表示します。
「ライブラリの追加」をクリックします。
ライブラリのリストで、BC4J Securityを見つけ、それをリストに追加します。
そのようにしない場合、ログイン・ダイアログの使用時にエラー・メッセージが表示されます。BC4J Securityライブラリには、プロジェクト内でADF認証を使用するために必要なJARファイルが含まれています。
「OK」をクリックしてプロジェクト設定を保存します。
ユーザー・インタフェース・プロジェクトで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のコードをアプリケーション内で使用します。
ADF Swingのウィザードの1つを実行してADF Swingフレームを生成するが、ADF Swingユーザー・インタフェース・プロジェクトにログイン・ダイアログを生成しない(ウィザード内の「ログイン・ダイアログの生成」を選択解除したままにする)場合、「データベース接続の編集」ダイアログの「パスワードの保存」を選択することでアプリケーションを依然として実行できます。この場合、アプリケーションを実行すると、JDeveloperによって、ログインが要求されることなくフレームが表示されます。
EnvInfoProvider
インタフェースの必須のメソッドを実装する開始コードを変更する場合、ユーザー・インタフェース・プロジェクトでJCLoginDialog.java
ファイルを生成します。このインタフェースは、ADFビジネス・コンポーネント接続手法で使用され、実行時にログオン・パラメータを変更するためのフックを提供します。
EnvInfoProvider
インタフェースでは、次のメソッドが実装されることが想定されています。
public void getInfo(String info, Object connEnvironment)
このメソッドは、データベースに接続する前にコールされます。これにより、すべての接続パラメータでハッシュテーブルを更新(および返すこと)ができます。
Public int getNumOfRetries()
このメソッドは、ビジネス・コンポーネントが接続を失敗後に試行する回数を決定します。接続情報は、毎回、EnvInfoProvider
から取得されます。
注意: 前のリリースではメソッド |
生成したADF Swingログイン・ダイアログを変更し、Oracle ADF認証のかわりにJDBC接続と連動させることができます。
生成されたADF Swingログイン・ダイアログをJDBC接続用に変更する手順は次のとおりです。
ADF Swingフォームの作成ウィザードまたは「ADF Swingの空のフォームの作成」ダイアログを使用して、ユーザー・インタフェース・プロジェクトにログイン・ダイアログを追加します。
詳細は、第9.2項「ログイン・ダイアログを作成する方法」を参照してください。
ユーザー・インタフェース・プロジェクトで、JCLoginDialog.java
ファイルをダブルクリックします。
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; } */
[Ctrl] + [F]キーを押し、ソース・エディタで「検索」ダイアログを表示します。
この検索を実行し、次のように操作を置換します。
JboContext.SECURITY_PRINCIPAL
を
に変更します。
Configuration.DB_USERNAME_PROPERTY
「検索」ダイアログを再度表示し、別の検索を実行して、次のように操作を置換します。
JboContext.SECURITY_CREDENTIALS
を
Configuration.DB_PASSWORD_PROPERTY
に変更します。
注意: これらの変更はファイル内に2箇所あります。1つは、ハッシュ・テーブルから読み取るとき、もう1つは、ログイン・ダイアログのフィールドからユーザー名とパスワードを設定するときです。 |
変更内容をJCLoginDialog.java
に保存します。
データ・モデル・プロジェクトを作成するときにパスワードを保存した場合(デフォルト)、これらの設定を変更する必要があります。「データベース」ウィンドウで、接続を右クリックして、「プロパティ」を選択します。
「データベース接続の編集」ダイアログで、パスワードを削除し、「パスワードの保存」を選択解除します。
これで、ADF Swingアプリケーションを実行できるようになりました。bc4j.xcfg
ファイルで指定されているJDBC接続がある場合、アプリケーションによってダイアログが自動的に起動されます。