<div dir="ltr"><span style="font-family:arial,sans-serif;font-size:14px">pianyi様</span><br><div><span style="font-family:arial,sans-serif;font-size:14px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:14px">ご教授いただきありがとうございます。</span></div>
<div><span style="font-family:arial,sans-serif;font-size:14px">そのあとの小林様の回答を見ると、当時はTomcatのコネクションプーリングを使用して、Seaser側ではプールしないように設定するように推奨している?ようですが、今回の回答を見ると、推奨が変わったみたいですかね。</span></div><div><span style="font-family:arial,sans-serif;font-size:14px"><br>
</span></div><div><font face="arial, sans-serif"><span style="font-size:14px"><a href="https://ml.seasar.org/archives/seasar-user/2009-June/017734.html">https://ml.seasar.org/archives/seasar-user/2009-June/017734.html</a></span></font><br>
</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014年3月11日 15:33  <span dir="ltr">&lt;<a href="mailto:rasu@mx4.tiki.ne.jp" target="_blank">rasu@mx4.tiki.ne.jp</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
久保様<br>
<br>
ご指摘ありがとうございます。<br>
<br>
<br>
&gt; Tomcatのコネクションプールと別のコネクションプールを設定することにどのような利点があるのでしょう<br>
か。<br>
メーリングリスト:[Seasar-user:17728] [S2JDBC]JNDIで設定されたDataSourceを利用した場合の挙動<br>
関連URL:<a href="http://sho-ishi.hateblo.jp/entry/20090612/1244776411" target="_blank">http://sho-ishi.hateblo.jp/entry/20090612/1244776411</a><br>
<br>
の2か所を確認し「例外が発生した場合にロールバックされない」という<br>
問題が解決すると認識しております。<br>
(正確にはSeasar2 がコネクション管理してくれるようになる)<br>
<br>
そのため、Tomcat + JNDI の環境の時は、このように設定するのが良いと思いました。<br>
<br>
このような回答で良いでしょうか。<br>
以上、よろしくお願いいたします。<br>
<br>
<br>
On Tue Mar 11 11:40:01 JST 2014<br>
<div class="HOEnZb"><div class="h5">Satoshi Kubo &lt;<a href="mailto:megascus@gmail.com">megascus@gmail.com</a>&gt; wrote:<br>
<br>
&gt; こんにちは。<br>
&gt; 久保と申します。<br>
&gt;<br>
&gt; 今回の件とは直接関係ないのですが、興味本位で教えてください。<br>
&gt;<br>
&gt; Tomcatにはコネクションプーリングの機能が備わっておりますが、<br>
&gt; 今回の設定ではSeaser2の方で他のコネクションプールを設定しているようとしているように見えます。<br>
&gt; //tomcatの自動リロードとseaser2のコネクションプーリングの相性が悪くてリークしている?<br>
&gt;<br>
&gt; Tomcatのコネクションプールと別のコネクションプールを設定することにどのような利点があるのでしょう<br>
か。<br>
&gt;<br>
&gt; よろしくお願いします。<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; 2014年3月11日 1:23 Koichi Kobayashi &lt;<a href="mailto:koichik@improvement.jp">koichik@improvement.jp</a>&gt;:<br>
&gt;<br>
&gt; &gt; 小林 (koichik) です。<br>
&gt; &gt;<br>
&gt; &gt; &gt; 設定変更ごとに毎回、APPサーバーの再起動を行うのでしょうか?<br>
&gt; &gt;<br>
&gt; &gt; 個人的にはそれが推奨です。<br>
&gt; &gt; 自分自身ではアプリの再デプロイをする運用は<br>
&gt; &gt; 考えません。<br>
&gt; &gt;<br>
&gt; &gt; &gt; この内容は、下記の設定を行う事で解決と考えて良いのでしょうか。<br>
&gt; &gt; &gt; ・S2JDBCのmaxPoolSizeを10 にする<br>
&gt; &gt; &gt; ・TomcatのmaxActiveを11以上にする<br>
&gt; &gt;<br>
&gt; &gt; はい。<br>
&gt; &gt;<br>
&gt; &gt; &gt; <a href="http://d.hatena.ne.jp/osakana_21/20081006/1223269740" target="_blank">http://d.hatena.ne.jp/osakana_21/20081006/1223269740</a><br>
&gt; &gt; &gt; コメント欄で書かれている意味はどういう事でしょうか?<br>
&gt; &gt;<br>
&gt; &gt; 書いてある通りです。<br>
&gt; &gt; 不明点があれば具体的にお願いします。<br>
&gt; &gt;<br>
&gt; &gt; &gt; 例えば、トランザクションのカスタマイザをServiceCustomizer で指定している場合、<br>
&gt; &gt; &gt; Serviceのメソッドが終わってもcommit されないと言う事なのでしょうか?<br>
&gt; &gt;<br>
&gt; &gt; いいえ。<br>
&gt; &gt; コミットはされますが、その後でコネクションを<br>
&gt; &gt; プールに戻す際にデッドロックになるケースが<br>
&gt; &gt; あるということです。<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; On Mon, 10 Mar 2014 21:25:43 +0900, <a href="mailto:rasu@mx4.tiki.ne.jp">rasu@mx4.tiki.ne.jp</a> wrote:<br>
&gt; &gt;<br>
&gt; &gt; &gt; お世話になっております。<br>
&gt; &gt; &gt; pianyiと申します。<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; 現在、SAStruts + S2JDBC + Postgresql9.3 + Tomcat7.50 で開発を行っておりますが、<br>
&gt; &gt; &gt; DB接続方法をJNDIに変更した所、下記問題が発生して困っております。解決のヒントを下さい。<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; 1.diconファイルやJavaファイルを変更した時に発生する「Tomcatの自動リロード」が発生した場合、<br>
&gt; &gt; &gt; DBコネクションが増えてしまい、接続数オーバー例外(FATAL: sorry, too many clients<br>
&gt; &gt; already)が発生してしまいます。<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; このような場合、どのような設定で開発を進めるのが一番良いでしょうか。<br>
&gt; &gt; &gt; 設定変更ごとに毎回、APPサーバーの再起動を行うのでしょうか?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Context.xmlの設定:<br>
&gt; &gt; &gt; &lt;Resource name=&quot;jdbc/search&quot;<br>
&gt; &gt; &gt;           auth=&quot;Container&quot;<br>
&gt; &gt; &gt;           type=&quot;javax.sql.DataSource&quot;<br>
&gt; &gt; &gt;           driverClassName=&quot;org.postgresql.Driver&quot;<br>
&gt; &gt; &gt;           url=&quot;jdbc:postgresql://localhost:5432/aiueo&quot;<br>
&gt; &gt; &gt;           username=&quot;postgres&quot;<br>
&gt; &gt; &gt;           password=&quot;postgres&quot; /&gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; jdbc.diconの設定:<br>
&gt; &gt; &gt; &lt;components&gt;<br>
&gt; &gt; &gt;     &lt;include path=&quot;jta.dicon&quot;/&gt;<br>
&gt; &gt; &gt;     &lt;!-- from JNDI --&gt;<br>
&gt; &gt; &gt;     &lt;component name=&quot;updateDataSource&quot;<br>
&gt; &gt; &gt;         class=&quot;org.seasar.extension.dbcp.impl.DataSourceXADataSource&quot;&gt;<br>
&gt; &gt; &gt;         &lt;property<br>
&gt; &gt; name=&quot;dataSourceName&quot;&gt;&quot;java:comp/env/jdbc/update&quot;&lt;/property&gt;<br>
&gt; &gt; &gt;     &lt;/component&gt;<br>
&gt; &gt; &gt;     &lt;component name=&quot;connectionPool&quot;<br>
&gt; &gt; &gt;         class=&quot;org.seasar.extension.dbcp.impl.ConnectionPoolImpl&quot;&gt;<br>
&gt; &gt; &gt;         &lt;property name=&quot;timeout&quot;&gt;600&lt;/property&gt;<br>
&gt; &gt; &gt;         &lt;property name=&quot;maxPoolSize&quot;&gt;10&lt;/property&gt;<br>
&gt; &gt; &gt;         &lt;property name=&quot;allowLocalTx&quot;&gt;false&lt;/property&gt;<br>
&gt; &gt; &gt;         &lt;property name=&quot;validationQuery&quot;&gt;&quot;select 1&quot;&lt;/property&gt;<br>
&gt; &gt; &gt;         &lt;property name=&quot;validationInterval&quot;&gt;10000&lt;/property&gt;<br>
&gt; &gt; &gt;         &lt;destroyMethod name=&quot;close&quot;/&gt;<br>
&gt; &gt; &gt;     &lt;/component&gt;<br>
&gt; &gt; &gt;     &lt;component name=&quot;updateDataSource&quot;<br>
&gt; &gt; &gt;         class=&quot;org.seasar.extension.dbcp.impl.DataSourceImpl&quot;<br>
&gt; &gt; &gt;     /&gt;<br>
&gt; &gt; &gt; &lt;/components&gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; 2.下記URLに記載されている問題について教えて下さい。<br>
&gt; &gt; &gt; (無断リンクで申し訳ありません)<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; <a href="http://paulownia.hatenablog.com/entry/20101223/1293112702" target="_blank">http://paulownia.hatenablog.com/entry/20101223/1293112702</a><br>
&gt; &gt; &gt; この内容は、下記の設定を行う事で解決と考えて良いのでしょうか。<br>
&gt; &gt; &gt; ・S2JDBCのmaxPoolSizeを10 にする<br>
&gt; &gt; &gt; ・TomcatのmaxActiveを11以上にする<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; <a href="http://d.hatena.ne.jp/osakana_21/20081006/1223269740" target="_blank">http://d.hatena.ne.jp/osakana_21/20081006/1223269740</a><br>
&gt; &gt; &gt; コメント欄で書かれている意味はどういう事でしょうか?<br>
&gt; &gt; &gt; 例えば、トランザクションのカスタマイザをServiceCustomizer で指定している場合、<br>
&gt; &gt; &gt; Serviceのメソッドが終わってもcommit されないと言う事なのでしょうか?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; カスタマイザーの設定:<br>
&gt; &gt; &gt; &lt;component name=&quot;serviceCustomizer&quot;<br>
&gt; &gt; class=&quot;org.seasar.framework.container.customizer.CustomizerChain&quot;&gt;<br>
&gt; &gt; &gt;     &lt;initMethod name=&quot;addAspectCustomizer&quot;&gt;<br>
&gt; &gt; &gt;         &lt;arg&gt;&quot;aop.traceInterceptor&quot;&lt;/arg&gt;<br>
&gt; &gt; &gt;     &lt;/initMethod&gt;<br>
&gt; &gt; &gt;     &lt;initMethod name=&quot;addCustomizer&quot;&gt;<br>
&gt; &gt; &gt;         &lt;arg&gt;<br>
&gt; &gt; &gt;             &lt;component<br>
&gt; &gt; class=&quot;org.seasar.framework.container.customizer.TxAttributeCustomizer&quot;/&gt;<br>
&gt; &gt; &gt;         &lt;/arg&gt;<br>
&gt; &gt; &gt;     &lt;/initMethod&gt;<br>
&gt; &gt; &gt; &lt;/component&gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; 3.JNDIを使用するにあたり注意事項や他の注意点など有りましたらご教授下さい。<br>
&gt; &gt; &gt; (JNDIじゃ無くて別のを使う方が良い…など)<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; 因みに、JNDIの採用理由は、WARファイルを数十か所に配布するため、更新後のDB接続先などの変更ミス<br>
を防ぐためです。<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; 以上、よろしくお願いいたします。<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; Seasar-user mailing list<br>
&gt; &gt; &gt; <a href="mailto:Seasar-user@ml.seasar.org">Seasar-user@ml.seasar.org</a><br>
&gt; &gt; &gt; <a href="https://ml.seasar.org/mailman/listinfo/seasar-user" target="_blank">https://ml.seasar.org/mailman/listinfo/seasar-user</a><br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; --<br>
&gt; &gt; {<br>
&gt; &gt;   name: &quot;Koichi Kobayashi&quot;,<br>
&gt; &gt;   mail: &quot;<a href="mailto:koichik@improvement.jp">koichik@improvement.jp</a>&quot;,<br>
&gt; &gt;   blog: &quot;<a href="http://d.hatena.ne.jp/koichik/" target="_blank">http://d.hatena.ne.jp/koichik/</a>&quot;,<br>
&gt; &gt;   twitter: &quot;@koichik&quot;<br>
&gt; &gt; }<br>
&gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; Seasar-user mailing list<br>
&gt; &gt; <a href="mailto:Seasar-user@ml.seasar.org">Seasar-user@ml.seasar.org</a><br>
&gt; &gt; <a href="https://ml.seasar.org/mailman/listinfo/seasar-user" target="_blank">https://ml.seasar.org/mailman/listinfo/seasar-user</a><br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Satoshi Kubo<br>
&gt; mailto:<a href="mailto:megascus@gmail.com">megascus@gmail.com</a><br>
&gt;<br>
<br>
_______________________________________________<br>
Seasar-user mailing list<br>
<a href="mailto:Seasar-user@ml.seasar.org">Seasar-user@ml.seasar.org</a><br>
<a href="https://ml.seasar.org/mailman/listinfo/seasar-user" target="_blank">https://ml.seasar.org/mailman/listinfo/seasar-user</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Satoshi Kubo<br>mailto:<a href="mailto:megascus@gmail.com">megascus@gmail.com</a>
</div>