ここでは,DbjSessionインターフェースの,セッション管理機能について説明します。
セッションは,DbjSession#loginメソッドによって確立します。一つのDbjSessionインターフェースで確立できるセッションは一つです。
セッションの確立では,ユーザ識別子とパスワードによるユーザ認証も実行されます。認証に失敗した場合,セッションは確立されないで,例外がスローされます。
DbjSession#loginメソッドの実行に成功すると,DbjDocSpaceインターフェースが返却されます。
DbjSession#loginメソッドを実行して,セッションを確立する処理の例を示します。
// セッションを確立する処理の例
DbjSession sess = null;
DbjDocSpace docspc = null;
try {
// DbjSessionインターフェースを取得する
sess = DbjFactory0200.getFactory().createSession(docspaceid);
// 接続先の文書空間識別子(GUID文字列)を指定する
// セッションを確立する(ログイン)
docspc = sess.login("suzuki","passwd" );
} catch(DbjNotAuthenticatedException e) {
// 認証エラーの場合
System.out.println("Not authenticated");
} catch(DbjException e) {
// そのほかのエラーの場合
}
セッションは,DbjSession#logoutメソッドによって切断します。セッションの切断は,確立時と同じセッションオブジェクトのインターフェースで実行します。
また,明示的に開始したトランザクションが終了していない場合など,セッションを切断時にセッション内に未確定のトランザクションがある場合は,そのトランザクションは自動的にロールバック処理されます。
ここでは,セッションチェックについて説明します。
例えば,セッションの切断(ログアウト処理)を明示的に実行していない場合でも,DocumentBrokerサーバで設定されているタイムアウトによって,自動的にセッションが切断されている場合があります。セッションがすでに切断されているセッションオブジェクトを使用して文書空間にアクセスしようとすると,例外がスローされます。
DbjSessionインターフェースでは,文書空間にアクセスする前に,セッションが有効であるかどうかチェックする機能を提供しています。これをセッションチェック機能といいます。
セッションオブジェクトを使用する前に,セッションチェックを実行することによって,切断されたセッションに対してアクセスすることを防げます。また,セッションが切断されていた場合は,必要に応じて再度セッションを確立する処理を実行できます。
セッションチェックの例を示します。
// セッションチェックの例
// セッションが切断されていたら,再度セッション確立処理をする
public void authIfNoSession(DbjSession sess)
{
// セッションチェック処理
if ( !sess.checkSession() ) {
// セッションを再度確立する
......
}
}