<div>$BJV?.$"$j$,$H$&$4$6$$$^$9!#(B</div>
<div>okuda$B$G$9!#(B</div>
<div>&nbsp;</div>
<div>&gt; $B=$@5$7$F(BSNAPSHOT$B$r:n@.$7$?$N$G(Bdoma-1.18.0.jar$B$NBe$o$j$K(B<br>&gt; $B<!$N(Bjar$B$G;n$7$F$$$?$@$1$J$$$G$7$g$&$+!#(B<br>$BAaB.$N$4BP1~$"$j$,$H$&$4$6$$$^$9!#(B</div>
<div>$BF0:n3NG'$,=*$o$j$^$7$?$i!"2~$a$F$4Js9p$$$?$7$^$9!#(B</div>
<div>&nbsp;</div>
<div>&gt; $B%$%s%?!<%;%W%?$r%+%9%?%^%$%6$G@_Dj$9$k:](BuseLookupAdapter$B$r(Btrue$B$K$9$kI,MW$,$"$j$^$9!#(B<br>$B>pJs$"$j$,$H$&$4$6$$$^$9!#(B</div>
<div>&nbsp;&lt;component name=&quot;actionCustomizer&quot;<br>class=&quot;org.seasar.framework.container.customizer.CustomizerChain&quot;&gt;<br>&nbsp;&nbsp; &lt;initMethod name=&quot;addAspectCustomizer&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;arg&gt;&quot;selectDataSourceInterceptor&quot;&lt;/arg&gt;</div>

<div>&nbsp;&nbsp;&nbsp;&nbsp; &lt;arg&gt;true&lt;/arg&gt;&nbsp;&nbsp; // $B"+DI2C(B<br>&nbsp;&nbsp; &lt;/initMethod&gt;<br>&nbsp;&nbsp; ....<br>&nbsp;&lt;/component&gt;</div>
<div>$B$H$9$k$@$1$G59$7$+$C$?$G$7$g$&$+!)(B</div>
<div>$B!J5-:\$$$?$@$$$?%j%s%/$N>eCJ(BAspectCustomizer $B$rMxMQ$9$kNc$O!"%3%s%]!<%M%s%H<+F0EPO?$rMxMQ$7$J$$>l9g$N(B</div>
<div>$B!!(BaddCustomizer$B$N%3!<%INc$NG'<1$G$9!#!K(B</div>
<div>&nbsp;</div>
<div>$B>/$7OC$,0o$l$F$7$^$&$N$G$9$,!"(BS2$B$N%$%s%9%?%s%94IM}$K$D$$$F<ALd$5$;$F$/$@$5$$!#(B</div>
<div>$B%$%s%9%?%s%9B0@-$H$7$F!"(Bsingleton, prototype, request, etc..$B$H$"$j$^$9$,!"(B</div>
<div>$B2<$N%l%Y%k$+$i>e$N%l%Y%k$r(BDI$B$GJ];}$9$k$H$-!"Nc$($P!"(B</div>
<div>prototype$B%9%3!<%W$N%*%V%8%'%/%H$N%a%s%P%U%#!<%k%I$G(Brequest$B%9%3!<%W$N(BResource$B$,Dj5A$5$l$F$$$k>l9g!"(B</div>
<div>1$B%j%/%(%9%H$N4V$G$"$l$P!"J#?t$N(Bprototype$B%*%V%8%'%/%H$N4V$GF1$8(Brequest$B%*%V%8%'%/%H$,;H$$$^$o$5$l$k!"(B</div>
<div>$B$H$$$&G'<1$G9g$C$F$$$k$G$7$g$&$+!)(B</div>
<div>$B!J@($/=iJbE*$J<ALd$+$H;W$$$^$9$,!"(BDI$B$r=i$a$FMxMQ$9$k$b$N$G$7$F!#!#!K(B</div>
<div><br>$B0J>e!"$h$m$7$/$*4j$$$$$?$7$^$9!#(B</div>
<div>&nbsp;<br>&nbsp;</div>
<div class="gmail_quote">2011$BG/(B10$B7n(B10$BF|(B22:39 Toshihiro Nakamura <span dir="ltr">&lt;<a href="mailto:toshihiro.nakamura@gmail.com" target="_blank">toshihiro.nakamura@gmail.com</a>&gt;</span>:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">$BCfB<(B(taedium)$B$G$9!#(B<br>
<div><br>&gt; $B$^$?!"%G%P%C%0<B9T$GDI$C$F$_$?8B$j$G$O!"(BAnyTableDaoImpl$B!J(Bdoma...AbstractDao$B!K$N%3%s%9%H%i%/%?$+$i(B<br>&gt; RuntimeConfig$B$r%$%s%9%?%s%92=$9$k:]$N(B<br>&gt; AssertionUtil.assertNotNull(config.getDataSourceName()); $B$K$F(B<br>&gt; $BA0=R$N$h$&$K(Bnull$B$G<hF@$5$l$k$?$a!"%(%i!<$,H/@8$7$F$$$k$h$&$G$7$?!#(B<br>
<br></div>$B$3$N5sF0$O!"(BDoma$B$N%P%0$G$9$M!#!#!#(B<br>$B=$@5$7$F(BSNAPSHOT$B$r:n@.$7$?$N$G(Bdoma-1.18.0.jar$B$NBe$o$j$K(B<br>$B<!$N(Bjar$B$G;n$7$F$$$?$@$1$J$$$G$7$g$&$+!#(B<br><a href="http://maven.seasar.org/maven2-snapshot/org/seasar/doma/doma/1.19.0-SNAPSHOT/doma-1.19.0-20111010.130704-1.jar" target="_blank">http://maven.seasar.org/maven2-snapshot/org/seasar/doma/doma/1.19.0-SNAPSHOT/doma-1.19.0-20111010.130704-1.jar</a><br>
<br>$B$=$l$H!":#2s$N8=>]$HD>@\$O4X78$"$j$^$;$s$,!"(B<br>$B%$%s%?!<%;%W%?$r%+%9%?%^%$%6$G@_Dj$9$k:](BuseLookupAdapter$B$r(Btrue$B$K$9$kI,MW$,$"$j$^$9!#(B<br>$B!J$=$&$7$J$$$H!"(BCOOL deploy$B;~$K!"%$%s%?!<%;%W%?$,(Bprototype$B$H$7$FF0:n$7$^$;$s!K(B<br>$B@_DjJ}K!$O<!$N%j%s%/@h$,;29M$K$J$j$^$9!#(B<br><a href="http://www.seasar.org/wiki/index.php?FAQ%2FS2AOP#q69751d4" target="_blank">http://www.seasar.org/wiki/index.php?FAQ%2FS2AOP#q69751d4</a><br>
<br>2011$BG/(B10$B7n(B10$BF|(B12:29 . &lt;<a href="mailto:luck62@gmail.com" target="_blank">luck62@gmail.com</a>&gt;:<br>
<div>
<div></div>
<div>&gt; $BJV?.$"$j$,$H$&$4$6$$$^$9!#(B<br>&gt; okdua$B$G$9!#(B<br>&gt;<br>&gt;&gt; $B!V(BgetComponent$B$K$h$C$F<hF@$9$k!W$H$"$j$^$9$,!"$3$l$O!"(B<br>&gt;&gt; net.arnx.jsonic.web.extension.S2Container$B%/%i%9$N(BgetComponent$B%a%=%C%I(B<br>&gt;&gt; $B$NCf$G9T$o$l$k=hM}$r;X$7$F$$$k$N$G$7$g$&$+!)(B<br>&gt; $B?=$7Lu$"$j$^$;$s!#(B<br>
&gt; net.arnx.jsonic.web.extension.S2Container$B%/%i%9$N(BgetComponent$B$r;X$7$F$$$^$7$?!#(B<br>&gt; $B!JJdB-$G$9$,!"(Bnet.arnx.jsonic.web.RESTServlet$B$NCf$G$O!"(BS2Container$B$+$i(BSingletonS2ContainerFactory$B$X(B<br>&gt; $B0Q>y$7$F(BgetComponent$B$+$i(Bcomponent$B$r<hF@$7!"JLES8F$S=P$9%a%=%C%IL>$r7hDj$7$F$+$i!"(B<br>
&gt; component$B$K(Bexecute$B$r$+$1$F$$$k$h$&$G$9!#!K(B<br>&gt;<br>&gt;&gt; SelectDataSourceInterceptor$B$O(BS2$B%3%s%F%J$KEPO?$G$-$F$$$^$9$+!)(B<br>&gt; $B$O$$!"%Q%C%1!<%8L>(B.interceptor.SelectDataSourceInterceptor$B$H$7$F:n@.$7$F$*$j$^$9!#(B<br>&gt; $B$^$?!"(Bcreator.dicon $B$K$O!"(BInterceptorCreator $B$*$h$S(B ActionCreator$B$r(B<br>
&gt; $BDj5A$7$F$*$j$^$9!#(B<br>&gt; $B!J(BService/DAO$B$K$D$$$F$b!"3:Ev$N(BCreator$B$rDj5A$7!"<+F0EPO?$rMxMQ$7$F$$$^$9!#!K(B<br>&gt;<br>&gt;&gt; $B%3%s%9%H%i%/%?$H(BgetComponent$B$OJLJ*$G$9$7!"$=$l$i$NA0$K<B9T$5$;$k$H$$$&$N(B<br>&gt;&gt; $B$H$O$A$,$&$s$8$c$J$$$G$7$g$&$+!#(B<br>&gt; ActionCreator$B$rMxMQ$7$?>l9g!"(BAction$B$O(B request $B%9%3!<%W$G:n@.$5$l$k$H(B<br>
&gt; $B%j%U%!%l%s%9$K$"$j$^$7$?$N$G!"$F$C$-$j(BgetComponent$B$,%3!<%k$5$l$?;~$K(B<br>&gt; $B%$%s%9%?%s%92=$r9T$C$F$$$k$b$N$H;W$C$F$$$^$7$?!#(B<br>&gt; $B$^$?!"(BAction$B%$%s%9%?%s%92=;~$K!"(BService$B$N%$%s%9%?%s%92=$b9T$o$l!"(B<br>&gt; $B99$K$=$NCf$G(BDAO$B$N%$%s%9%?%s%92=$,9T$o$l!"!"$HEAGE$9$k$b$N$H2r<a$7$F$$$^$7$?!#(B<br>&gt; $B!J%9%3!<%W$K$h$C$F(Bsingleton$B$G=`Hw$9$k$b$N$O!"%$%s%9%?%s%92=$5$l$J$$$H$$$&0UL#(B<br>
&gt;$B!!(B&nbsp;$B$G!"873J$K$OJLJ*$HI=8=$5$l$F$$$k$N$G$7$?$i!"$9$_$^$;$s!#!K(B<br>&gt;<br>&gt; $B2?8N!"%3%s%9%H%i%/%?$H;d$,;W$C$?$N$+$H$$$&$H!"(B<br>&gt; $B!&(BDAO$B$rMxMQ$9$k(BAction $B!J87L)$K$O!V(BDAO$B$rMxMQ$9$k(BService$B!W$rMxMQ$9$k(BAction$B!K(B<br>&gt; $B!&(BDAO$B$rMxMQ$7$J$$(BAction<br>&gt; $B$NFs$D$G;n$7$F$_$?$H$3$m!"8e<T$N(BDAO$B$rMxMQ$7$J$$(BAction$B$G$O!"(B<br>&gt; SelectDataSourceInterceptor.invoke()$B$,<B9T$5$l$?$?$a$G$9!#(B<br>
&gt; $B!J<B9T$O%V%l!<%/%]%$%s%H!u%m%0=PNO$G3NG'$7$^$7$?!#!K(B<br>&gt; $B$^$?!"A0<T$N(BDAO$B$rMxMQ$9$k(BAction$B$N>l9g$O!"(B<br>&gt; $B2<5-$N$h$&$J%m%0$,=PNO$5$l$F$$$^$7$?!#(B<br>&gt; $B$G$9$N$G!"<B:]$N%j%/%(%9%H$KBP$9$k%a%=%C%I$N<B9T$NA0$K(BDAO$B$N%$%s%9%?%s%92=$,9T$o$l!"(B<br>&gt; &nbsp; &nbsp; Dao.constructor() $B"*(B SelectDataSourceInterceptor.invoke()<br>&gt; $B$N$h$&$K$J$C$F$7$^$$!"(BSelectDataSourceInterceptor.invoke()$B$NA0$K(BAppConfig$B$+$i(BDataSourceName$B$r(B<br>
&gt; $B<hF@$7$h$&$H$7$F$$$k$N$G$O$J$$$+!)$H2r<a$7$?$?$a$G$9!#(B<br>&gt; $B$^$?!"%G%P%C%0<B9T$GDI$C$F$_$?8B$j$G$O!"(BAnyTableDaoImpl$B!J(Bdoma...AbstractDao$B!K$N%3%s%9%H%i%/%?$+$i(B<br>&gt; RuntimeConfig$B$r%$%s%9%?%s%92=$9$k:]$N(B<br>&gt; AssertionUtil.assertNotNull(config.getDataSourceName()); $B$K$F(B<br>&gt; $BA0=R$N$h$&$K(Bnull$B$G<hF@$5$l$k$?$a!"%(%i!<$,H/@8$7$F$$$k$h$&$G$7$?!#(B<br>
&gt;<br>&gt; $B$"$H0lJb$N$h$&$J5$$,$9$k$N$G$9$,!"$I$&@_Dj$9$l$P$h$$$N$+J,$+$i$J$$<!Bh$G$9!#!#(B<br>&gt; $B8@MUB-$i$:$JItJ,$b$"$k$+$H;W$$$^$9$,!"$465<($$$?$@$1$k$H9,$$$G$9!#(B<br>&gt;<br>&gt;<br>&gt; $B!Z%m%0![(B<br>&gt; ...<br>&gt; $B%/%i%9(B(foo.bar.package.action.LoginAction[login_loginAction])$B$N%3%s%]!<%M%s%HDj5A$rEPO?$7$^$9(B<br>
&gt; ...<br>&gt; $B%/%i%9(B(foo.bar.package.interceptor.SelectDataSourceInterceptor[selectDataSourceInterceptor])$B$N%3%s%]!<%M%s%HDj5A$rEPO?$7$^$9(B<br>&gt; ...<br>&gt; $B%/%i%9(B(foo.bar.package.service.LoginService[login_loginService])$B$N%3%s%]!<%M%s%HDj5A$rEPO?$7$^$9(B<br>
&gt; ...<br>&gt; $B%/%i%9(B(foo.bar.package.dao.base.impl.AnyTableDaoImpl[base_anyTableDao])$B$N%3%s%]!<%M%s%HDj5A$rEPO?$7$^$9(B<br>&gt;<br>&gt; $B0J>e!"$h$m$7$/$*4j$$$$$?$7$^$9!#(B<br>&gt;<br>&gt; 2011$BG/(B10$B7n(B10$BF|(B4:29 Toshihiro Nakamura &lt;<a href="mailto:toshihiro.nakamura@gmail.com" target="_blank">toshihiro.nakamura@gmail.com</a>&gt;:<br>
&gt;&gt;<br>&gt;&gt; $BCfB<(B(taedium)$B$G$9!#(B<br>&gt;&gt;<br>&gt;&gt; &gt; $B%/%i%$%"%s%H$+$i%j%/%(%9%H$,Mh$?:]!"(BAction$B$r(BgetComponent$B$K$h$C$F<hF@$9$k(B<br>&gt;&gt; &gt; $B$N$G$9$,!"F1$8%?%$%_%s%0$G(BService/DAO$B$b%$%s%9%?%s%92=$5$l$k$3$H$r(B<br>&gt;&gt; &gt; $B3NG'$7$^$7$?!#(B<br>&gt;&gt;<br>&gt;&gt; $B!V(BgetComponent$B$K$h$C$F<hF@$9$k!W$H$"$j$^$9$,!"$3$l$O!"(B<br>
&gt;&gt; net.arnx.jsonic.web.extension.S2Container$B%/%i%9$N(BgetComponent$B%a%=%C%I(B<br>&gt;&gt; $B$NCf$G9T$o$l$k=hM}$r;X$7$F$$$k$N$G$7$g$&$+!)(B<br>&gt;&gt; $B%"%W%j%1!<%7%g%s$G9T$C$F$$$k=hM}$r;X$7$F$$$k$N$+(BJSONIC$B$K$h$k=hM}$r(B<br>&gt;&gt; $B;X$7$F$$$k$N$+$o$+$j$^$;$s$G$7$?!#(B<br>&gt;&gt;<br>&gt;&gt; SelectDataSourceInterceptor$B$O(BS2$B%3%s%F%J$KEPO?$G$-$F$$$^$9$+!)(B<br>
&gt;&gt; SMART deploy$B$r;H$C$FEPO?$9$k$N$G$"$l$P!"(B<br>&gt;&gt; SelectDataSourceInterceptor$B$,!V%k!<%H%Q%C%1!<%8L>(B.interceptor$B!W$H$$$&(B<br>&gt;&gt; $BL>A0$N%Q%C%1!<%8$KG[CV$5$l$F$$$k$3$H$r3NG'$7$F$/$@$5$$!#(B<br>&gt;&gt; $B$5$i$K!"(Bcreator.dicon$B$K<!$N5-=R$,$"$k$3$H$r3NG'$7$F$/$@$5$$!#(B<br>&gt;&gt; &lt;component<br>
&gt;&gt; class=&quot;org.seasar.framework.container.creator.InterceptorCreator&quot;/&gt;<br>&gt;&gt;<br>&gt;&gt; creator.dicon$B$G0J2<$N5-=R$O$5$l$F$$$^$9$+!)(B<br>&gt;&gt; &lt;component class=&quot;org.seasar.framework.container.creator.ActionCreator&quot;/&gt;<br>
&gt;&gt; $B$3$N5-=R$,$J$$$H!"(Bcustomizer.dicon$B$N(BactionCustomizer$B$N@_Dj$,H?1G$5$l$^$;$s!#(B<br>&gt;&gt; $B!J(BAction$B$r(BSMART deploy$B$GEPO?$7$F$$$k$N$G$"$l$P5-=R$5$l$F$$$k$O$:$G$9$,!K(B<br>&gt;&gt;<br>&gt;&gt; &gt; $B$7$+$7!"(BInterceptor$B$,<B9T$5$l$:!"(BDAO$B$K$F(BConfig$B$+$i(BDatasourceName$B$r<hF@(B<br>&gt;&gt; &gt; $B$G$-$J$$$H$$$&%(%i!<$,H/@8$7$F$7$^$$$^$7$?!#(B<br>
&gt;&gt;<br>&gt;&gt; $BG0$N$?$a$K!"(BInterceptor$B$O<B9T$5$l$F$$$k$1$l$I$b(B<br>&gt;&gt; DatasourceName$B$K(Bnull$B$,@_Dj$5$l$k$3$H$G%(%i!<$,H/@8$7$F$$$k!"(B<br>&gt;&gt; $B$H$$$&2DG=@-$O$J$$$+3NG'$7$F$_$k$H$h$$$+$b$7$l$^$;$s!#(B<br>&gt;&gt;<br>&gt;&gt; &gt; Interceptor$B$O!"%3%s%9%H%i%/%?!J(BgetComponent$B!K$NA0$K<B9T$5$;$k$3$H$,(B<br>
&gt;&gt; &gt; $B$G$-$J$$$N$G$7$g$&$+!)(B<br>&gt;&gt;<br>&gt;&gt; Interceptor$B$r;H$&$HFCDj$N%a%=%C%I8F$S=P$7$NA08e$GG$0U$N=hM}$r<B9T$G$-$^$9!#(B<br>&gt;&gt; $B:#2s$d$j$?$$$3$H$O$^$5$K$=$l$@$H;W$$$^$9!J(BAction$B$N%a%=%C%I$NA08e$G=hM}$r$9$k!K!#(B<br>&gt;&gt; $B%3%s%9%H%i%/%?$H(BgetComponent$B$OJLJ*$G$9$7!"$=$l$i$NA0$K<B9T$5$;$k$H$$$&$N(B<br>&gt;&gt; $B$H$O$A$,$&$s$8$c$J$$$G$7$g$&$+!#(B<br>
&gt;&gt;<br>&gt;&gt; $BMW7o$KBP$7$F!"8=:_$d$m$&$H$7$F$$$k$3$H$NJ}8~@-$O$^$A$,$C$F$$$J$$$H;W$$$^$9!#(B<br>&gt;&gt; $B2?$i$+$NM}M3$G!"(BInterceptor$B$,(BAction$B$KE,MQ$5$l$F$$$J$$$h$&$G$9$,(B<br>&gt;&gt; $BE,@Z$K@_Dj$9$l$P2r7h$G$-$k$H;W$$$^$9!#(B<br>&gt;&gt;<br>&gt;&gt; 2011$BG/(B10$B7n(B9$BF|(B22:00 &nbsp;&lt;<a href="mailto:luck62@gmail.com" target="_blank">luck62@gmail.com</a>&gt;:<br>
&gt;&gt; &gt; $B$O$8$a$^$7$F!#(B<br>&gt;&gt; &gt; okuda$B$H?=$7$^$9!#(B<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; $B8=:_!"(BSeasar2+Doma(+JSONIC REST Servlet)$B$K$F!"3+H/$r9T$J$C$F$*$j$^$9!#(B<br>&gt;&gt; &gt; $B%G!<%?9=B$$,F1$8$G%9%-!<%^$,0[$J$k(BDB$B$XF0E*$K@Z$jBX$($F%"%/%;%9$7$?$$$N$G(B<br>&gt;&gt; &gt; $B$9$,!">e<j$/F0:n$7$J$/m5$$$F$*$j$^$9!#(B<br>
&gt;&gt; &gt; $BBgJQ$*<j?t$G$9$,!"$465<($$$?$@$1$k$H9,$$$G$9!#(B<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; $B!Z4D6-![(B<br>&gt;&gt; &gt; $B!&(BJDK 1.6u27<br>&gt;&gt; &gt; $B!&(BTomacat 6.0.29<br>&gt;&gt; &gt; $B!&(BSeasar2 2.4.44<br>&gt;&gt; &gt; $B!&(BDoma 1.18.0<br>&gt;&gt; &gt; $B!&(BJSONIC 1.2.7<br>
&gt;&gt; &gt; $B!&(BJDBC4 Postgresql Driver, Version 9.1-901<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; $B!ZMW7o![(B<br>&gt;&gt; &gt; $B!&%j%/%(%9%H(BURI$B$K$h$C$F!"@\B3$9$k%9%-!<%^$rF0E*$KJQ99$9$k(B<br>&gt;&gt; &gt; $B!&(BDI$B$r9T$&:]$O(BEJB3$B=`5r$G9T$&(B<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; $B!Z;n$7$?J}K!![(B<br>
&gt;&gt; &gt; $B!&(BDoma JPetStore$B$r;29M$K!"(Bdemo.config$B%Q%C%1!<%8$N$b$N$r$=$N$^$^N.MQ(B<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; (AppConfig,CommonsJdbcLogger,S2RequiresNewController,SqlFileRepositoryProxy)<br>&gt;&gt; &gt; DAO$B$K$O!"(B@Dao(config = AppConfig.class)$B%"%N%F!<%7%g%s$rIUM?$7$F$$$^$9!#(B<br>
&gt;&gt; &gt; $B!&!VF1$8<oN`$N%G!<%?%=!<%9$rF0E*$K@Z$jBX$($k!W(B<br>&gt;&gt; &gt; <a href="http://s2container.seasar.org/2.4/ja/jdbc.html#DataSourceDynamicSwiching" target="_blank">http://s2container.seasar.org/2.4/ja/jdbc.html#DataSourceDynamicSwiching</a><br>
&gt;&gt; &gt; $B$r;29M$K!"2<5-!Z:n@.%=!<%9![$N$h$&$K(Bdicon$B$*$h$S(BInterceptor$B$r:n@.(B<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; $B!Z<ALd![(B<br>&gt;&gt; &gt; $B#1!%(B<br>&gt;&gt; &gt; Interceptor$B"*(BAction$B"*(BService$B"*(BDAO$B$H(BDI$B$rMQ$$$F%"%/%;%9$7$F$$$/$3$H$r(B<br>&gt;&gt; &gt; $BA[Dj$7$F$$$^$9!#(B<br>&gt;&gt; &gt; $B%/%i%$%"%s%H$+$i%j%/%(%9%H$,Mh$?:]!"(BAction$B$r(BgetComponent$B$K$h$C$F<hF@$9$k(B<br>
&gt;&gt; &gt; $B$N$G$9$,!"F1$8%?%$%_%s%0$G(BService/DAO$B$b%$%s%9%?%s%92=$5$l$k$3$H$r(B<br>&gt;&gt; &gt; $B3NG'$7$^$7$?!#(B<br>&gt;&gt; &gt; $B$7$+$7!"(BInterceptor$B$,<B9T$5$l$:!"(BDAO$B$K$F(BConfig$B$+$i(BDatasourceName$B$r<hF@(B<br>&gt;&gt; &gt; $B$G$-$J$$$H$$$&%(%i!<$,H/@8$7$F$7$^$$$^$7$?!#(B<br>&gt;&gt; &gt; Interceptor$B$O!"%3%s%9%H%i%/%?!J(BgetComponent$B!K$NA0$K<B9T$5$;$k$3$H$,(B<br>
&gt;&gt; &gt; $B$G$-$J$$$N$G$7$g$&$+!)(B<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; $B#2!%(B<br>&gt;&gt; &gt; $B2>$K$G$-$J$$>l9g!"$I$N$h$&$J%"%W%m!<%A$r<h$k$3$H$,9%$^$7$$$N$G$7$g$&$+!)(B<br>&gt;&gt; &gt;<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; $B!Z:n@.%=!<%9![(B<br>&gt;&gt; &gt; [user1-jdbc.dicon $B$*$h$S(B user2-jdbc.dicon]<br>
&gt;&gt; &gt; $B!J(Buser2-jdbc.dicon$B$O(Buser2DataSource$B$H$7$F(BDataSourceImpl$B$rDj5A$7!"(B<br>&gt;&gt; &gt;$B!!(B&nbsp;$B8e$O!"2<5-(Buser1-jdbc.dicon$B$HF1$8!K(B<br>&gt;&gt; &gt; &lt;components namespace=&quot;jdbc&quot;&gt;<br>&gt;&gt; &gt; &nbsp;&lt;include path=&quot;jta.dicon&quot;/&gt;<br>
&gt;&gt; &gt; &nbsp;&lt;include path=&quot;jdbc-extension.dicon&quot;/&gt;<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; &nbsp;&lt;component name=&quot;user1DataSource&quot;<br>&gt;&gt; &gt; &nbsp; &nbsp; class=&quot;org.seasar.extension.dbcp.impl.DataSourceImpl&quot;/&gt;<br>
&gt;&gt; &gt; &nbsp;&lt;component<br>&gt;&gt; &gt; class=&quot;org.seasar.extension.jdbc.impl.BasicResultSetFactory&quot;/&gt;<br>&gt;&gt; &gt; &nbsp;&lt;component<br>&gt;&gt; &gt; class=&quot;org.seasar.extension.jdbc.impl.ConfigurableStatementFactory&quot;&gt;<br>
&gt;&gt; &gt; &nbsp; &nbsp;&lt;arg&gt;<br>&gt;&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp;&lt;component<br>&gt;&gt; &gt; class=&quot;org.seasar.extension.jdbc.impl.BasicStatementFactory&quot;/&gt;<br>&gt;&gt; &gt; &nbsp; &nbsp;&lt;/arg&gt;<br>&gt;&gt; &gt; &nbsp; &nbsp;&lt;property name=&quot;fetchSize&quot;&gt;100&lt;/property&gt;<br>
&gt;&gt; &gt; &nbsp;&lt;/component&gt;<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; &nbsp;&lt;!-- for PostgreSQL --&gt;<br>&gt;&gt; &gt; &nbsp;&lt;component name=&quot;xaDataSource&quot;<br>&gt;&gt; &gt; &nbsp; &nbsp;class=&quot;org.seasar.extension.dbcp.impl.XADataSourceImpl&quot;&gt;<br>
&gt;&gt; &gt; &nbsp; &nbsp;&lt;property name=&quot;driverClassName&quot;&gt;&quot;org.postgresql.Driver&quot;&lt;/property&gt;<br>&gt;&gt; &gt; &nbsp; &nbsp;&lt;property name=&quot;URL&quot;&gt;<br>&gt;&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp;&quot;jdbc:postgresql://localhost/TEST&quot;<br>
&gt;&gt; &gt; &nbsp; &nbsp;&lt;/property&gt;<br>&gt;&gt; &gt; &nbsp; &nbsp;&lt;property name=&quot;user&quot;&gt;&quot;user1&quot;&lt;/property&gt;<br>&gt;&gt; &gt; &nbsp; &nbsp;&lt;property name=&quot;password&quot;&gt;&quot;xxxx&quot;&lt;/property&gt;<br>
&gt;&gt; &gt; &nbsp;&lt;/component&gt;<br>&gt;&gt; &gt; &nbsp;&lt;component name=&quot;connectionPool&quot;<br>&gt;&gt; &gt; &nbsp; &nbsp;class=&quot;org.seasar.extension.dbcp.impl.ConnectionPoolImpl&quot;&gt;<br>&gt;&gt; &gt; &nbsp; &nbsp;&lt;property name=&quot;timeout&quot;&gt;600&lt;/property&gt;<br>
&gt;&gt; &gt; &nbsp; &nbsp;&lt;property name=&quot;maxPoolSize&quot;&gt;10&lt;/property&gt;<br>&gt;&gt; &gt; &nbsp; &nbsp;&lt;property name=&quot;allowLocalTx&quot;&gt;true&lt;/property&gt;<br>&gt;&gt; &gt; &nbsp; &nbsp;&lt;destroyMethod name=&quot;close&quot;/&gt;<br>
&gt;&gt; &gt; &nbsp;&lt;/component&gt;<br>&gt;&gt; &gt; &lt;/components&gt;<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; [jdbc.dicon]<br>&gt;&gt; &gt; &lt;components namespace=&quot;jdbc&quot;&gt;<br>&gt;&gt; &gt; &nbsp; &nbsp;&lt;include path=&quot;user1-jdbc.dicon&quot;/&gt;<br>
&gt;&gt; &gt; &nbsp; &nbsp;&lt;include path=&quot;user2-jdbc.dicon&quot;/&gt;<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; &nbsp; &nbsp;&lt;component name=&quot;dataSource&quot;<br>&gt;&gt; &gt; class=&quot;org.seasar.extension.datasource.impl.SelectableDataSourceProxy&quot;/&gt;<br>
&gt;&gt; &gt; &nbsp; &nbsp;&lt;component name=&quot;dataSourceFactory&quot;<br>&gt;&gt; &gt; class=&quot;org.seasar.extension.datasource.impl.DataSourceFactoryImpl&quot;/&gt;<br>&gt;&gt; &gt; &lt;/components&gt;<br>&gt;&gt; &gt;<br>
&gt;&gt; &gt; [SelectDataSourceInterceptor]<br>&gt;&gt; &gt; public class SelectDataSourceInterceptor implements MethodInterceptor {<br>&gt;&gt; &gt; &nbsp; &nbsp;@Resource<br>&gt;&gt; &gt; &nbsp; &nbsp;public DataSourceFactory dataSourceFactory;<br>
&gt;&gt; &gt; &nbsp; &nbsp;@Resource<br>&gt;&gt; &gt; &nbsp; &nbsp;private HttpServletRequest request;<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; &nbsp; &nbsp;@Override<br>&gt;&gt; &gt; &nbsp; &nbsp;public Object invoke(MethodInvocation invocation) throws Throwable {<br>
&gt;&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp;String currentName =<br>&gt;&gt; &gt; dataSourceFactory.getSelectableDataSourceName();<br>&gt;&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp;try {<br>&gt;&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String dataSourceName = getDataSourceName();<br>&gt;&gt; &gt;<br>
&gt;&gt; &gt; &nbsp;dataSourceFactory.setSelectableDataSourceName(dataSourceName);<br>&gt;&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return invocation.proceed();<br>&gt;&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp;} finally {<br>&gt;&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dataSourceFactory.setSelectableDataSourceName(currentName);<br>
&gt;&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp;}<br>&gt;&gt; &gt; &nbsp; &nbsp;}<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; &nbsp; &nbsp;public String getDataSourceName() {<br>&gt;&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp;// request $B$+$i(BURI$B$r<hF@$7!"BP>](BDataSource$BL>(B(&quot;user1&quot; or &quot;user2&quot;)<br>&gt;&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp;// $B$r7hDj(B<br>
&gt;&gt; &gt; &nbsp; &nbsp;}<br>&gt;&gt; &gt; }<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; [customizer.dicon$BH4?h(B]<br>&gt;&gt; &gt; &nbsp;&lt;component name=&quot;actionCustomizer&quot;<br>&gt;&gt; &gt; class=&quot;org.seasar.framework.container.customizer.CustomizerChain&quot;&gt;<br>
&gt;&gt; &gt; &nbsp; &nbsp;&lt;initMethod name=&quot;addAspectCustomizer&quot;&gt;<br>&gt;&gt; &gt; &nbsp; &nbsp; &nbsp;&lt;arg&gt;&quot;selectDataSourceInterceptor&quot;&lt;/arg&gt;<br>&gt;&gt; &gt; &nbsp; &nbsp;&lt;/initMethod&gt;<br>&gt;&gt; &gt; &nbsp; &nbsp;....<br>
&gt;&gt; &gt; &nbsp;&lt;/component&gt;<br>&gt;&gt; &gt;<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; $B0J>e!"$h$m$7$/$*4j$$$$$?$7$^$9!#(B<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; _______________________________________________<br>&gt;&gt; &gt; Seasar-user mailing list<br>
&gt;&gt; &gt; <a href="mailto:Seasar-user@ml.seasar.org" target="_blank">Seasar-user@ml.seasar.org</a><br>&gt;&gt; &gt; <a href="https://ml.seasar.org/mailman/listinfo/seasar-user" target="_blank">https://ml.seasar.org/mailman/listinfo/seasar-user</a><br>
&gt;&gt; &gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; --<br>&gt;&gt; Toshihiro Nakamura<br>&gt;&gt; _______________________________________________<br>&gt;&gt; Seasar-user mailing list<br>&gt;&gt; <a href="mailto:Seasar-user@ml.seasar.org" target="_blank">Seasar-user@ml.seasar.org</a><br>
&gt;&gt; <a href="https://ml.seasar.org/mailman/listinfo/seasar-user" target="_blank">https://ml.seasar.org/mailman/listinfo/seasar-user</a><br>&gt;<br>&gt;<br>&gt; _______________________________________________<br>&gt; Seasar-user mailing list<br>
&gt; <a href="mailto:Seasar-user@ml.seasar.org" target="_blank">Seasar-user@ml.seasar.org</a><br>&gt; <a href="https://ml.seasar.org/mailman/listinfo/seasar-user" target="_blank">https://ml.seasar.org/mailman/listinfo/seasar-user</a><br>
&gt;<br>&gt;<br><br><br><br>--<br>Toshihiro Nakamura<br>_______________________________________________<br>Seasar-user mailing list<br><a href="mailto:Seasar-user@ml.seasar.org" target="_blank">Seasar-user@ml.seasar.org</a><br>
<a href="https://ml.seasar.org/mailman/listinfo/seasar-user" target="_blank">https://ml.seasar.org/mailman/listinfo/seasar-user</a><br></div></div></blockquote></div><br>