- PR -

セッションBeanについて

投稿者投稿内容
なべぞう
ベテラン
会議室デビュー日: 2003/07/07
投稿数: 98
お住まい・勤務地: 岡山県
投稿日時: 2003-07-16 17:05
>クライアントとセッションBeanのインスタンスとは1対1であり、複数のクライアント
>からのアクセスはできません。

こんにちは、疑問があるので分かる方、説明をお願いします。
「セッションBeanに複数クライアントからのアクセスはできませ
ん」という記述が@ITの記事にありました。

もし、同時に複数クライアントからアクセスされたときはEJB
コンテナが排他処理をしてくれるのでしょうか?この辺の、同時
にアクセスがあった時の処理の流れを教えてください。

以上、よろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2003-07-16 18:25
同時呼び出しを行うと RemoteException が送出されます。

WebLogicでは独自のデプロメントデスクリプタ(weblogic-ejb-jar.xml)の
allow-concurrent-calls 要素を true に設定することで同時呼び出しを
許可しますが、実際のメソッド呼び出しは直列化されます。
・[weblogic-ejb-jar.xml 文書型定義]-[allow-concurrent-calls]
http://edocs.beasys.co.jp/e-docs/wls/docs70/ejb/reference.html#594589
なべぞう
ベテラン
会議室デビュー日: 2003/07/07
投稿数: 98
お住まい・勤務地: 岡山県
投稿日時: 2003-07-17 09:16
インギさんレスありがとうございます。
"allow-concurrent-calls"はステートフル セッションBeanに設定できる
ようですが、ステートレス セッションBeanの同時呼び出しはどのようにな
りますか?

うど
会議室デビュー日: 2003/05/21
投稿数: 10
投稿日時: 2003-07-17 10:36
お世話になります。

引用:

>クライアントとセッションBeanのインスタンスとは1対1であり、複数のクライアント
>からのアクセスはできません。
ろしくお願いします。



回答になっているか分からないのですが、
セッションBeanはシングルスレッドなので同一インスタンスを
同時アクセスすることは「ない」のでは?と思います。
もし、同時アクセスを許してしまうと
プーリングがどう機能するかなぞです。

排他処理とは違うような気がしますが
同時アクセスがあった場合、
プール内に既に利用可能なインスタンスが存在する場合はそれを割り当て、
なかったらインスタンスを新規作成して対象スレッドに割り当てる。
という動作になると思います。

以上ですが、間違った認識があったら指摘願います。
プリンス
ベテラン
会議室デビュー日: 2003/07/05
投稿数: 78
お住まい・勤務地: 神奈川
投稿日時: 2003-07-17 11:29
なべぞう様

>ステートレス セッションBeanの同時呼び出しはどのようにな
>りますか?
そもそもステートレスセッションビーンはスレッドセーフなロジック
にするべきと思いましたが違いましたでしょうか?
ステートレスセッションビーンはJ2EE Blue Printでは
サーブレットに対する入り口(Facade)に使用しており、
ここがシリアライザブル(排他)になるとスループットが
あがりませんよね?
実際、SunのRIではステートレスセッションビーンは同一インスタンスが
返されて使いまわされています。(あるいみステートフル)
私はサーブレットのセッションスコープにステートレスセッションビーンを
プールして使いまわしてます。
また、EJBコマンドパターンもそういう前提のつくりですよね?
なべぞう
ベテラン
会議室デビュー日: 2003/07/07
投稿数: 98
お住まい・勤務地: 岡山県
投稿日時: 2003-07-17 11:41
うどさん、プリンスさんレス有難うございます。

*うどさんへ*
>プール内に既に利用可能なインスタンスが存在する場合はそれを
>割り当て、なかったらインスタンスを新規作成して対象スレッド
>に割り当てる。 という動作になると思います。

この動作なら@ITの記事は誤りとなりますよね。
うどさんの説明してくれた動作ならインギさんのレスにあった
RemoteExceptionは発生しない気がしますが、どうでしょうか
、説明してもらえますか?


*プリンスさんへ*
ステートレスセッションBeanはサーブレットと同じマルチスレッド
として動作すると考えて良いでしょうか?


以上、宜しくお願いします
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2003-07-17 14:21
なべぞうさんの書き込み (2003-07-17 11:41) より:
>この動作なら@ITの記事は誤りとなりますよね。

そもそもこの記事というのはどの記事のことでしょうか。
引用部分だけではわからないのですが。
なべぞう
ベテラン
会議室デビュー日: 2003/07/07
投稿数: 98
お住まい・勤務地: 岡山県
投稿日時: 2003-07-17 14:32
ukさんへ
一応、スレッド元に参照元としてリンクを張っていたのですが
分かりづらかったですね、すみません。

以下の記事をもとに質問をしています。
"Webアプリケーションにおけるサーバ・サイドJavaの効果的な利用(後編)"
http://www.atmarkit.co.jp/fjava/special/ejb02/ejb02.html

//後半の黒い囲み中にセッションBeanについての記述です。

スキルアップ/キャリアアップ(JOB@IT)