27
CDI を乗りこなせ! JBoss Seam 3 Seam Forge Red Hat Senior Software Maintenance Engineer Takayoshi Kimura

CDI, Seam 3 and Forge

  • Upload
    nekop

  • View
    2.310

  • Download
    2

Embed Size (px)

DESCRIPTION

A slide used for Okayama OpenLab Vol.19 http://openlab.okaya.ma/wiki.cgi?page=%CA%D9%B6%AF%B2%F1%2F%C2%E8019%B2%F3

Citation preview

Page 1: CDI, Seam 3 and Forge

CDI を乗りこなせ!JBoss Seam 3 と Seam Forge

Red HatSenior Software Maintenance Engineer

Takayoshi Kimura

Page 2: CDI, Seam 3 and Forge

CDI

• JSR-299 Contexts and Depenency Injection

• CDI の概要とか基本的な利用方法などについてはこのスライドでは触れません– 皆本さんが CDI や Seam 3 の記事を書い

ているのでそちらを参照してください– http://thinkit.co.jp/book/2011/03/03/2031

Page 3: CDI, Seam 3 and Forge

Weld

• JSR-299 CDI Reference Implementation– 参照実装

Page 4: CDI, Seam 3 and Forge

Portable Extension

• CDI の目玉機能の一つ• この機能を利用して Java EE の拡張を

実装可能• Seam 3 もいくつかの Portable

Extension の集まり• 簡単に作れる

Page 5: CDI, Seam 3 and Forge

簡単に作れる?

• Java クラスを作る• Extension を登録する• jar にしてデプロイする

Page 6: CDI, Seam 3 and Forge

Java クラスを作るpackage com.acme;

import javax.enterprise.inject.spi.Extension;

public class MyExtension implements Extension {}

Page 7: CDI, Seam 3 and Forge

Extension を登録する

• jar の META-INF/services というディレクトリに以下のファイルを作成– javax.enterprise.inject.spi.Extension– 中身は先ほど作ったクラス名– 複数ある場合は複数行記述すれば良い

org.acme.MyExtension

Page 8: CDI, Seam 3 and Forge

Seam 3

Page 9: CDI, Seam 3 and Forge

History

• Seam 3.0.0.Final– 2011 年 3 月

• Seam 2.0.0.GA– 2007 年 12 月

• Seam 1.0.0.GA– 2006 年 6 月

• Seam 1.0.0.Beta1– 2005 年 9 月

Page 10: CDI, Seam 3 and Forge

Seam Catch

• 例外ハンドリングを提供

@HandlesExceptionspublic class MyHandler { void printExceptions( @Handles CaughtException<Throwable> ev) {

ev.getException().printStackTrace(); ev.markHandled();

}}

Page 11: CDI, Seam 3 and Forge

Seam Catch

• Extension のソースを見てみよう

Page 12: CDI, Seam 3 and Forge

Seam Faces

• JSF オブジェクトの提供– FacesContext– ExternalContext,– NavigationHandler– Flash

public class Bean { @Inject FacesContext context;}

Page 13: CDI, Seam 3 and Forge

Seam Faces

• JSF のフェーズコールバック

public void observeRenderResponse( @Observes @Before @RenderResponse PhaseEvent e) { // Do something with the event object}

Page 14: CDI, Seam 3 and Forge

Seam International

• ロカールやタイムゾーンの提供

@Injectjava.util.Locale defaultLocale;

@[email protected] userLocale;

Page 15: CDI, Seam 3 and Forge

Seam International

• 国際化されたメッセージ

@InjectMessages messages;

public void addLoginMessage() { messages.info("Welcome {0}!", user.getName());}public void addLoginMessageFromResourceBundle() { messages.info( new BundleKey("myapp", "login.welcome"), user.getName());}

Page 16: CDI, Seam 3 and Forge

Seam Solder

• Solder = ソルダー = はんだづけ• 汎用性の高いコンポーネントやアノテ

ーションの提供

Page 17: CDI, Seam 3 and Forge

Seam Solder

• EL の実行

@Inject Expressions expressions;

public void run() { String fruitName = expressions.evaluateValueExpression( "#{fruitBowl.fruitName}", String.class); Apple fruit = expressions.evaluateMethodExpression( "#{fruitBowl.getFruit}", Apple.class);}

Page 18: CDI, Seam 3 and Forge

Seam Solder

• リソース読み込み

@Inject@Resource("WEB-INF/web.xml")InputStream webXml;

@Inject@Resource("META-INF/aws.properties")Properties awsProperties;

Page 19: CDI, Seam 3 and Forge

Seam Solder

• Logger

@Inject Logger log;

Page 20: CDI, Seam 3 and Forge

他にもいっぱい

• Seam Security

• Seam Remoting

• Seam REST• Seam Persistence and Transactions

• Seam Validation• Seam Wicket

• Seam Servlet

Page 21: CDI, Seam 3 and Forge

Seam 3.1

• Seam Social

• Seam Flex

• Seam Compatibility Module• Seam JMS

• Seam Mail• Seam Cron

• Seam Reports

Page 22: CDI, Seam 3 and Forge

Seam Forge

Page 23: CDI, Seam 3 and Forge

Seam Forge

• forge– 鍛冶場

• ラピッドデベロップメント環境• シェル• テクノロジインテグレーション• スクリプティング

Page 24: CDI, Seam 3 and Forge

テクノロジの選択

• maven-archetype-plugin– 最初の一発のみ– A と C と D と X を使いたい

• ダイアモンド継承問題と同じ状態に

• 継続テクノロジインテグレーション– いつでも追加– git との連携– 追加したもののロールバック ( 実装予定 )

Page 25: CDI, Seam 3 and Forge

テクノロジの選択

• デモ– プロジェクト作成– テクノロジ追加– プラグイン追加

• 時間があれば– scaffold による Web アプリ生成

Page 26: CDI, Seam 3 and Forge

Seam Forge

• まだアルファ版です– 本当にアルファ版です– 開発が活発すぎて整合性の取れていない状

態のものがあり、かなり多くのものが動かないです

– JBoss AS7 版が本命ですがまだちゃんと動きません

Page 27: CDI, Seam 3 and Forge