私はJ2EEとWebサービス(GlassFish 3.1)について学びたいと思っています。この質問は、thisまでの少しのフォローアップです。ステートフルWebサービスを管理するにはどうすればいいですか?
ステートレスセッションBeansとWebサービスの使用方法を理解しました。私は便宜上、Webサービス(@WebService
)のみを使用しています。私はむしろ手動でメッセージを解析しないためです。可能であれば、私はSOAPより軽いものを好みますが。しかし、私は何らかの状態(ステートフルセッションビーンなど)を維持したいときに問題に遭遇しました。私は、このサイトやこれを避けるために私に勧めてくれたいくつかの人を検索しました。バグを見つけにくくなり、スケーラビリティが制限されることがあります。
「userLogin」メソッドを実行したばかりのユーザーがいて、それが成功したとします。たとえば、ログインした後、ユーザーは「getProfile()」をSOAP(引数なし)で呼び出すことができ、そのユーザーの正しい情報が返されます。 @Stateless
でのみ有効なので、@WebService
を自分のステートフルセッションBeanに追加することで、これは不可能です。
ステートレスセッションBeanと一緒にHttpSession(HttpServletを使用)を使用すると状態を保存する方法を知っていますが、うまく生成されたSOAPメッセージを使用できません。
私の質問は次のとおりです。ユーザー状態を維持するというこの問題を解決するにはどうすればよいですか、または状態を必要としないように問題を適応させるにはどうすればよいですか?
ステートフルなものと考えるべきもう一つのことは、システムがクラスター化するのに十分な大きさになる場合です。あなたは、同じソースからの要求が同じボックス上に終わるように、ボックス間で状態を送信する方法や、譲り受けられる方法を持たなければなりません。すべてのことができる、しかしそれは考慮事項です。 – drekka
ありがとうございます。残念ながら、私が欲しい仕事はしていないようです。 APIに関する私の不慣れなことかもしれませんが、@Addressingアノテーションについてはこちら([http://blogs.oracle.com/sujit/entry/ws_addressing_and_stateful_webservice])を読んで、キャッシュされたアノテーションへのアクセスをユーザに提供することがわかりましたリソース。私が欲しかったのは、ユーザーがそれが追跡されていることを知らずに簡単にアクセスできるものでした。 – Level9000
HTTPセッションでもCookieが必要です。ユーザーは知っているでしょう。 WSユーザ(クライアント)の場合は、ハッキング以上で明示的にCookieを読み込んで追加する必要があります。それを@Statefulと比較するときれいです。 –