Your SlideShare is downloading. ×

CDI, Seam 3 and Forge

2,425

Published on

A slide used for Okayama OpenLab Vol.19 …

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,425
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
21
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. CDI を乗りこなせ!JBoss Seam 3 と Seam Forge Red Hat Senior Software Maintenance Engineer Takayoshi Kimura
  • 2. CDI• JSR-299 Contexts and Depenency Injection• CDI の概要とか基本的な利用方法など についてはこのスライドでは触れませ ん – 皆本さんが CDI や Seam 3 の記事を書い ているのでそちらを参照してください – http://thinkit.co.jp/book/2011/03/03/2031
  • 3. Weld• JSR-299 CDI Reference Implementation – 参照実装
  • 4. Portable Extension• CDI の目玉機能の一つ• この機能を利用して Java EE の拡張を 実装可能• Seam 3 もいくつかの Portable Extension の集まり• 簡単に作れる
  • 5. 簡単に作れる?• Java クラスを作る• Extension を登録する• jar にしてデプロイする
  • 6. Java クラスを作るpackage com.acme;import javax.enterprise.inject.spi.Extension;public class MyExtension implements Extension {}
  • 7. Extension を登録する• jar の META-INF/services というディレ クトリに以下のファイルを作成 – javax.enterprise.inject.spi.Extension – 中身は先ほど作ったクラス名 – 複数ある場合は複数行記述すれば良いorg.acme.MyExtension
  • 8. Seam 3
  • 9. 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 月
  • 10. Seam Catch• 例外ハンドリングを提供@HandlesExceptionspublic class MyHandler { void printExceptions( @Handles CaughtException<Throwable> ev) { ev.getException().printStackTrace(); ev.markHandled(); }}
  • 11. Seam Catch• Extension のソースを見てみよう
  • 12. Seam Faces• JSF オブジェクトの提供 – FacesContext – ExternalContext, – NavigationHandler – Flashpublic class Bean { @Inject FacesContext context;}
  • 13. Seam Faces• JSF のフェーズコールバックpublic void observeRenderResponse( @Observes @Before @RenderResponse PhaseEvent e) { // Do something with the event object}
  • 14. Seam International• ロカールやタイムゾーンの提供@Injectjava.util.Locale defaultLocale;@Inject@UserLocalejava.util.Locale userLocale;
  • 15. 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());}
  • 16. Seam Solder• Solder = ソルダー = はんだづけ• 汎用性の高いコンポーネントやアノテ ーションの提供
  • 17. 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);}
  • 18. Seam Solder• リソース読み込み@Inject@Resource("WEB-INF/web.xml")InputStream webXml;@Inject@Resource("META-INF/aws.properties")Properties awsProperties;
  • 19. Seam Solder• Logger@Inject Logger log;
  • 20. 他にもいっぱい• Seam Security• Seam Remoting• Seam REST• Seam Persistence and Transactions• Seam Validation• Seam Wicket• Seam Servlet
  • 21. Seam 3.1• Seam Social• Seam Flex• Seam Compatibility Module• Seam JMS• Seam Mail• Seam Cron• Seam Reports
  • 22. Seam Forge
  • 23. Seam Forge• forge – 鍛冶場• ラピッドデベロップメント環境• シェル• テクノロジインテグレーション• スクリプティング
  • 24. テクノロジの選択• maven-archetype-plugin – 最初の一発のみ – A と C と D と X を使いたい • ダイアモンド継承問題と同じ状態に• 継続テクノロジインテグレーション – いつでも追加 – git との連携 – 追加したもののロールバック ( 実装予定 )
  • 25. テクノロジの選択• デモ – プロジェクト作成 – テクノロジ追加 – プラグイン追加• 時間があれば – scaffold による Web アプリ生成
  • 26. Seam Forge• まだアルファ版です – 本当にアルファ版です – 開発が活発すぎて整合性の取れていない状 態のものがあり、かなり多くのものが動 かないです – JBoss AS7 版が本命ですがまだちゃんと 動きません

×