[Seasar-user:21809] Re: TomcatのJNDI との連携について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2014年 3月 11日 (火) 01:23:43 JST


小林 (koichik) です。

> 設定変更ごとに毎回、APPサーバーの再起動を行うのでしょうか?

個人的にはそれが推奨です。
自分自身ではアプリの再デプロイをする運用は
考えません。

> この内容は、下記の設定を行う事で解決と考えて良いのでしょうか。
> ・S2JDBCのmaxPoolSizeを10 にする
> ・TomcatのmaxActiveを11以上にする

はい。

> http://d.hatena.ne.jp/osakana_21/20081006/1223269740
> コメント欄で書かれている意味はどういう事でしょうか?

書いてある通りです。
不明点があれば具体的にお願いします。

> 例えば、トランザクションのカスタマイザをServiceCustomizer で指定している場合、
> Serviceのメソッドが終わってもcommit されないと言う事なのでしょうか?

いいえ。
コミットはされますが、その後でコネクションを
プールに戻す際にデッドロックになるケースが
あるということです。


On Mon, 10 Mar 2014 21:25:43 +0900, rasu @ mx4.tiki.ne.jp wrote:

> お世話になっております。
> pianyiと申します。
> 
> 現在、SAStruts + S2JDBC + Postgresql9.3 + Tomcat7.50 で開発を行っておりますが、
> DB接続方法をJNDIに変更した所、下記問題が発生して困っております。解決のヒントを下さい。
> 
> 
> 1.diconファイルやJavaファイルを変更した時に発生する「Tomcatの自動リロード」が発生した場合、
> DBコネクションが増えてしまい、接続数オーバー例外(FATAL: sorry, too many clients already)が発生してしまいます。
> 
> このような場合、どのような設定で開発を進めるのが一番良いでしょうか。
> 設定変更ごとに毎回、APPサーバーの再起動を行うのでしょうか?
> 
> Context.xmlの設定:
> <Resource name="jdbc/search"
>           auth="Container"
>           type="javax.sql.DataSource"
>           driverClassName="org.postgresql.Driver"
>           url="jdbc:postgresql://localhost:5432/aiueo"
>           username="postgres"
>           password="postgres" />
> 
> jdbc.diconの設定:
> <components>
>     <include path="jta.dicon"/>
>     <!-- from JNDI -->
>     <component name="updateDataSource"
>         class="org.seasar.extension.dbcp.impl.DataSourceXADataSource">
>         <property name="dataSourceName">"java:comp/env/jdbc/update"</property>
>     </component>
>     <component name="connectionPool"
>         class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
>         <property name="timeout">600</property>
>         <property name="maxPoolSize">10</property>
>         <property name="allowLocalTx">false</property>
>         <property name="validationQuery">"select 1"</property>
>         <property name="validationInterval">10000</property>
>         <destroyMethod name="close"/>
>     </component>
>     <component name="updateDataSource"
>         class="org.seasar.extension.dbcp.impl.DataSourceImpl"
>     />
> </components>
> 
> 
> 
> 2.下記URLに記載されている問題について教えて下さい。
> (無断リンクで申し訳ありません)
> 
> http://paulownia.hatenablog.com/entry/20101223/1293112702
> この内容は、下記の設定を行う事で解決と考えて良いのでしょうか。
> ・S2JDBCのmaxPoolSizeを10 にする
> ・TomcatのmaxActiveを11以上にする
> 
> 
> http://d.hatena.ne.jp/osakana_21/20081006/1223269740
> コメント欄で書かれている意味はどういう事でしょうか?
> 例えば、トランザクションのカスタマイザをServiceCustomizer で指定している場合、
> Serviceのメソッドが終わってもcommit されないと言う事なのでしょうか?
> 
> カスタマイザーの設定:
> <component name="serviceCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain">
>     <initMethod name="addAspectCustomizer">
>         <arg>"aop.traceInterceptor"</arg>
>     </initMethod>
>     <initMethod name="addCustomizer">
>         <arg>
>             <component class="org.seasar.framework.container.customizer.TxAttributeCustomizer"/>
>         </arg>
>     </initMethod>
> </component>
> 
> 
> 
> 3.JNDIを使用するにあたり注意事項や他の注意点など有りましたらご教授下さい。
> (JNDIじゃ無くて別のを使う方が良い…など)
> 
> 因みに、JNDIの採用理由は、WARファイルを数十か所に配布するため、更新後のDB接続先などの変更ミスを防ぐためです。
> 
> 
> 
> 以上、よろしくお願いいたします。
> 
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user


-- 
{
  name: "Koichi Kobayashi",
  mail: "koichik @ improvement.jp",
  blog: "http://d.hatena.ne.jp/koichik/",
  twitter: "@koichik"
}



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