About

ドキュメント

Javadoc

モジュール

プロジェクト文書

Built by Maven

概要

このドキュメントでは,SMART deployの概要を説明し, はまらないで使いこなすための指針を紹介します.

SMART deployとは

SMART deployとは,規約に基づいてコンポーネントを自動登録するものです.

SMART deployの種類

SMART deployには,以下の3種類のモードがあります.

HOT deploy
コンポーネントが必要とされたときに (on demandで) そのコンポーネントだけを自動登録するモードです.
コンポーネントのクラスをHOT deploy専用のクラスローダにロードすることで, WEBコンテナの再起動や再デプロイをすることなく,クラスの変更が反映されます.
Webアプリケーションなど, サーバとしてプロセスを起動したまま実行するプログラムの開発時に適したモードです.
COOL deploy
コンテナの初期化時に全てのコンポーネントを自動登録するモードです.
サーバアプリケーションの実行に適したモードです.
WARM deploy
コンポーネントが必要とされたときに (on demandで) そのコンポーネントだけを自動登録するモードです.
HOT deployとは異なり,専用のクラスローダは使用しません. 一度ロードされたクラスは,.classファイルが変更されても反映されません.
クライアントアプリケーションやテストケースの実行に適したモードです.

SMART deployのモードを切り替える方法は SMART deployの切り替え を参照してください.

HOT deployの仕組み

クラスローダ

Javaのクラスはクラスローダにロードされます. クラスローダに一度ロードされると,クラスファイルが変更されてもそれは反映されません. HOT deployは,

自動登録

HOTとCOOLの違い

パッケージ構成

HOT deploy非対象クラスからHOT deploy対象クラスを参照しない

インフラ層とアプリケーション層

convention.dicon

	<component class="org.seasar.framework.convention.impl.NamingConventionImpl">
		<!-- HOT deploy 対象のルートパッケージ -->
		<initMethod name="addRootPackageName">
			<arg>"jp.co.xxx.yyy.app"</arg>
		</initMethod>
		<!-- HOT deploy 非対象のルートパッケージ -->
		<initMethod name="addRootPackageName">
			<arg>"jp.co.xxx.yyy.infra"</arg>
			<arg>false</arg>
		</initMethod>
	</component>
HOT deploy対象クラス(Xxx)が非対象クラスから参照されて通常のクラスローダにロードされています。

継承

具象クラスから継承しない

セッション

セッションに登録するクラスはSerializableを実装する
HTTPセッションに設定するクラス({0})はシリアライズ可能でなくてはなりません。 HTTPセッションに設定するクラスはシリアライズ可能でなくてはなりません。 セッションオブジェクト({0})をデシリアライズできなかったため破棄します。