[Seasar-user:7647] Re: [Chura]Chura で作成したプロジェクトのSmartDeployについて

hirossy [E-MAIL ADDRESS DELETED]
2007年 5月 15日 (火) 21:54:50 JST


小林さん、ひがさん

お手数をお掛けしております。

質問の主旨が少し変わってきました。


まず、詳細な情報についてですが、もう一度状況説明してみます。

1.SMARTDeployについて、
Seasarのサイト上や、Web+DBPress vol37(たぶん) の記事で知り、
やってみようと考えました。

2.Dolteng0.18.3を入れました。

3.Chura [Super Agile(S2Dao)]で新規プロジェクトを作成

4.サンプルのH2を使用してDEPTテーブルのDaoとentityをDatabaseViewから作成。

5.testフォルダにて、先に作成したDao(DeptDao)のテストクラス
DeptDaoTestCase extends S2DaoTestCaseを作成。

■DeptDaoTestCase.java
public class DeptDaoTestCase extends S2DaoTestCase {

       // テスト用インスタンス
       private DeptDao deptDao;
       // テスト用インスタンス
       private Dept dept;

       public DeptDaoTestCase(String name){
               super(name);
       }

       protected void setUp()throws Exception{
               super.setUp();
               include("app.dicon");
               include("test.deptDao.dicon");
       }

       public void testInsertTx()throws Exception{
               int ret = deptDao.insert(dept);
               assertEquals(ret,1);
       }
}

6. 5.で作成したテストクラス用diconファイル(test.deptDao.dicon)を用意

■test.deptDao.dicon
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components.dtd">
<components namespace="dao">
   <component class="sample.deploy.smart.entity.Dept">
               <property name="id">"5"</property>
               <property name="deptNo">"2"</property>
               <property name="deptName">"dept name"</property>
               <property name="loc">"osaka"</property>
               <property name="versionNo">"1"</property>
   </component>
</components>

7.この状態で、JUNITテストを実行

8.テストが成功する。

9.env.txtを編集するとDeployの方法が変わるということを1.の記事で読んでいたので、env.txtを編集してみたいと思う

10.env.txtを「ut」から「product」や「it」に変更してJUNITテストを実行してみる

11.NullPointerExceptionが発生して、テストが失敗する

12.DeptDaoTestCase に DeptDao が DI されていないようなので、
前述のtest.deptDao.diconに以下の内容を追記する

■test.deptDao.dicon
    <include path="dao.dicon"/>
    <component class="sample.deploy.smart.dao.DeptDao" >
    		<aspect>dao.interceptor</aspect>
    </component>

13.するとenv.txtを「it」や「product」に編集してもテストが成功するようになる

14.基本的に今まで別プロジェクト等でdaoのコンポーネントをdiconファイルに明記してこなかったので違和感を覚える

15.env.txtがutの場合だけdiconファイルにdaoコンポーネントを記述する必要がなく、
env.txtがut以外の場合はdiconファイルにdaoコンポーネントを記述する必要があるのであれば、
「SMARTDEPLOYを使う イコール 自動登録が機能しないのでは?」と考え始める

16.テストが成功するときのコンソール出力内容と
テストが失敗するときのコンソール出力内容を比較すると、

成功したときは、「S2Containerを作成します。path=hotdeploy.dicon」から始まり、
「S2Containerを作成しました。path=test.deptDao.dicon」のあとに
「クラス(sample.deploy.smart.dao.DeptDao[deptDao])のコンポーネント定義を登録します」とちゃんと出力されます。

一方、失敗したときは「S2Containerを作成します。path=cooldeploy.dicon」から始まり、
成功した時には出力されていた、「path=customizer.dicon」「path=creator.dicon」が出力されていません。
また、「path=test.deptDao.dicon」のあとに
DeptDaoが登録された旨のメッセージも出ません。


現在こんな感じです。。。

結局のところ、
SMARTdeployをあまりよくわかっていないので、その辺りも踏まえてかるくご教授いただければ嬉しいのですが。。。

上記の実験結果から見ると、
SMARTdelpoyの場合、コンポーネントの自動登録ができなくなるのでは?と思うのですが、
そんなことは無いのでしょうか????



※上記手順以外は何もしていませんので、他のdiconファイルもDoltengが生成したままです。
※Eclipseは3.2.2を使用しています。



お手数をお掛けしますがなにか情報をお願いいたします
-- 
-----------------------------------------------------------
 [E-MAIL ADDRESS DELETED] (Hiroshi Yamamoto)
 http://d.hatena.ne.jp/hirossy1977/
-----------------------------------------------------------



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