Hatena::ブログ(Diary)

yvsu pron. yas このページをアンテナに追加 RSSフィード

2009-03-17

HOT deployで嵌らないためのパッケージ構成

Slim3では、ルートパッケージ直下がagileパッケージとfirmパッケージに分かれます。agileパッケージには、agileに開発する必要のある機能要件に応じたクラスが入ります。firmパッケージには、ユーザの要件には直接関係しない非機能要件に応じたクラス(一般的にはインフラストラクチャ層のクラス)が入ります。

例えば、ルートパッケージがtutorialの場合、次のようになります。agileとかfirmの名前はもちろん自由に選べます。

  • tutorial
  • tutorial.agile
  • tutorial.agile.action
    • agile package for action
  • tutorial.agile.xxx
  • tutorial.firm
    • firm package
  • tutorial.firm.xxx
    • firm package for xxx

agileパッケージクラスからfirmパッケージクラスは参照できます。機能要件を実現するために、インフラ層のクラスを利用するのは当然ですよね。

firmパッケージクラスからagileパッケージクラスは参照できません。非機能要件が、ユーザの要件に関係するのはおかしいからです。


HOT deployの対象agileパッケージのみにすることで、HOT deployに関するエラーはほとんど起きなくなります。WTPテストするときには、agileパッケージクラスもfirmパッケージクラスWEB-INF/classesに吐き出されるので、firmパッケージクラスからagileパッケージクラスを参照するとClassCastExceptionがおきてしまいますが、HOT deployでエラーになるのは、このケースに限定できるので、直ぐに原因に気付き、修正できるでしょう。原因がわからなくて、嵌ることはなくなるはずです。

ClassCastExceptionがおきたときに、それが、agileパッケージクラスを参照したことが原因なら、「tutorial.agileパッケージ以外のクラスからtutorial.agileパッケージクラスは参照できません」のようなメッセージで例外をスローしようかなと思っています。


Seasar2でも、agileパッケージSMART deploy対象にし、firmパッケージは、コンポーネント自動登録もしくはdiconに直書きすることで、Slim3と同様の効果を得ることができます。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close