[Seasar-user:7098] Re: [S2Dao] SMART Deployで複数DBへ接続
松崎 学
[E-MAIL ADDRESS DELETED]
2007年 4月 6日 (金) 22:00:41 JST
加藤さん
松崎です。返信ありがとうございます。
jdbc2.diconに定義した接続に対する検索を行いましたが、
以下のエラーが出て動きませんでした。。。
また、jdbc.diconに定義した接続に対する検索を行っても
そちらにはコネクションが張られていなかったので、
テーブルが存在せず検索がエラーになります。
java.lang.NullPointerException: beanClass
at org.seasar.dao.impl.BeanMetaDataFactoryImpl.createBeanMetaData(BeanMetaDataFactoryImpl.java:74)
at org.seasar.dao.impl.BeanMetaDataFactoryImpl.createBeanMetaData(BeanMetaDataFactoryImpl.java:68)
at org.seasar.dao.impl.DaoMetaDataImpl.initialize(DaoMetaDataImpl.java:142)
at org.seasar.dao.impl.DaoMetaDataFactoryImpl.createDaoMetaData(DaoMetaDataFactoryImpl.java:120)
at org.seasar.dao.impl.DaoMetaDataFactoryImpl.getDaoMetaData(DaoMetaDataFactoryImpl.java:102)
at org.seasar.dao.interceptors.S2DaoInterceptor.invoke(S2DaoInterceptor.java:51)
at org.seasar.dao.pager.PagerS2DaoInterceptorWrapper.invoke(PagerS2DaoInterceptorWrapper.java:64)
at hogehoge.dao2.M_SYAINDao$$EnhancedByS2AOP$$1570945$$MethodInvocation$$getBySyainCode0.proceed(MethodInvocationClassGenerator.java)
at org.seasar.framework.aop.interceptors.TraceInterceptor.invoke(TraceInterceptor.java:59)
at hogehoge.dao2.M_SYAINDao$$EnhancedByS2AOP$$1570945$$MethodInvocation$$getBySyainCode0.proceed(MethodInvocationClassGenerator.java)
at hogehoge.dao2.M_SYAINDao$$EnhancedByS2AOP$$1570945.getBySyainCode(M_SYAINDao$$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.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.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(S2FrameworkTestCase.java:305)
at org.seasar.extension.unit.S2TestCase.doRunTest(S2TestCase.java:92)
at org.seasar.framework.unit.S2FrameworkTestCase.runBare(S2FrameworkTestCase.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(JUnit3TestReference.java:128)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.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 メーリングリストの案内