seasarプロジェクト徹底攻略

36
Seasarプロジェクト徹底攻略 NTTデータ先端技術株式会社 竹添 直樹

Upload: takezoe

Post on 15-Jan-2015

11.470 views

Category:

Documents


0 download

DESCRIPTION

2010/6/13 Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

TRANSCRIPT

Page 1: Seasarプロジェクト徹底攻略

Seasarプロジェクト徹底攻略

NTTデータ先端技術株式会社

竹添 直樹

Page 2: Seasarプロジェクト徹底攻略

Profile たけぞう

Blog:http://d.hatena.ne.jp/takezoe/

Twitter:@takezoen

OSS Activity:Project AmaterasThe Apache Software FoundationThe Seasar Project

Page 3: Seasarプロジェクト徹底攻略

Purpose Seasarプロジェクトでは様々なプロダクトが開

発されています

ただし、開発がアクティブに行われていないものも多く、機能・品質にもバラつきがあります

これらのプロダクトの中から“仕事で使える”プロダクトを紹介します

Page 4: Seasarプロジェクト徹底攻略

突然ですが…

Seasar2徹底入門SAStruts/S2JDBC対応

ISBN:978-4798121505価格:\3,990出版社:翔泳社

Page 5: Seasarプロジェクト徹底攻略

Seasar本の歴史

Page 6: Seasarプロジェクト徹底攻略

Seasar入門 はじめてのDI&AOP

Page 7: Seasarプロジェクト徹底攻略

Seasar 2.4登場

Page 8: Seasarプロジェクト徹底攻略

Seasar2によるスーパーアジャイルなWeb開発

Page 9: Seasarプロジェクト徹底攻略

SAStruts+S2JDBC登場

Page 10: Seasarプロジェクト徹底攻略

Seasar2入門JavaによるはじめてのWebアプリケーション開発

Page 11: Seasarプロジェクト徹底攻略

SAStruts、S2JDBCの機能改善による変化

Page 12: Seasarプロジェクト徹底攻略

最新の情報をカバーした実践的な書籍が必要だ!

Page 13: Seasarプロジェクト徹底攻略

そしてSeasar2徹底入門

Seasar2、SAStruts、S2JDBCは安定期に

S2Container、周辺プロダクトも解説

末永く使える一冊に!

Page 14: Seasarプロジェクト徹底攻略

Seasar3登場?

Page 15: Seasarプロジェクト徹底攻略

本当にありがとうございました。

Page 16: Seasarプロジェクト徹底攻略

本題に戻ります

Page 17: Seasarプロジェクト徹底攻略

Purpose Seasarプロジェクトでは様々なプロダクトが開

発されています

ただし、開発がアクティブに行われていないものも多く、機能・品質にもバラつきがあります

これらのプロダクトの中から“仕事で使える”プロダクトを紹介します

Page 18: Seasarプロジェクト徹底攻略

Web Framework (SAStruts) Cubby Mayaa Teeda Ymir S2JSF S2Struts

Page 19: Seasarプロジェクト徹底攻略

Cubby Servlet/JSPベースのシンプルなWebフレームワーク Seasar2だけでなく、Spring Framework、Google Guiceと連

携が可能

http://cubby.seasar.org/

public class HelloAction extends Action {

@RequestParameter public String name;

public ActionResult index() { return new Forward("input.jsp"); }

public ActionResult message() { return new Forward("result.jsp"); }}

・・・<t:form action="message" value="${action}"> あなたの名前: <t:input type="text" name="name"/> <input type="submit" value="送信"/></t:form>・・・

・・・こんにちは、${action.name}さん。・・・

アクション result.jsp

input.jsp

学習コストの低いWebフレームワークを使いたい!

Page 20: Seasarプロジェクト徹底攻略

Mayaa Tapestry、S2JSFの系譜を受け継ぐHTMLテンプレートエンジン デザインとロジックの完全な分離を実現 SAStrutsやCubby等と組み合わせて利用可能

http://mayaa.seasar.org/

<html><body> <span id="message">dummy message</span></body></html>

<?xml version="1.0" encoding="UTF-8"?><m:mayaa xmlns:m="http://mayaa.seasar.org"> <m:write m:id="message" value="Hello Mayaa!" /></m:mayaa>

HTMLファイル

Mayaaファイル

<html> <body>Hello Mayaa!</body></html>

プログラマとデザイナを分業したい!

Page 21: Seasarプロジェクト徹底攻略

DataBase Access Framework (S2JDBC) DBFlute Doma Kuina S2Dao

Page 22: Seasarプロジェクト徹底攻略

DBFlute Apache Torque/S2Daoを参考に開発された「現

場指向」のO/Rマッピングフレームワーク 自動生成を活用しておりDB変更に強い 自由度よりも安全性を重視 Condition Bean 外出しSQL(2Way SQL)

詳しくはDBFluteのセッションで!S505 15:00-

http://dbflute.sandbox.seasar.org/

現場でトラブルになりにくいO/Rマッパを使いたい!

Page 23: Seasarプロジェクト徹底攻略

Doma APT(Annotation Processing Tool)を使用したO/Rマッパ S2Daoに似ているが、以下の点を改良

実行時にAOPで処理を行うのではなく、コンパイル時にDAOのソースを生成 命名規約ではなくアノテーションによる明示的な指定 2waySQLの文法を間違いにくいよう改善 ドメインクラスへの対応 コンパイル時にAPTによるエラーチェックが可能

http://doma.seasar.org/

@Dao(config = AppConfig.class)public interface EmployeeDao {

@Select Employee selectById(Integer employeeId);

@Update int update(Employee employee);

}

S2JDBCもいいけどS2Daoもいいよね!

コンパイル時にAPTで処理

DAOの実装を自動生成

DAOのインターフェース

Page 24: Seasarプロジェクト徹底攻略

Remoting/Communications S2BlazeDS S2Axis S2JMS S2Flex S2RMI

Page 25: Seasarプロジェクト徹底攻略

S2BlazeDS BlazeDSでFlexからS2Container管理下のコンポーネントを呼

び出し可能 HOT deploy対応

Flex/AIRからSeasar2のコンポーネントを呼び出したい!

http://s2blazeds.seasar.org/

<?xml version="1.0" encoding="UTF-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#FFFFFF"> <mx:RemoteObject id="srv" destination="productService"/> <mx:DataGrid dataProvider="{srv.getProducts.lastResult}" width="100%" height="100%"/> <mx:Button label="Get Data" click="srv.getProducts()"/></mx:Application>

クライアント(Flex)側

public class ProductService {

public JdbcManager jdbcManager;

public List<Product> getProducts() { return jdbcManager.from(Product.class).getResultList(); } ...}

サーバ側

Page 26: Seasarプロジェクト徹底攻略

S2Axis POJOをWebサービス化 クライアント側もサポート JAX-WS、RESTにも対応

Webサービスを簡単に作成したい!

http://s2axis.seasar.org/ja/

public interface Echo { String echo(int id, String message);}

public class EchoImpl implements Echo { public String echo(int id, String message) { return "[id = " + id + "] " + message; }} <component

name="Echo" class="org.seasar.remoting.axis2.examples.ex01.EchoImpl"> <meta name="axis-service"/></component>

http://localhost:8080/s2axis/services/Echo でアクセス可能

diconファイルに登録する際にmetaタグでAxisにデプロイするWebサービスであることを指定

Page 27: Seasarプロジェクト徹底攻略

Libraries S2Mai S2CSV S2Chronos S2Caching Fisshplate

Page 28: Seasarプロジェクト徹底攻略

S2Mai 送信先等の設定をdiconファイルで管理可能 S2Daoのメール版(Maiインターフェースを作成するだけでメール送信可能) Velocity or FreeMarkerでメール内容のテンプレートを記述可能

メールを送信したい!

http://s2mai.sandbox.seasar.org/ja/

diconファイル

DTO

メールテンプレート

Maiインターフェース

メールテンプレートに渡すパラメータ

SMTPサーバの情報等 送信するメールの内容

Page 29: Seasarプロジェクト徹底攻略

S2CSV CSVとJavaBeanをアノテーションでマッピング アノテーションで読み込んだCSV値のバリデーションも可能

CSVファイルの入出力を行いたい!

http://s2csv.sandbox.seasar.org/

@CSVEntity(header=false)public class DeptCsv {

@CSVColumn(columnIndex=0) public Long id; @CSVRequired @CSVColumn(columnIndex=1) public Integer deptNo;

@CSVColumn(columnIndex=2) public String deptName;

@CSVColumn(columnIndex=3) public String loc;

}

Page 30: Seasarプロジェクト徹底攻略

S2Chronos タスクスケジューラ 即時、日時指定、cron形式など様々なトリガーが利用可能 アノテーションでトリガやタスクメソッドの順序を指定可能 動的トリガを利用することでトリガ設定の外部化も可能 Webアプリにも組み込み可能

アプリケーションに定期処理を組み込みたい!

@Task@CronTrigger(expression = "0 */1 * * * ?")public class BasicTask {

public void doExecute() { ... }

}

http://s2chronos.sandbox.seasar.org/

Page 31: Seasarプロジェクト徹底攻略

S2Caching メソッドの戻り値をキャッシュするインターセプターを提供 メソッドの引数ごとに戻り値をキャッシュする アノテーションでの適用も可能 バックエンドにはEhcacheを使用

性能向上のためにキャッシュを活用したい!

アノテーションでの指定

diconファイルでの指定

<component class="jp.sf.amateras.samples.service.CalcService"> <aspect pointcut="calculateSomething">callCache</aspect></component>

@CallCache(componentName="callCache")public String calculateSomething(String condition) { ....}

http://s2caching.sandbox.seasar.org/

Page 32: Seasarプロジェクト徹底攻略

Fisshplate Excelテンプレートエンジン ExcelにVelocityのような記述が可能

http://fisshplate.sandbox.seasar.org/ja/

Excelを手軽に生成したい!

Page 33: Seasarプロジェクト徹底攻略

Mobylet 携帯Web向けのフレームワーク 絵文字、文字コードの自動変換 画像のリサイズ デコメール対応メール送信 セッション管理機能 他のWebフレームワークと組み合わせて利用

携帯電話向けのWebアプリケーションを開発したい!

詳しくはMobyletのセッションで!S603 15:00-

http://mobylet.seasar.org/

Page 34: Seasarプロジェクト徹底攻略

Eclipseプラグイン

プラグイン 説明

Dolteng Seasar2を使用したプロジェクトの雛形を作成

SAStruts、S2JDBCなど様々なフレームワークの組み合わせに対応

Kijimuna Diconファイルを編集するためのエディタ

SAStrutsPlugin WTPにSAStruts向けの機能を追加

Matatabi MayaaのmayaaファイルやHTMLファイルの編集を支援

S2JUnit4Plugin テストケース、テスト対象クラス、テスト用diconファイルの相互ジャンプ

DbLauncher H2データベースをEclipse上から起動

WebLauncher Winstone(軽量サーブレットコンテナ)をEclipse上から起動

Doma Tools Domaでの開発を支援

EMecha DBFluteでの開発を支援

Page 35: Seasarプロジェクト徹底攻略

Seasarプロジェクトのリソース メーリングリスト

http://ml.seasar.org/ Subversionリポジトリ

https://www.seasar.org/svn/ http://www.seasar.org/source/browse/

Mavenリポジトリ http://maven.seasar.org/

Eclipseプラグインの更新サイト http://www.seasar.org/updates.html

JIRA(課題管理) https://www.seasar.org/issues/secure/Dashboard.jspa

Hudson(継続的ビルド) https://www.seasar.org/hudson/

Wiki http://www.seasar.org/wiki/

Page 36: Seasarプロジェクト徹底攻略

Seasar2活用のために

Seasar2徹底入門SAStruts/S2JDBC対応

ISBN:978-4798121505価格:\3,990出版社:翔泳社