[Seasar-user:7100] Re: [S2Dao] SMART Deployで複数DBへ接続

加藤 潤一 [E-MAIL ADDRESS DELETED]
2007年 4月 6日 (金) 22:13:23 JST


松崎さん,

加藤です.

私のほうはうまくいきましたよ.

jdbc.diconのDBのインスタンスは立ち上がっていますか?

DoltengからH2のインスタンスをあげて,

jdbc:h2:tcp://localhost:9093/DB_A -> jdbc1.dicon
jdbc:h2:tcp://localhost:9093/DB_B -> jdbc2.dicon

にしています.

小林さんの方法も今から試してみます.

> -----Original Message-----
> From: [E-MAIL ADDRESS DELETED]
> [mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of 松崎 学
> Sent: Friday, April 06, 2007 10:01 PM
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:7098] Re: [S2Dao] SMART Deployで複数DBへ接続
>
> 加藤さん
>
> 松崎です。返信ありがとうございます。
>
> jdbc2.diconに定義した接続に対する検索を行いましたが、
> 以下のエラーが出て動きませんでした。。。
> また、jdbc.diconに定義した接続に対する検索を行っても
> そちらにはコネクションが張られていなかったので、
> テーブルが存在せず検索がエラーになります。
>
> java.lang.NullPointerException: beanClass
>         at
> org.seasar.dao.impl.BeanMetaDataFactoryImpl.createBeanMetaData(BeanMet
> aDataFactoryImpl.java:74)
>         at
> org.seasar.dao.impl.BeanMetaDataFactoryImpl.createBeanMetaData(BeanMet
> aDataFactoryImpl.java:68)
>         at
> org.seasar.dao.impl.DaoMetaDataImpl.initialize(DaoMetaDataImpl.java:14
> 2)
>         at
> org.seasar.dao.impl.DaoMetaDataFactoryImpl.createDaoMetaData(DaoMetaDa
> taFactoryImpl.java:120)
>         at
> org.seasar.dao.impl.DaoMetaDataFactoryImpl.getDaoMetaData(DaoMetaDataF
> actoryImpl.java:102)
>         at
> org.seasar.dao.interceptors.S2DaoInterceptor.invoke(S2DaoInterceptor.j
> ava:51)
>         at
> org.seasar.dao.pager.PagerS2DaoInterceptorWrapper.invoke(PagerS2DaoInt
> erceptorWrapper.java:64)
>         at
> hogehoge.dao2.M_SYAINDao$$EnhancedByS2AOP$$1570945$$MethodInvocation$$
> getBySyainCode0.proceed(MethodInvocationClassGenerator.java)
>         at
> org.seasar.framework.aop.interceptors.TraceInterceptor.invoke(TraceInt
> erceptor.java:59)
>         at
> hogehoge.dao2.M_SYAINDao$$EnhancedByS2AOP$$1570945$$MethodInvocation$$
> getBySyainCode0.proceed(MethodInvocationClassGenerator.java)
>         at
> hogehoge.dao2.M_SYAINDao$$EnhancedByS2AOP$$1570945.getBySyainCode(M_SY
> AINDao$$EnhancedByS2AOP$$1570945.java)
>         at hogehoge.dao2.M_SYAINDaoTest.test001(M_SYAINDaoTest.java:62)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
> ava:39)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
> orImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at junit.framework.TestCase.runTest(TestCase.java:164)
>         at
> org.seasar.framework.unit.S2FrameworkTestCase.doRunTest(S2FrameworkTes
> tCase.java:305)
>         at
> org.seasar.extension.unit.S2TestCase.doRunTest(S2TestCase.java:92)
>         at
> org.seasar.framework.unit.S2FrameworkTestCase.runBare(S2FrameworkTestC
> ase.java:190)
>         at junit.framework.TestResult$1.protect(TestResult.java:106)
>         at junit.framework.TestResult.runProtected(TestResult.java:124)
>         at junit.framework.TestResult.run(TestResult.java:109)
>         at junit.framework.TestCase.run(TestCase.java:120)
>         at
> org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(J
> Unit3TestReference.java:128)
>         at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.
> java:38)
>         at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(Remote
> TestRunner.java:460)
>         at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(Remote
> TestRunner.java:673)
>         at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestR
> unner.java:386)
>         at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTest
> Runner.java:196)
>
> 以上、よろしくお願い致します。
>
> On Fri, 6 Apr 2007 20:40:24 +0900
> 加藤 潤一 <[E-MAIL ADDRESS DELETED]> wrote:
>
> > 松崎さん
> >
> > 加藤です.
> >
> > うーん,実はまだテストしていないのですが,たぶん以下でできるかと思い
> ます.
> >
> >
> > 1)Creatorの作成
> > public class Dao2Creator extends ComponentCreatorImpl {
> >
> >         /**
> >          * Dao2用のクリエータを返します。
> >          *
> >          * @param namingConvention
> >          */
> >         public Dao2Creator(NamingConvention namingConvention) {
> >                 super(namingConvention);
> >                 setNameSuffix(namingConvention.getDaoSuffix());
> >                 setInstanceDef(InstanceDefFactory.PROTOTYPE);
> >                 setEnableInterface(true);
> >                 setEnableAbstract(true);
> >         }
> >
> >         /**
> >          * Dao2用のカスタマイザを返します。
> >          *
> >          * @return
> >          */
> >         public ComponentCustomizer getDao2Customizer() {
> >                 return getCustomizer();
> >         }
> >
> >         /**
> >          * Dao2用のカスタマイザを設定します。
> >          *
> >          * @param customizer
> >          */
> >         public void setDao2Customizer(ComponentCustomizer customizer)
> {
> >                 setCustomizer(customizer);
> >         }
> > }
> >
> >
> > 2)diconファイルへの登録
> >
> > creator.dicon
> >         <component class="hogehoge.creator.Dao2Creator"/>
> >
> > customizer.dicon
> >         <component name="dao2SupportAspectCustomizer"
> class="org.seasar.framework.container.customizer.AspectCustomizer">
> >                 <property
> name="interceptorName">"dao2.interceptor"</property>
> >         </component>
> >         <component name="dao2Customizer"
> class="org.seasar.framework.container.customizer.CustomizerChain">
> >                 <initMethod name="addCustomizer">
> >                         <arg>defaultCustomizer</arg>
> >                 </initMethod>
> >                 <initMethod name="addCustomizer">
> >                         <arg>dao2SupportAspectCustomizer</arg>
> >                 </initMethod>
> >         </component>
> >
> > 3) dao2.interceptorを定義
> >
> > dao.diconをこぴって,dao2.diconにします.
> > この部分を
> > <components namespace="dao2">
> >         <include path="j2ee2.dicon"/>
> > に修正してください.
> >
> > j2ee.diconをこぴってj2ee2.diconに修正
> > この部分を
> > <include path="jdbc2.dicon"/>
> > に修正してください.
> >
> > jdbc.diconをこぴって,jdbc2.diconに.
> > ここで,二つ名のDBの設定を行います.
> >
> > 3)Dao2用のDaoを作成
> > ルートパッケージ名.dao2にxxxDaoを置く.
> >
> >
> > よろしくお願いいたします.
> >
> > > -----Original Message-----
> > > From: [E-MAIL ADDRESS DELETED]
> > > [mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of 松崎 学
> > > Sent: Friday, April 06, 2007 8:27 PM
> > > To: [E-MAIL ADDRESS DELETED]
> > > Subject: [Seasar-user:7093] [S2Dao] SMART Deployで複数DBへ接続
> > >
> > > 松崎です。お世話になります。
> > >
> > > Doltengで作成したChuraプロジェクト(Teeda+S2Dao)で開発をしています。
> > >
> > > このメーリングリストの以下の質問を参考にして
> > > 複数DBへ接続をしようとしてるのですが、うまくいきません。。。
> > > > [Seasar-user:6876] Re: [S2Dao] 複数データソースに対応させたい
> > >
> > > Seasar2.3系で開発していた時も同じ要件があったのですが、
> > > 以下のページを見て解決できました。
> > > http://www.seasar.org/wiki/index.php?FAQ%2FS2DAO#q70fa8ce
> > >
> > > 上記の質問でひがさんが
> > > > rootpackage.dao2.HogeDao2
> > > > に置くようにし、Dao2CreatorとDao2用のCustomizerを追加すると
> > > > SMART deploy的にはうまくいくはずです。
> > > と回答されていますが、どなたか具体的なdiconファイルの書き方を
> > > 教えていただけないでしょうか?
> > > お恥ずかしいのですが、内容が理解できないです。。。
> > >
> > > S2DaoのFAQにも追記していただけるとありがたいです。
> > >
> > > 以上、よろしくお願い致します。
> > >
> > >
> > > _______________________________________________
> > > 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
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user


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