JClientプロジェクトには、アプリケーションの実行に際してユーザー名とパスワードの入力を求める、カスタマイズ可能なログイン・ダイアログを追加できます。ログイン・ダイアログ・クラスは、JClientアプリケーションを実行するフレームの作成時にJClientプロジェクトに追加します。JClientの次の2つのウィザードを使用すると、適切なJClientブートストラップ・コードが指定されたJFrameを作成できます。
これらのJClientウィザードのどちらかを「ログイン・ダイアログの生成」オプションを選択して実行すると、JDeveloperでは次の処理が実行されます。
アプリケーション・ブートストラップ・コード内のアプリケーション・オブジェクト・コンストラクタを次のように変更し、JCLoginDialogのインスタンスを作成します。
JUApplication app = JUMetaObjectManager.createApplicationObject("Project2.Mypackage1Module", null, new JCLoginDialog());
JCLoginDialog.java
ファイルをJClientプロジェクトに追加します。これは、EnvInfoProvider
インタフェースを実装して実行時のログイン・ダイアログを表示し、JAAS対応BC4Jセキュリティ機能を利用してBC4JコンテキストのSECURITY_PRINCIPAL
およびSECURITY_CREDENTIALS
プロパティを提供します。ただし、同じ名前のJCLoginDialog.java
ファイルがすでにある場合、上書きはされません。作成されるログイン・ダイアログ(JCLoginDialog.java
)はインタフェースのメソッドを実装するもので、このコードを基に変更を加えることができます。JCLoginDialog.java
ファイルを使用すると、次のようなログイン・ダイアログの要素をカスタマイズできます。
ログイン・ダイアログを作成しない場合のJClientの動作
どちらかのJClientウィザードを実行して、JClientプロジェクトにログイン・ダイアログを作成せずにJClientフレームを作成した場合でも、次のどちらかの方法でアプリケーションを実行できます。
パスワードをデプロイせずにJDeveloperでアプリケーションを実行すると、JDeveloperではデフォルトのログイン・ダイアログ(JUEnvInfoProvider
)を使用してパスワードが取得されます。独自に作成するログイン・ダイアログと違って、JDeveloperが提供するデフォルトのログイン・ダイアログはカスタマイズすることはできません。アプリケーション・ブートストラップ・コード内のアプリケーション・オブジェクト・コンストラクタは、次のようにJUEnvInfoProviderのインスタンスを作成します。
JUApplication app = JUMetaObjectManager.createApplicationObject( "Project3.MypackageModule", null, new JUEnvInfoProvider());
JCLoginDialogコードのカスタマイズについて
JCLoginDialog.java
ファイルは、EnvInfoProvider
インタフェースの必要なメソッドを実装する初期コードを変更する場合に、JClientプロジェクトに作成します。このインタフェースは、ビジネス・コンポーネントの接続方法に、実行時にログイン・パラメータを変更するためのフックを提供するために使用されます。
EnvInfoProviderインタフェースでは、次のメソッドの実装が必要です。
public void modifyInitialContext(Object initialContext)
このメソッドは、アプリケーションがアプリケーション・モジュール・プール接続を作成または検索する前にコールされます。このメソッドは、ビジネス・コンポーネントへの接続を定義する、すべての構成パラメータが設定されたハッシュテーブルを渡します。実行時にアプリケーション・モジュール・プール接続パラメータを変更するには、このメソッドを使用します。
public Object getInfo(String info, Object connEnvironment)
このメソッドはデータベースへの接続の前にコールされます。このメソッドにより、すべての接続パラメータが設定されたハッシュテーブルを更新し、返すことができます。
Public int getNumOfRetries()
このメソッドは、接続に失敗した後でビジネス・コンポーネントが何回接続を試みるかを決定します。再試行のたびに、EnvInfoProviderから接続情報が取得されます。
独自の接続方法を提供するには、次のコードを
JUApplication app = JUMetaObjectManager.createApplicationObject("Project3.MypackageModule", null, new JUEnvInfoProvider());
次のようなコードに置き換えます。
Hashtable mEnv = new Hashtable(2);
mEnv.put(
PropertyMetadata.ENV_AMPOOL_CONNECTION_STRATEGY_CLASS_NAME.pName "mypackageName.myConnectionStrategy");
JUApplication app = JUMetaObjectManager.createApplicationObject(
"Project3.MypackageModule",
mEnv);
接続方法の詳細は、ビジネス・コンポーネントのドキュメントを参照してください。
BC4Jクライアントでのセキュリティについて
JClientおよびBC4Jのセキュリティについて
BC4JクライアントでのOracle9iAS JAASプロバイダの有効化