[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 メーリングリストの案内