[Seasar-user:17626] Re: [S2Container] ソースが多くなった時の開発

松崎 学 [E-MAIL ADDRESS DELETED]
2009年 6月 5日 (金) 14:34:52 JST


小林さん

松崎です。いつもお世話になっております。

> おそらく,どんな画面からも使われる,多くの Dao に
> 依存する巨大なクラスがあるなど,実際には不要な
> コンポーネントまでインスタンス化されるような
> 構成になっているのではないでしょうか?
まさにこの状態でした。。。
修正の影響が少ないので、とりあえずこれだけ直す事にしました。
DBのメタデータは取得する状態です。
S2Daoにこの機能が付く前から使っていてるのでそのままの状態でした。

> 実際の開発では画面遷移の度に HOT deploy で
> コンポーネントを作成し直す必要はないことが多い
> はずなので,Seasar2.4.35 以降にバージョンアップして
> 以下の機能を試してみてはいかがでしょうか.
> 
> https://www.seasar.org/issues/browse/CONTAINER-352
> http://www.seasar.org/wiki/index.php?SeasarUpdateOperationLog#j39e75d1
運用中のシステムなので、フレームワークのバージョンアップは難しいのですが、
ソースを自分のプロジェクトにコピーすればこの機能だけ使えたりしますか?

以上、よろしくお願い致します。

On Thu, 04 Jun 2009 20:20:20 +0900
Koichi Kobayashi <[E-MAIL ADDRESS DELETED]> wrote:

> 小林 (koichik) です.
> 
> Date:    Thu, 04 Jun 2009 19:41:45 +0900
> From:    松崎 学 <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:17624] [S2Container] ソースが多くなった時の開発
> 
> > 複数サブシステムを1つのwarファイルにまとめている為、
> > ソースが多くなってきて、画面遷移がものすごく遅くなってきてしまいました。
> > Daoが現在260個近くあり、これが毎回HotDeployされています。
> 
> 本来 HOT deploy では必要になったコンポーネントのみ
> インスタンス化されるので,システムに Dao が何千個
> 何万個あろうとも,アクセスされた画面の処理で
> 使われる Dao が少なければ極端に遅くなることは
> ないはずです.
> 
> おそらく,どんな画面からも使われる,多くの Dao に
> 依存する巨大なクラスがあるなど,実際には不要な
> コンポーネントまでインスタンス化されるような
> 構成になっているのではないでしょうか?
> 
> 画面にアクセスした際にコンソールに出力される
> 「コンポーネントを登録しました」のメッセージを
> 確認して,余計なコンポーネントがインスタンス化
> されていないか確認してみてください.
> # 開発がある程度進んでいるなら,今更それを
> # 見直すのは難しいかもしれませんが.
> 
> > プロジェクトを共通部分やサブシステム単位に分割して、
> > jarファイル化すると早くなりますか?
> 
> Seasar2.4.35 以降で,Jar に分割したパッケージを
> HOT deploy 非対象として convention.dicon に記述すれば
> 効果があります.
> そのためには,<addRootPackage> の第 2 引数を false に
> します.
> 
> <initMethod name="addRootPackageName">
>   <arg>"xxx.yyy.zzz"</arg>
>   <arg>false</arg><!-- HOT deploy 非対象 -->
> </initMethod>
> 
> 
> 実際の開発では画面遷移の度に HOT deploy で
> コンポーネントを作成し直す必要はないことが多い
> はずなので,Seasar2.4.35 以降にバージョンアップして
> 以下の機能を試してみてはいかがでしょうか.
> 
> https://www.seasar.org/issues/browse/CONTAINER-352
> http://www.seasar.org/wiki/index.php?SeasarUpdateOperationLog#j39e75d1
> 
> この場合,以下のアドレスにアクセスするタイミングでのみ
> HOT deploy されるようになるので,ソースの修正&ビルドを
> 行ったタイミングで (別ウィンドウまたはタブを用意して)
> このアドレスにアクセスするようにすれば,そこそこ快適に
> なるかもしれません.
> 
> http://<host>/<context>/<servlet>/hotdeploy?mode=manual
> 
> 
> また,Dao の初期化に時間がかかっているのだとしたら,
> S2Dao の初期化で DBMS にメタデータを取りに行っていないか
> 確認してみてください.
> 
> 
> 
> -- 
> <component name="koichik">
>     <property name="fullName">"Koichi Kobayashi"</property>
>     <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
>     <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> </component>
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user

--
松崎 学 <[E-MAIL ADDRESS DELETED]>



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