はじめに
サービスクラスについての説明は、こちらを参照ください。
サービスクラス(HttpSession)
サービスクラス(HttpSession)はステートフルなアプリケーションを構築するためのクラスで、サーブレット上のHttpSession上に生成されます。生成されたコードのコンストラクタをnewした時点でHttpSession上に作成されます。また、メソッドをコールすることで、その生成されたオブジェクトのメソッドを実行します。
HttpSession上からクリアするには、生成されたクラスのdestroy-instanceメソッドを実行します。これを実行しないとタイムアウトになるまで、HttpSession上に残ってしまうので注意してください。またdestroy-instanceを実行する際にHttpSession自体をクリアすることができます。これには、destroy-instanceのkill-session? = trueを指定してください。(kill-session?はバージョン0.6からの機能です。)(以下のコードを参考)
def foo1 = {Foo} || これはサービスクラス(HttpSession)とします。 def foo2 = {Foo} || これはサービスクラス(HttpSession)とします。 |
また、サービスクラス(HttpSession)のコンストラクタやメソッドの引数に、サーバ上で既に生成されたサービスクラス(HttpSession)を指定することができます。(以下のコードを参考)
|| Fooはサービスクラス(HttpSession)とします。 {hoge.destroy-instance} |
注意)現段階では引数のサービスクラス(HttpSession)は、配列やクラスのフィールドとして扱うことはできません。
サービスクラス(DI)
サービスクラス(DI)は、DIコンテナ上(Spring frameworkやSeasar2など)で管理されているオブジェクトのメソッドをコールするために利用されます。そのため、スコープもDIのほうで管理されているため、クライアントでコンストラクタをnewしても、サーバ側に何もアクションは行いません。また、サービスクラス(HttpSession)のようにdestroy-instanceも用意されておりません。