ejipt.sessionScope
プロパティはクライアント側プロパティで、ログイン セッションのスコープを指定します。これは、マルチスレッド クライアントのログイン セッションを管理する場合に役立ちます。このプロパティは、クライアントが起動され、サーバーへの接続が確立していないときに、指定する必要があります。
生成されたスタブによって、クラスの初期化時にシステム プロパティからプロパティの設定が選択されます。このプロパティは、コマンド ラインから指定するか、または引数としてプロパティの名前と値を使用して System.setProperty
メソッドを呼び出して指定できます。サーバーへの接続が確立する前に、システム プロパティにプロパティを設定する必要があります。設定は変更できません。
クライアントでスタブ クラスがロードされる前にプロパティを指定する必要があります。クライアントは、正しい証明を持つ JNDI コンテキストを作成することによってログインします。
thread
ログインを取得したスレッドのみがアクセス権を持ちます (既定)。
thread_group
グループ内の 1 つのスレッドがログインすると、グループ内のほかのすべてのスレッドもログインしたと見なされます。vm
1 つのスレッドがログインすると、VM (プロセス) 内のすべてのスレッドもログインしたと見なされます。
サーバーは、呼び出し側に基づいて、受信した各呼び出しに固有の呼び出し ID を割り当てます。ejipt.sessionScope
プロパティを vm
に設定すると、クライアント VM からのすべての呼び出しは、VM が呼び出しに使用するスレッドの数に関係なく、同じ呼び出し ID と関連付けられます。プロパティを thread
に設定すると、VM 内の異なるスレッドによる呼び出しは、異なる呼び出し ID と関連付けられます。異なる VM からの呼び出しを同じ呼び出し ID と関連付けることはできません。
セカンダリ initialcontext
をインスタンス化し、ejb.sessionScope
を vm
に設定する場合は、最初のログインと同じユーザとパスワードを使用してログインしてください。異なるユーザとパスワードを使用してサーバーへのセカンダリ ログイン呼び出しを行うと、サーバーで「ログイン済み」例外が生成されます。
JNDI からログインするたびに、新しい独自の有効期限を持つログイン セッション オブジェクトが作成されます。EJB エンジンは、呼び出し ID ごとにログイン数を追跡し、最後のログインがログアウトまたは期限切れになった場合にのみ呼び出し ID を解放します。
一部の JRun のバージョンではユーザ接続数が制限されています。たとえば、JRun で EJB 接続数が 3 つに制限されていると、EJB エンジンで一度に最大 3 つの異なる呼び出し ID と関連付けられている呼び出しが処理されます。呼び出し ID は保存されません。つまり、サーバーは一度に 3 つの呼び出しのセットを処理し、次に別の 3 つの呼び出しのセットを処理します。
ただし、「ログインした」呼び出しの場合は例外です。ログイン時、ID はユーザ ID とともにテーブルに登録されます。同じ呼び出し ID に関連付けられているすべての呼び出しは、ユーザがログアウトするか、またはログイン セッションが期限切れになるまで、ログインしたユーザのセキュリティ コンテキスト内で行われます。ログアウトすると、登録が削除され、別の新しいユーザがログインできます。もちろん、すでにログインした呼び出しは、ログアウトしないと、再度ログインできません。
ejipt.sessionScope
プロパティの値によって、ユーザは、分布範囲の一方の終端で 3 つの異なる VM (クライアント プロセス) としてユーザを定義し、もう一方の終端では同じ VM 内の 3 つの異なるスレッドとして定義できます。繰り返しますが、これは 100 の異なるクライアント VM 呼び出しができないということではなく、EJB エンジンで一度に処理できる呼び出しが 3 つに制限されているということです。
クライアントでセキュリティを使用すると (ログインすると)、一度にログインできるのは 3 人のユーザだけです。ユーザがログアウトしてから次のユーザがログインできるまでに数秒かかります。ユーザ スロットは、前にログインしたユーザがログアウトした場合と、期限切れになった場合にのみ解放されます。