My favorites | Sign in
t-2
Project Home Downloads Wiki Issues Source
READ-ONLY: This project has been archived. For more information see this post.
Search
for
GettingStarted_T2AMF  

en, ja
Updated Aug 16, 2009 by shinpei.ohtani@gmail.com

T2とFlexでRIA開発を始めるための具体的なセットアップや動かし方を学びます.

はじめに

この章ではT2とFlexを使う場合の具体的なセットアップややり方を学びます.

必要なもの

実行環境を用意する

T2とFlexの開発には、以下のものが必要です.

  • JDK6
  • FlexBuilder3(Eclipseプラグイン版推奨)
    • Flex(mxmlとActionScript)の開発のため.
  • Webコンテナ
    • Servlet2.5/JSP2.0以上のWebコンテナ.Tomcatならばバージョン6系です.その他Webコンテナでも最新のものであれば動作します.
  • T2 0.6.0以降

てっとり早く環境を準備するのであれば、T2+Flexブランクプロジェクトをダウンロードしてください. このチュートリアルでは、ブランクプロジェクトを使って解説します.

環境の確認

フォルダ構成の確認

まずは環境の確認です.ダウンロードしたt2amf-blankはEclipseプロジェクト形式になっているので、そのままFlexBuilderでインポートしてください. フォルダ構成は下記のようになっています.
  • /src/main/java
    • javaファイルの配置場所です.
  • /src/main/resources
    • ログ出力設定など、サーバサイド設定ファイルの配置場所です.
  • /src/main/webapp
    • Webアプリケーションとして動作するときのルートです.この配下のWEB-INFにweb.xmlと使用するjarファイルが配置されています.
  • /src/main/flex
    • FlexのmxmlとActionScriptファイルの配置場所です.コンパイルすると、/src/main/webappに実行ファイル(html/swf)が配置されるように設定されています.
  • /bootstrap
    • 軽量Webコンテナ(SDLoader)を起動するコードが配置されています.このクラスをMain実行すれば簡単に動作を確認できます.

jarの確認

jarファイルも確認しておきます.t2amf-blankは最小限のjarしか同梱していません. 必須jarは以下のとおりです.
  • t2-0.6.0.jar(またはそれ以降のバージョン)
    • T2本体
  • commons-0.6.0.jar(またはそれ以降のバージョン)
    • T2プロジェクト全般で使うユーティリティ
  • sl4j-api-.1.5.6.jar
    • ログライブラリのAPI
  • logback-core-0.9.15.jar
    • ログライブラリ実装
  • logback-classic-0.9.15.jar
    • ログライブラリ実装
オプションのライブラリは下記のとおりです.
  • sdloader-jsp21-0.3.1.jar
    • 軽量Webコンテナ.サンプルの簡易起動に使用しています.

設定の確認

T2の設定を確認しましょう.T2自体はweb.xmlにフィルタを設定するだけです.t2amf-blankではあらかじめ初期設定は終わっています. 確認すべき重要な点は、Filterのinit-param項目で、以下の2点です.
  • t2.rootpackageでルートパッケージを指定します
  • t2.container.adapterでどのDIコンテナと連携するかを指定します.t2amf-blankでは自前管理のSimpleContainerAdapterになっています.

設定ファイル全文は以下のようになっています.

<?xml version="1.0"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<context-param>
		<param-name>t2.encoding</param-name>
		<param-value>UTF-8</param-value>
	</context-param>
	<filter>
		<filter-name>t2</filter-name>
		<filter-class>org.t2framework.t2.filter.T2Filter</filter-class>
		<init-param>
			<param-name>t2.rootpackage</param-name>
			<param-value>org.t2framework.examples.page</param-value>
		</init-param>
		<init-param>
			<param-name>t2.container.adapter</param-name>
			<param-value>
				org.t2framework.t2.adapter.SimpleContainerAdapter
			</param-value>
		</init-param>
		<init-param>
			<param-name>t2.exclude-resources</param-name>
			<param-value>css, js</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>t2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<welcome-file-list>
		<welcome-file>main.html</welcome-file>
	</welcome-file-list>
</web-app>

実装して動かしてみよう

まずは実装すべきものを確認しましょう.今回のサンプルでは、実用的かつ最も簡単な例にしました. その中ではFlexとT2で通信させるには、以下のクラスを書きます.
  • サーバサイド側
  • + Pageクラス(POJOのクラスで、@Pageとつけたもの) + 通信用のJavaのDTO
  • クライアントサイド側
  • + mxml(画面のデザイン)とActionScript(画面の振る舞い) + 通信用のActionScriptのDTO

サーバサイド側

サーバサイド側では、まずPageクラスを作成します.PageクラスはFlex側からの通信を受け取る役割です. 最小限のPageクラスは以下のようになります.

@Page("hello")
public class HelloPage {

	@Amf
	public Navigation execute(RequestDto requestDto) {
		ResponseDto responseDto = new ResponseDto();
		responseDto.setMessage("Hello T2AMF from server-side!");
		return AmfResponse.to(responseDto);
	}
}
このサンプルではFlexから、
  hello.execute(requestDto)
という形で呼び出されます.今はわからなくても大丈夫です.まずは一個一個みていきましょう.

@PageとPageクラス

@PageはT2がクラスをPageクラスと認識するためのアノテーション*です.Flexと通信させるためには、@Pageをつけておく必要があります. また、1つある引数は、Flexと通信する場合の目的地(destination)です. Flex(ActionScript)側から、この値と同じ値を設定しておくことで通信できます.このサンプルの場合はhello*がdestinationになります.

@Amfと呼び出せるメソッド

@AmfはFlexからの通信可能なメソッドにつけておくアノテーションです.戻り値は必ずNavigationにする必要があります. 通常@Amfとつけておくと、そのメソッド名が呼び出し元のFlexからコールされます.上記のサンプルではexecuteというメソッド名です. T2で呼び出されるメソッドはアクションメソッドと呼んでいます.

引数について

引数は原則どのような型でも受け取る事が出来ます.勿論自分でクラス(JavaBeans)を定義したものを使う事も出来ますし、IntegerやStringのようなJDKの型も受け取ることが出来ます. ただし自分で作ったクラスを使う場合、ActionScriptにも同様のクラスが必要になります.詳細はクライアントサイド側で解説します.

この例では、RequestDtoという自分で作ったクラスでデータをFlex側から受け取っています. 実プロジェクトにおいては、自分で作ったクラスでデータをやり取りすることが一般的なので、このサンプルもそれにあわせています.

戻り値について

戻り値はFlexと通信させる場合は常にAmfResponseになります. AmfResponseは引数を1つとるtoメソッドがあり、この引数に返したいオブジェクトを指定します.上記の例であれば、ResponseDtoを返しています. 返すオブジェクトも原則何も制限は無いですが、引数のときと同様自分で作ったクラスを使う場合、ActionScriptにも同様のクラスが必要になります.

以上でサーバサイドは終了です.

クライアントサイド側

mxml

ActionScript

Dto

動作確認

以上で設定・実装は終了です. この先に進むならば、開発者ガイドを見てみてください.

TOPに戻る

Powered by Google Project Hosting