[Seasar-user:15322] 【S2JDBC】シーケンス取得処理で物理コネクションが開放されない
OKADA Ikue
[E-MAIL ADDRESS DELETED]
2008年 8月 8日 (金) 16:00:38 JST
岡田と申します。
トランザクション管理されていないコンポーネントで
S2JDBCを使ってデータをINSERTするとき、シーケンスの取得処理で
DBへの物理コネクションが毎回作成されて開放されず、
コネクションの使い切りが発生するという現象が起きております。
SequenceGeneratorで、DBのシーケンスを参照してIDを振っているのですが、
システムの仕様上、シーケンスのallocationSizeを1とする必要があり
シーケンス取得のために毎回DBアクセスが発生し、そのときに
現象が発生しております。
※下記サンプルのSampleLogicに、トランザクションを適用した場合と
適用しない場合のログを添付いたします。
以下はサンプルとして、サーブレット内でトランザクション管理されていない
コンポーネントを実行しています。
10回目のリクエストで、jdbc.diconに設定するプール数(10)の上限に達し
応答が返ってこなくなります。
※実際に開発するシステムでは、サーブレットではなく
MessageDrivenBean内でコンポーネントを使おうとしています。
トランザクション管理設定をすれば、物理コネクションが作成されなくなるため
問題は解消できるのですが、そもそもシーケンスの取得処理で
このような現象が発生するのは、どのような原因なのでしょうか?
コンポーネントの使い方や設定に問題があるのでしょうか。
ご教示いただければ幸いです。
--------------------------------------------------------
OS :WindowsXP
JRE :1.6.0_03
APサーバ :JBoss 4.0.3 SP1
DB :PostgreSQL 8.3.1
S2Container :2.4.24
SAStruts :1.0.1
--------------------------------------------------------
[SampleServlet.java]
public class SampleServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
S2Container container = SingletonS2ContainerFactory.getContainer();
SampleLogic logic =
(SampleLogic)container.getComponent(SampleLogic.class);
logic.insertSample();
}
}
[SampleLogic.java]
public class SampleLogic {
public JdbcManager jdbcManager;
public void insertSample() {
SampleEntity entity = new SampleEntity();
entity.name = "ikue";
entity.message = "test";
int result = jdbcManager.insert(entity).execute();
}
}
[SampleEntity.java]
@Entity
public class SampleEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator = "SAMPLE_ID_GEN")
@SequenceGenerator(name = "SAMPLE_ID_GEN",
sequenceName = "seq_sample_id", allocationSize = 1)
public int id;
public String name;
public String message;
}
--
Ikue OKADA <[E-MAIL ADDRESS DELETED]>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: Log-Servlet-NoTx.txt
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20080808/b2865998/attachment-0002.txt>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: Log-Servlet-Tx.txt
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20080808/b2865998/attachment-0003.txt>
Seasar-user メーリングリストの案内