ProjectをClean

・・がやっぱり「path属性で指定された設定ファイル(***.dicon)がみつかりません」が消えない。
とりあえず、ナビゲータで位置を確認しよう。

includeで問題が出てるのは

includeされるのは次のファイルのはず…

  • Buri2.1/src/dao.dicon
  • Buri2.1/src/aop.dicon
  • Buri2.1/src/javelin.dicon

んーと説明をみると…

すべてのコンポーネントを1つのファイルに記述すると、直ぐに肥大化してしまい管理が難しくなります。そのため、コンポーネントの定義を複数に分割する機能と分割された定義をインクルードして1つにまとめる機能がS2Containerにあります。S2Container定義ファイルのインクルードは次のようにして行います。


  

includeタグのpath属性で取り込みたいS2Container定義ファイルのパスを指定します。詳しくは、includeタグを参照してください。
コンポーネントの検索順は、先ず自分自身に登録されているコンポーネントを探して、見つからない場合は、includeされている順に子供のS2Containerに登録されているコンポーネントを検索し、最初に見つかったコンポーネントが返されます。


  
  
  

分割されたS2Containerの定義を取り込む場合に使います。
path属性(必須)

定義ファイルのパスを指定することができます。CLASSPATHで指定されているディレクトリをルートとする定義ファイルの絶対パスです。例えば、WEB-INF/classes/aaa.dicon の場合は aaa.dicon に、WEB-INF/classes/aaa/bbb/ccc.dicon の場合は aaa/bbb/ccc.dicon になりますセパレータは、WindowsでもUnixでも/です。


  

ということは、「Buri2.1/src」がルートだと思い込んでたんだけどちがうョと・・

とりあえずファイルの位置を変更してみる

  • 以下のファイルを「Buri2.1/src」→「Buri2.1/src/main/java」へコピー
    • dao.dicon
    • aop.dicon
    • javelin.dicon
    • j2ee.dicon
  • ProjectをClean

エラーは出なくなった・・・けどこうやっていいのか??

  • Project → properties → Java Build Path
    • Source(Source folders on build path:)
      • Buri2.1/src/main/java
      • Buri2.1/src/main/resources
      • Buri2.1/src/test/java
      • Buri2.1/src/test/resources
    • Default output:
      • Buri2.1/classes

Buri2.1/classes 以下にコピーしたファイルがあるから問題ないのかな

さてそれではテスト・・・の前にデータベースを用意

とりあえずは、derby があるのでそれを使うとしてと、なんか楽に操作できる Eclipse Plugin がないか探してみる。

  • Apache Derby Pluginのインストール
    • ダウンロードしたzipファイルを解凍
    • Eclipse の plugins フォルダへつっこむ
      • org.apache.derby.core_10.1.2
      • org.apache.derby.plugin.doc_1.1.0
      • org.apache.derby.ui_1.1.0
    • Eclipse リスタート
    • Apache Derby Plugin の設定
      • プロジェクトを右クリック→Apache Derby→Remove Apache Derby nature*1
      • プロジェクトを右クリック→Apache Derby→Add Apache Derby nature
      • プロジェクトを右クリック→Apache Derby→Start Derby Network Server
      • connect 'jdbc:derby://localhost/testdb;create=true';
      • Buri2.1/db/createdb_derby.sql を ij にコピペして実行

必要なファイルと手順 http://s2buri.sandbox.seasar.org/doc/body016.html から

srcフォルダにある
BRIMessages_ja.properties
buri2.dicon
は必須です。

  • BRIMessages_ja.properties は Buri2.1/src/main/resources にあるのでOK
  • buri2.dicon は Buri2.1/src/main/java にないので、Buri2.1/src からコピー

やっとこれでテストできるかな^^;

Buri2.1/test/org/seasar/buri/impl/BuriDefaultEngineTest.javaを開いて[Run] → [Run As] → [JUnit Test]

Test type does not exist

って・・そりゃそうか、Java Build Path の Source(Source folders on build path:)に Buri2.1/test は入ってなかったョ...orz

  • Source(Source folders on build path:)に Buri2.1/test を追加
  • ProjectをCleanすると
    • Buri2.1/test/example/org/seasar/buri/test/baotest.dicon
    • Buri2.1/test/org/seasar/buri/bao/test/dicon/FurnitureManagement.dicon
    • Buri2.1/test/org/seasar/buri/bao/test/dicon/Petition.dicon
    • Buri2.1/test/org/seasar/buri/bao/test/dicon/PetitionUser.dicon

からエラー

    • [include] path属性で指定された設定ファイル(bao.dicon)がみつかりません

bao.dicon は Buri2.1/src/main/java にないので、Buri2.1/src からコピー

再度、JUnit 実行!
むー、実行はされたけど、全部エラーに。

makotan さんのコメントで、間抜けなことしてたのがわかったのでやり直し〜

  • とりあえず、S2Buri0.2.2 をダウンロード
  • ごちゃごちゃいじったので、一旦Workspace上のBuri2.1プロジェクトをクローズして管理情報のみ削除、ファイルは別なとこへ退避
  • s2buri0_2_2.zip を解凍して、中のBuri2.1フォルダをWorkspace上にコピー
  • Eclipse から Import
  • Java Build Path の JRE System Library を自分の環境にあわせる
  • プロジェクトを右クリック→Apache Derby→Remove Apache Derby nature
  • プロジェクトを右クリック→Apache Derby→Add Apache Derby nature
  • ProjectをClean → エラーは出なくなる
  • プロジェクトを右クリック→Apache Derby→Start Derby Network Server
  • プロジェクトを右クリック→Apache Derby→ij
  • Buri2.1/db/buri が既にあるが以下を実行する
    • Connect 'jdbc:derby:db/buri';
    • Buri2.1/db/createdb_derby.sql をコピペ
    • Buri2.1/db/example_derby.sql をコピペ
    • Buri2.1/db/unitTestTable_derby.sql をコピペ
  • Buri2.1/src/test/java/example/org/seasar/buri/test/BaoTest.javaJUnit Test 実行する
    • エラーで終了

org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外が発生しました。理由はSQL Exception: データベース 'db/buri' を始動できません。詳しくは、次の例外を参照してください。

以下略

んーうまくコネクトできてないのかなぁ

    • もう一度 ij で接続を確認する
      • プロジェクトを右クリック→Apache Derby→ij
      • Connect 'jdbc:derby:db/buri';
      • ・・・が失敗。なんで!?とか思ったら

エラー XJ040: データベース 'db/buri' を始動できません。詳しくは、次の例外を参照してください。
エラー XSDB6: Derby の別のインスタンスがすでにデータベース C:\workspace\Buri2.1\db\buri をブートしている可能性があります。

エラーメッセージが同じ
んじゃもしかしたら、実行してる ij 全部止めたら行けるかも!
結果:はい、テストが通りました
バカだねぇ>自分 orz

*1:以前手でファイルを指定したものを解除