[Seasar-user:17498] Re: S2JDBCを自分のコードで使いたい

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2009年 5月 22日 (金) 02:30:05 JST


小林 (koichik) です.

Date:    Fri, 22 May 2009 00:33:21 +0900
From:    山田太郎 <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:17497] S2JDBCを自分のコードで使いたい

> 現在SAStruts + S2JDBCで開発していますが、Actionを実行中に
> スレッドを起こして、とりあえず、レスポンスを返しバックグラウンドで
> 処理を行いたいと思っています。そのスレッドの中でS2JDBCを使用して、
> 更新処理を行いたいのですが、どのようにコーディングしたら
> 良いのでしょうか?

普通に S2JDBC を利用するコードを Service として
作成して,それをコンテナから取得して呼び出すとか.

public class XxxService extends AbstractS2Service {
  ...
}

public class XxxThread extends Thread {
  public void run() {
    XxxService xxxService = SingletonS2Container.getComponent(XxxService.class);
    xxxService.xxx();
  }
}


Runnable または Callable を実装したクラス自体や
Executor を S2 で管理してしまってもいいと思います.

public class XxxCommand implements Runnable {
  public XxxService xxxService;

  public void run() {
    xxxService.xxx();
  }
}

app.dicon 
  <component class="XxxCommand"/>
  <component class="java.util.concurrent.ExecutorService">
    @[E-MAIL ADDRESS DELETED]()
    <destroyMethod name="shutdown"/>
  </component>

public class XxxAction {
  public XxxCommand xxxCommand;
  public ExecutorService executorService;

  @Execute
  public String xxx() {
    ...
    executorService.submit(xxxCommand);
    ...
  }
}


こういう用途で使えるかどうか知りませんが, 
S2Chronos を調べてもいいかもしれません.

http://s2chronos.sandbox.seasar.org/ja/


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内