[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 メーリングリストの案内