[Seasar-user:9891] Re: [DbFlute]entity にidentityの値が設定されない

Yasuo Higa [E-MAIL ADDRESS DELETED]
2007年 8月 14日 (火) 13:32:31 JST


ひがです。

> 多加谷@アークシステムです。
> 
>  <property name="allowLocalTx">false</property>にすると、
> 
> Throwable:org.seasar.framework.exception.SIllegalStateException:
> [ESSR0311]トランザクションが開始されていません
> 
> というエラーが出ます。設定がおかしいのでしょうか?

おかしいみたいですね。
j2ee-rk.diconの中身がわかりませんが、
たぶん、TransactionManagerImplが複数存在していると
思われます。

> あと、複数のDB接続を扱う設定になっているのですが、それがおかしいと
> いうことはありますか?
> 
> 以下、diconです。
> 
> [dbflute.dicon]
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
>  "http://www.seasar.org/dtd/components21.dtd">
> 
> <components namespace="dbflute">
> 
>     <include path="dbflute-pubs.dicon"/>
>     <include path="dbflute-rktest.dicon"/>
>     <include path="dbflute-rk.dicon"/>
> 
> </components>
> 
> [dbflute-rk.dicon]
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
>  "http://www.seasar.org/dtd/components21.dtd">
> 
> <components namespace="dbflute">
> 
>     <include path="j2ee-rk.dicon"/>
> 
> 
>     <!-- S2Dao component. -->
>     <component class="org.seasar.dao.impl.FieldAnnotationReaderFactory"/>
>     <component class="org.seasar.dao.impl.ValueTypeFactoryImpl"/>
>     <component
> class="jp.recruit.kaigi.rkdao.dbflute.rk.allcommon.s2dao.
RkS2DaoMetaDataFactoryImpl"/>
>     <component name="interceptor"
> class="jp.recruit.kaigi.rkdao.dbflute.rk.allcommon.s2dao.RkS2DaoInterceptor"
/>
> 
>     <component
> class="jp.recruit.kaigi.rkdao.dbflute.rk.allcommon.s2dao.
RkS2BeanMetaDataFactoryImpl"/>
>     <component class="org.seasar.dao.impl.DaoNamingConventionImpl"/>
>     <component class="org.seasar.dao.impl.BeanEnhancerImpl"/>
> 
>     <!-- Common column setup interceptor. -->
>     <component name="commonColumnSetupBeforeInsertInterceptor"
> class="jp.recruit.kaigi.rkdao.dbflute.rk.allcommon.interceptor.
RkCommonColumnSetupBeforeInsertInterceptor"/>
>     <component name="commonColumnSetupBeforeUpdateInterceptor"
> class="jp.recruit.kaigi.rkdao.dbflute.rk.allcommon.interceptor.
RkCommonColumnSetupBeforeUpdateInterceptor"/>
>     <component name="commonColumnSetupBeforeDeleteInterceptor"
> class="jp.recruit.kaigi.rkdao.dbflute.rk.allcommon.interceptor.
RkCommonColumnSetupBeforeDeleteInterceptor"/>
> 
>     <!-- Dao selector. -->
>     <component name="daoSelector"
> class="jp.recruit.kaigi.rkdao.dbflute.rk.allcommon.RkCacheDaoSelector">
>         <destroyMethod name="destroy"/>
>     </component>
> 
> 
>     <!-- Original dao component. -->
> 
> 
>     <!-- Original behavior aspect. -->
> 
> 
>     <!-- AppliRole -->
> 
>     <component name="rkAppliRoleDao"
> class="jp.recruit.kaigi.rkdao.dbflute.rk.exdao.RkAppliRoleDao">
>         <aspect>dbflute.interceptor</aspect>
>     </component>
> 
>     <component name="rkAppliRoleBhv"
> class="jp.recruit.kaigi.rkdao.dbflute.rk.exbhv.RkAppliRoleBhv">
>         <aspect pointcut=".*NewTx">requiresNewTx</aspect>
>         <aspect pointcut=".*Tx">requiredTx</aspect>
>         <aspect pointcut="delegateInsert.*, delegateCreate.*, delegateAdd.*,
> callInsert.*, callCreate.*,
> callAdd.*">dbflute.commonColumnSetupBeforeInsertInterceptor</aspect>
>         <aspect pointcut="delegateUpdate.*, delegateModify.*,
> delegateStore.*, callUpdate.*, callModify.*,
> callStore.*">dbflute.commonColumnSetupBeforeUpdateInterceptor</aspect>
>         <aspect pointcut="delegateDelete.*, delegateRemove.*, callDeletee.*,
> callRemove">dbflute.commonColumnSetupBeforeDeleteInterceptor</aspect>
> 
>     </component>
> 
>  (省略)
> 
> </components>
> 
> [j2ee.dicon]
> 
> <?xml version="1.0" encoding="Shift_JIS"?>
> <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
>  "http://www.seasar.org/dtd/components21.dtd">
> <components namespace="j2ee">
>  <component name="transactionManager"
>   class="org.seasar.extension.jta.TransactionManagerImpl"/>
>  <component name="requiredTx"
>   class="org.seasar.extension.tx.RequiredInterceptor"/>
>  <component name="requiresNewTx"
>   class="org.seasar.extension.tx.RequiresNewInterceptor"/>
>  <component name="mandatoryTx"
>   class="org.seasar.extension.tx.MandatoryInterceptor"/>
>  <component name="notSupportedTx"
>   class="org.seasar.extension.tx.NotSupportedInterceptor"/>
> 
>  <component
> class="jp.recruit.kaigi.rkdao.dbflute.rk.allcommon.s2dao.
RkFetchNarrowingResultSetFactory"/>
>    <component
> class="jp.recruit.kaigi.rkdao.dbflute.rk.allcommon.s2dao.
RkS2DaoStatementFactory"/>
>   <!--
>  <component class="org.seasar.extension.jdbc.impl.OracleResultSetFactory"/>
>  <component
> class="org.seasar.extension.jdbc.impl.BooleanToIntStatementFactory"/>
>  -->
> 
> 
>   <component name="xaDataSource"
>   class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
>   <property name="driverClassName">
>    "com.microsoft.sqlserver.jdbc.SQLServerDriver"
>         </property>
>         <property name="URL">
>             "jdbc:sqlserver://localhost:1433"
>         </property>
>         <property name="user">"***"</property>
>         <property name="password">"***"</property>
>     </component>
> 
>  <component name="connectionPool"
>   class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
>   <property name="timeout">600</property>
>   <property name="maxPoolSize">10</property>
>   <!-- JTAトランザクションが開始されていない場合にコネクションを
>        取得できないようにするには次のプロパティをfalseにしてください.-->
>   <!--
>   <property name="allowLocalTx">false</property>
>   -->
>   <!--
>   -->
>   <property name="allowLocalTx">true</property>
> 
>   <!--explicitly set isolation level-->
>   <property
> name="transactionIsolationLevel">@[E-MAIL ADDRESS DELETED]
COMMITTED</property>
> 
>   <destroyMethod name="close"/>
>  </component>
>  <component name="dataSource"
>   class="org.seasar.extension.dbcp.impl.DataSourceImpl"/>
> 
> </components>
> 
> [rkbiz.dicon]
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
>  "http://www.seasar.org/dtd/components21.dtd">
> <components>
> 
>     <include path="j2ee-rk.dicon"/>
> 
>  <component name="myRI" class="org.seasar.extension.tx.RequiredInterceptor">
>  </component>
> 
>  <component 
> class="jp.recruit.kaigi.rkbiz.facade.M020.M020FacadeImpl"><aspect>myRI</
aspect></component>
> 
> (省略)
> 
> </components>
> 
> 
> > 小林 (koichik) です.
> >
> > Date:    Tue, 14 Aug 2007 02:09:17 +0900
> > From:    kubo <[E-MAIL ADDRESS DELETED]>
> > To:      [E-MAIL ADDRESS DELETED]
> > Subject: [Seasar-user:9881] Re: [DbFlute]entity にidentityの値が設定されな
い 
> > 
> >
> >
> >> SQLServerがどうだったかわかりませんが、例えばMySQLなどでは、
> >> 「トランザクションが発行されていないとInsertしたIdentityの値を取得できな
い」 
> >> 
> >>
> >> というようなことがあります。
> >> ですが、ログを見るとしっかり「トランザクションをコミットしました 」と
> >> ありますね。。。
> >
> > あまり可能性は高くないと思いますが,
> > トランザクションを開始/コミットしている
> > トランザクションマネージャと,コネクション
> > プールに DI されているトランザクション
> > マネージャが異なっているとか.
> >
> > j2ee.dicon または jdbc.dicon の ConnectionPool の
> > 設定で,
> >
> > <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><!-- ここ -->
> >  <destroyMethod name="close"/>
> > </component>
> >
> > allowLocalTx を false にすると,コネクション
> > プールに DI されているトランザクションマネージャが
> > トランザクションを開始していないと例外がスロー
> > されるので,確認してみてはいかがでしょうか>多加谷さん
> >
> >
> > -- 
> > <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 mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-user
> >
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 


--
Yasuo Higa
[E-MAIL ADDRESS DELETED]



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