SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
CDI を乗りこなせ!
JBoss Seam 3 と Seam Forge

                                    Red Hat
       Senior Software Maintenance Engineer
                           Takayoshi Kimura
CDI

• JSR-299 Contexts and Depenency
  Injection
• CDI の概要とか基本的な利用方法など
  についてはこのスライドでは触れませ
  ん
 – 皆本さんが CDI や Seam 3 の記事を書い
   ているのでそちらを参照してください
 – http://thinkit.co.jp/book/2011/03/03/2031
Weld

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

• CDI の目玉機能の一つ
• この機能を利用して Java EE の拡張を
  実装可能
• Seam 3 もいくつかの Portable
  Extension の集まり
• 簡単に作れる
簡単に作れる?
• Java クラスを作る
• Extension を登録する
• jar にしてデプロイする
Java クラスを作る
package com.acme;

import javax.enterprise.inject.spi.Extension;

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


org.acme.MyExtension
Seam 3
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 月
Seam Catch

• 例外ハンドリングを提供
@HandlesExceptions
public class MyHandler {
  void printExceptions(
    @Handles CaughtException<Throwable> ev) {

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

    }
}
Seam Catch

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

• JSF オブジェクトの提供
  – FacesContext
  – ExternalContext,
  – NavigationHandler
  – Flash
public class Bean {
  @Inject FacesContext context;
}
Seam Faces

• JSF のフェーズコールバック
public void observeRenderResponse(
  @Observes @Before @RenderResponse
  PhaseEvent e) {
  // Do something with the event object
}
Seam International

• ロカールやタイムゾーンの提供
@Inject
java.util.Locale defaultLocale;

@Inject
@UserLocale
java.util.Locale userLocale;
Seam International

• 国際化されたメッセージ
@Inject
Messages messages;

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

• Solder = ソルダー = はんだづけ
• 汎用性の高いコンポーネントやアノテ
  ーションの提供
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);
}
Seam Solder

• リソース読み込み
@Inject
@Resource("WEB-INF/web.xml")
InputStream webXml;

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

• Logger
@Inject Logger log;
他にもいっぱい
•   Seam Security
•   Seam Remoting
•   Seam REST
•   Seam Persistence and Transactions
•   Seam Validation
•   Seam Wicket
•   Seam Servlet
Seam 3.1

•   Seam Social
•   Seam Flex
•   Seam Compatibility Module
•   Seam JMS
•   Seam Mail
•   Seam Cron
•   Seam Reports
Seam Forge
Seam Forge

• forge
    – 鍛冶場
•   ラピッドデベロップメント環境
•   シェル
•   テクノロジインテグレーション
•   スクリプティング
テクノロジの選択
• maven-archetype-plugin
  – 最初の一発のみ
  – A と C と D と X を使いたい
    • ダイアモンド継承問題と同じ状態に
• 継続テクノロジインテグレーション
  – いつでも追加
  – git との連携
  – 追加したもののロールバック ( 実装予定 )
テクノロジの選択
• デモ
 – プロジェクト作成
 – テクノロジ追加
 – プラグイン追加
• 時間があれば
 – scaffold による Web アプリ生成
Seam Forge

• まだアルファ版です
 – 本当にアルファ版です
 – 開発が活発すぎて整合性の取れていない状
   態のものがあり、かなり多くのものが動
   かないです
 – JBoss AS7 版が本命ですがまだちゃんと
   動きません
CDI, Seam 3 and Forge

Weitere ähnliche Inhalte

Was ist angesagt?

Terraformをいじってみて
TerraformをいじってみてTerraformをいじってみて
Terraformをいじってみてssuser11d6e6
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)Daisuke Ikeda
 
regrowth_configurationtool
regrowth_configurationtoolregrowth_configurationtool
regrowth_configurationtoolmasaomoc1015
 
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconSeasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconKazuhiro Sera
 
社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ 社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ Daisuke Ikeda
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すTakaya Saeki
 
My sql security (暗号化)
My sql security (暗号化) My sql security (暗号化)
My sql security (暗号化) Shinya Sugiyama
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews, Inc.
 
Tech circle#13 zabbix3.0ハンズオン lld
Tech circle#13 zabbix3.0ハンズオン lldTech circle#13 zabbix3.0ハンズオン lld
Tech circle#13 zabbix3.0ハンズオン lldDaisuke Ikeda
 
Step by stepで学ぶTerraformによる監視付きAWS構築
Step by stepで学ぶTerraformによる監視付きAWS構築Step by stepで学ぶTerraformによる監視付きAWS構築
Step by stepで学ぶTerraformによる監視付きAWS構築Yo Takezawa
 
Sledge recently in Yokohama.pm Aug, 2008
Sledge recently in Yokohama.pm Aug, 2008Sledge recently in Yokohama.pm Aug, 2008
Sledge recently in Yokohama.pm Aug, 2008Yoshiki Kurihara
 
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作ったRuby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作ったtakanori suzuki
 
ベンチャーCTO、AWSエバンジェリストを経て考える、クラウド時代に向き合うエンジニア像のこれから
ベンチャーCTO、AWSエバンジェリストを経て考える、クラウド時代に向き合うエンジニア像のこれからベンチャーCTO、AWSエバンジェリストを経て考える、クラウド時代に向き合うエンジニア像のこれから
ベンチャーCTO、AWSエバンジェリストを経て考える、クラウド時代に向き合うエンジニア像のこれからYasuhiro Horiuchi
 
フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。Yutaka Horikawa
 
みんなのTerraformで AWSをテラフォーミングさせるぜ
みんなのTerraformで AWSをテラフォーミングさせるぜみんなのTerraformで AWSをテラフォーミングさせるぜ
みんなのTerraformで AWSをテラフォーミングさせるぜTakamasa Sakai
 
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座都元ダイスケ Miyamoto
 

Was ist angesagt? (20)

Devio mtup11-tokyo-012
Devio mtup11-tokyo-012Devio mtup11-tokyo-012
Devio mtup11-tokyo-012
 
Terraforming
TerraformingTerraforming
Terraforming
 
Terraformをいじってみて
TerraformをいじってみてTerraformをいじってみて
Terraformをいじってみて
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
 
regrowth_configurationtool
regrowth_configurationtoolregrowth_configurationtool
regrowth_configurationtool
 
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconSeasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
 
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
 
社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ 社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
My sql security (暗号化)
My sql security (暗号化) My sql security (暗号化)
My sql security (暗号化)
 
ACI + Ansible
ACI + AnsibleACI + Ansible
ACI + Ansible
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
 
Tech circle#13 zabbix3.0ハンズオン lld
Tech circle#13 zabbix3.0ハンズオン lldTech circle#13 zabbix3.0ハンズオン lld
Tech circle#13 zabbix3.0ハンズオン lld
 
Step by stepで学ぶTerraformによる監視付きAWS構築
Step by stepで学ぶTerraformによる監視付きAWS構築Step by stepで学ぶTerraformによる監視付きAWS構築
Step by stepで学ぶTerraformによる監視付きAWS構築
 
Sledge recently in Yokohama.pm Aug, 2008
Sledge recently in Yokohama.pm Aug, 2008Sledge recently in Yokohama.pm Aug, 2008
Sledge recently in Yokohama.pm Aug, 2008
 
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作ったRuby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
 
ベンチャーCTO、AWSエバンジェリストを経て考える、クラウド時代に向き合うエンジニア像のこれから
ベンチャーCTO、AWSエバンジェリストを経て考える、クラウド時代に向き合うエンジニア像のこれからベンチャーCTO、AWSエバンジェリストを経て考える、クラウド時代に向き合うエンジニア像のこれから
ベンチャーCTO、AWSエバンジェリストを経て考える、クラウド時代に向き合うエンジニア像のこれから
 
フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。
 
みんなのTerraformで AWSをテラフォーミングさせるぜ
みんなのTerraformで AWSをテラフォーミングさせるぜみんなのTerraformで AWSをテラフォーミングさせるぜ
みんなのTerraformで AWSをテラフォーミングさせるぜ
 
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座
 

Andere mochten auch

mod_cluster
mod_clustermod_cluster
mod_clusternekop
 
Inventory Management Tool
Inventory Management ToolInventory Management Tool
Inventory Management ToolSven Kruijs
 
StarIndex: Future music communications
StarIndex: Future music communicationsStarIndex: Future music communications
StarIndex: Future music communicationsDenis Esakov
 
Proxy
ProxyProxy
Proxynekop
 
Module classloading
Module classloadingModule classloading
Module classloadingnekop
 
JBoss AS7 rev2
JBoss AS7 rev2JBoss AS7 rev2
JBoss AS7 rev2nekop
 
JBoss AS 7 / EAP 6 modules and class loading
JBoss AS 7 / EAP 6 modules and class loadingJBoss AS 7 / EAP 6 modules and class loading
JBoss AS 7 / EAP 6 modules and class loadingnekop
 

Andere mochten auch (7)

mod_cluster
mod_clustermod_cluster
mod_cluster
 
Inventory Management Tool
Inventory Management ToolInventory Management Tool
Inventory Management Tool
 
StarIndex: Future music communications
StarIndex: Future music communicationsStarIndex: Future music communications
StarIndex: Future music communications
 
Proxy
ProxyProxy
Proxy
 
Module classloading
Module classloadingModule classloading
Module classloading
 
JBoss AS7 rev2
JBoss AS7 rev2JBoss AS7 rev2
JBoss AS7 rev2
 
JBoss AS 7 / EAP 6 modules and class loading
JBoss AS 7 / EAP 6 modules and class loadingJBoss AS 7 / EAP 6 modules and class loading
JBoss AS 7 / EAP 6 modules and class loading
 

Ähnlich wie CDI, Seam 3 and Forge

Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/AndroidセキュアコーディングMasaki Kubo
 
Springでdao 20070413
Springでdao 20070413Springでdao 20070413
Springでdao 20070413Funato Takashi
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッションYuichi Hasegawa
 
実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選Drecom Co., Ltd.
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624Yusuke Suzuki
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-PE-BANK
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...Naoya Ito
 
マークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScriptマークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScripteiji sekiya
 
Application Deployment on AWS
Application Deployment on AWSApplication Deployment on AWS
Application Deployment on AWSEiji Shinohara
 
JBoss AS7 rev3
JBoss AS7 rev3JBoss AS7 rev3
JBoss AS7 rev3nekop
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップYasuhito Yabe
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.jsTanUkkii
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセスMakoto Kato
 
Azure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox EditionAzure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox EditionKazuki Takai
 

Ähnlich wie CDI, Seam 3 and Forge (20)

Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
Springでdao 20070413
Springでdao 20070413Springでdao 20070413
Springでdao 20070413
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッション
 
Flex's DI Container
Flex's DI ContainerFlex's DI Container
Flex's DI Container
 
Springの向かう先
Springの向かう先Springの向かう先
Springの向かう先
 
activerecord-turntable
activerecord-turntableactiverecord-turntable
activerecord-turntable
 
Java in the World of Container by David Buck
Java in the World of Container by David BuckJava in the World of Container by David Buck
Java in the World of Container by David Buck
 
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_cccSpring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
 
実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
 
APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimuraAPIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 
マークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScriptマークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScript
 
Application Deployment on AWS
Application Deployment on AWSApplication Deployment on AWS
Application Deployment on AWS
 
JBoss AS7 rev3
JBoss AS7 rev3JBoss AS7 rev3
JBoss AS7 rev3
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
 
Azure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox EditionAzure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox Edition
 

Mehr von nekop

Java Drag Race Tuning
Java Drag Race TuningJava Drag Race Tuning
Java Drag Race Tuningnekop
 
Infinispan - Open Source Data Grid rev2
Infinispan - Open Source Data Grid rev2Infinispan - Open Source Data Grid rev2
Infinispan - Open Source Data Grid rev2nekop
 
JBoss AS7
JBoss AS7JBoss AS7
JBoss AS7nekop
 
Infinispan - Open Source Data Grid
Infinispan - Open Source Data GridInfinispan - Open Source Data Grid
Infinispan - Open Source Data Gridnekop
 
Iteratorパターン
IteratorパターンIteratorパターン
Iteratorパターンnekop
 
ClassLoader Leak Patterns
ClassLoader Leak PatternsClassLoader Leak Patterns
ClassLoader Leak Patternsnekop
 

Mehr von nekop (6)

Java Drag Race Tuning
Java Drag Race TuningJava Drag Race Tuning
Java Drag Race Tuning
 
Infinispan - Open Source Data Grid rev2
Infinispan - Open Source Data Grid rev2Infinispan - Open Source Data Grid rev2
Infinispan - Open Source Data Grid rev2
 
JBoss AS7
JBoss AS7JBoss AS7
JBoss AS7
 
Infinispan - Open Source Data Grid
Infinispan - Open Source Data GridInfinispan - Open Source Data Grid
Infinispan - Open Source Data Grid
 
Iteratorパターン
IteratorパターンIteratorパターン
Iteratorパターン
 
ClassLoader Leak Patterns
ClassLoader Leak PatternsClassLoader Leak Patterns
ClassLoader Leak Patterns
 

CDI, Seam 3 and Forge