masapon1967です。<br><br>java.util.TimerTaskを使用して・髟阡札如��タベ・踉札垢縫如��タを書き込むプログラムをテストしているのですが・髟阡�<br>テ・踉札屮襪�薀如��タを読み込むことができません。<br><br>TimerTaskで��孫圓気譴襪里�謄好肇院��スとは別のスレッドのためだとは思う瘢雹のですが・髟阡擦匹�逅擦垢譴个茲い��<br>分かりません。解決方法がお分かりの方がいらっしゃれば・髟阡擦�気┫蠅い泙后�<br><br>-S2 2.3.14
<br>-S2Dao 1.0.37<br>-S2Dao tiger 1.0.35<br>-MySQL Connection/J 5.0.3<br>-MySQL Server 5.0.24a<br><br>table FooTable<br>- id int<br>- name varchar<br><br>//エンティティクラス<br>@Bean(table = "FooTable")<br>public class Foo{
<br> private int id;<br> private String name;<br> @Id(value = IdType.IDENTITY)<br> public void setId(int id){<br> <a href="http://this.id">this.id</a> = id;<br> }<br> //以王踉�id, nameのsetter, getter<br>}<br clear="all">
<br>//DAOクラス<br>@S2Dao(bean = Foo.class)<br>public interface FooDao{<br> @Arguments("id")<br> Foo get(int id);<br>}<br><br>//タスククラス<br>public class FooTask extends TimerTask{<br> private FooDao fooDao;<br> public FooTask(FooDao fooDao){
<br> this.fooDao = fooDao;<br> }<br> public void run(){<br> Foo foo = fooDao.get(1); //����海海如���fooにnullがセットされる。<br> if(foo == null){<br> throw new Exception();<br> }<br> }<br>}<br><br>public interface Bar{
<br> void execute();<br>}<br><br>//タスク設定のクラス<br>public class BarImpl implements Bar{<br> private FooDao fooDao;<br> public BarImpl(FooDao fooDao){<br> this.fooDao = fooDao;<br> }<br> public void execute(){<br> FooTask task = new FooTask(fooDao);
<br> Timer timer = new Timer();<br> timer.schedule(task, 1000); //1秒後にFooTaskのrunが��孫圓気譴襦�<br> }<br>}<br><br>//テストクラス<br>public class BarImplTest extends S2TestCase{<br> private Bar bar;<br> protected void setUp() throws Exception{
<br> super.setUp();<br> include("test.dicon");<br> }<br> public final void testExecuteTx(){<br> // UT0001Prepare.xlsにはFooTableのワ・踉札�掘��トにid = 1, name = "ABC"という瘢雹行が登録されている<br> readXlsWriteDb("
UT0001Prepare.xls");<br> bar.execute(); //FooTask.run()でFooオブジェクトが��萋世任④覆い燭瓠���例外が発生する。<br>}<br><br>test.diconにはBarDaoとBarImplが登録されていて・髟阡�BarDaoにはdao.interceptorを・髟阡�BarImplにはj2ee.requiredTxが<br>織り込まれています。<br>testExecute(Tx)としているため・髟阡擦海海燃�呂気譴織肇薀鵐競�轡腑鵑函���FooTaskが��孫圓気譴襯好譽奪匹�
<br>トランザクションが異なるのだと思います。<br>��尊檗���testExecuteとTxを外して��孫圓靴燭箸海蹇���FooTaskのrunメソッドで・髟阡�Fooオブジェクトが読み込まれます。<br>解決方法が分かる方・髟阡擦茲蹐靴�羇蠅い靴泙后�<br><br>-- <br>----------------------------------------------<br>Masakazu Kobayashi (<a href="mailto:masapon1967@gmail.com">
masapon1967@gmail.com</a>)