SlideShare a Scribd company logo
1 of 44
ビジネスロジック層の開発
CDI & EJB
2016/02/15 JJUG ナイトセミナー
#JJUG
2016/02/15 JJUG Night Seminar #JJUG 1
羽生田 恒永
自己紹介
• 羽生田 恒永(はにゅうだ・つねなが)
• SIでの開発業を経て、ミドルウェアコンサルタントを
してます
• 白猫本 5-6章を担当
2016/02/15 JJUG Night Seminar #JJUG 2
Safe Harbor Statement
• 本資料は私個人の見解であり所属会社の見解を反映したもの
ではありません。
• 本資料の作成にあたっては正確な記述につとめましたが、内容に
対してなんら保証をするものではなく、内容に基づくいかなる運用
結果に関してもいっさいの責任を負いません。
32016/02/15 JJUG Night Seminar #JJUG
排他的な関係ではない
• 本書でCDI or EJB とか選択とか書いているので排
他的であるような印象を残してしまった部分が
あったようです
• 「で、どっちが良いの?」と聞かれることもあり
• 実際には組み合わせで解決するのが良いのかな
と思っています
42016/02/15 JJUG Night Seminar #JJUG
言い訳はここまで
No Excuse, No Life. but
52016/02/15 JJUG Night Seminar #JJUG
今日の発表
• 本の内容をまとめて発表しようかと思ったもののそ
こは読んで頂くとして
• 今日は書いてないことを中心に発表しようかと思
います
62016/02/15 JJUG Night Seminar #JJUG
白猫本に書いてあること
• CDI の使い方
– インジェクションと型解決、定義方法
– イベント処理、ステレオタイプ、プロデューサ/ディスポーザ
• EJB の使い方
– 各種EJB解説
– この先EJBまだ使って…良いんだよね?という行間
• 今日の話にEJBは出てこないです
72016/02/15 JJUG Night Seminar #JJUG
白猫本に書いてないこと
• CDI コンテナの取り扱い
• @ConversationScoped ちゃんと書け
• CDI におけるトランザクションの取り扱い
• EJB のテストのところはもうちょっと書けただろ!
82016/02/15 JJUG Night Seminar #JJUG
おさらい
Let’s Get Started
92016/02/15 JJUG Night Seminar #JJUG
おさらい::CDIとは何か
• CDI とは何か
– Contexts and Dependency Injection
– そもそもDIは「層」をくっつける接着剤
– 必要なオブジェクトを必要なタイミングで提供
2016/02/15 JJUG Night Seminar #JJUG 10
おさらい::スコープ定義
• POJOにスコープ定義さえあれば@Inject で好きな
箇所でインジェクションできる
– @RequestScoped
– @ViewScoped
– @SessionScoped
– @ApplicationScoped
– @ConversationScoped
2016/02/15 JJUG Night Seminar #JJUG 11
おさらい::例
2016/02/15 JJUG Night Seminar #JJUG 12
@Inject
MyBean bean;
@RequestScoped
public class MyBean {
…
}
サーブレット他 CDIビーン
CDI コンテナによるインスタンス化と代入
おさらい::便利
• CDIは簡単便利
• 極論するとスコープ定義さえ覚えれば使える
• EJBと比較すると実装が簡単かつリソースメリットが
ありそう
• 使いたい箇所でぱっと使ってさっとお掃除
– これが理想・・・
2016/02/15 JJUG Night Seminar #JJUG 13
おさらい::層
• 層って何
2016/02/15 JJUG Night Seminar #JJUG 14
アプリケーションサーバ
DB
Servlet
JSP
EJB
Entity
プレゼンテーション層
・画面処理
業務ロジック層
・業務処理判断
永続化層
・データ処理
Web
ブラウザ
Web
サービス
外部メッセージングサービスなど
JSF
CDI
おさらい::層
• 実際
2016/02/15 JJUG Night Seminar #JJUG 15
アプリケーションサーバ
DB
Servlet
JSP
EJB
Entity
プレゼンテーション層
・画面処理
業務ロジック層
・業務処理判断
永続化層
・データ処理
Web
ブラウザ
Web
サービス
外部メッセージングサービスなど
JSF
CDI
はじめましょう
Let’s Get Started, again
162016/02/15 JJUG Night Seminar #JJUG
白猫本に書いてないこと
• CDI コンテナの取り扱い
• @ConversationScoped
• トランザクションの取り扱い
• EJB のテスト
172016/02/15 JJUG Night Seminar #JJUG
CDIコンテナ
182016/02/15 JJUG Night Seminar #JJUG
CDIコンテナ
• よくも悪くも Weld。猫も杓子も Weld。
• 自分が開発/運用するアプリケーションサーバで採用
しているWeldのバージョンがどのバージョンなのか、くら
いは抑えておかないと死ねます
• 開発Glassfish  運用は商用サーバとか
• (感覚ですが)APサーバのバグ当たる前にWeldの
バグ当たった方が良いかもしれない、位に思っていた
方が良いと思われます
192016/02/15 JJUG Night Seminar #JJUG
CDIコンテナ
• ちなみに Glassfish と Oracle WebLogic Serverの
Weld採用バージョンはこんな感じ
Glassfish/Weld Oralce WebLogic Server/Weld
Java EE 6 3.1.2.2 / 1.1.8 12.1.2 / 1.1.10
12.1.3 / 1.1.18
Java EE 7 4.1 / 2.2.2 12.2.1 / 2.2.13
※羽生田の独自調査による 202016/02/15 JJUG Night Seminar #JJUG
CDIコンテナ
• CDIコンテナへのアクセス用API
– CDI
– CDIProvider
– BeanManager
– Extension
212016/02/15 JJUG Night Seminar #JJUG
CDI
• 取得:CDI.current();
• BeanManager の取得元として利用
– CDI.getBeanManager();
– BeanManager は @Inject で取得可能ではある
• CDI.select(MyBean.class).get(); とか
– programatic lookup!
• Since: 1.1
222016/02/15 JJUG Night Seminar #JJUG
CDI::小ネタ
• CDI.current().toString();
 “Weld” とだけ返ってきた…
(glassfish 4.1 / Weld2.2.2)
232016/02/15 JJUG Night Seminar #JJUG
CDIProvider
• CDI.current(); の裏で呼び出されるやつ
• アプリケーションサーバ側は叩かれたら
CDIProviderのインスタンスを返す必要がある
• Since: 1.1
242016/02/15 JJUG Night Seminar #JJUG
BeanManager
• Portable Extension (chapter#11)で定義されて
いる機能の担い手
• @Inject BeanManager manager;
• CDIビーンに関する拡張操作について実行可能
252016/02/15 JJUG Night Seminar #JJUG
BeanManager::例
• 特定のCDI限定子を持つCDIビーンについての情報取得例
@Inject
BeanManager manager;
…
Set<Bean<?>> beans = manager.getBeans(
Object.class, new AnnotationLiteral<OreQualifier>(){}
);
beans.forEach(
b -> log("bean:{name=" + b.getBeanClass().getCanonicalName() + "}")
);
262016/02/15 JJUG Night Seminar #JJUG
BeanManager
• 以下が可能
– コンテナ管理のCDIビーンに関する情報取得
– CDIビーンの操作(インジェクションポイント、イベント発火、コン
テキスト…etc)
• ちょこっと便利に使うのは良いけど、業務アプリケーションで
使い過ぎには注意が必要なのでは、とか思ったり
– 過度の使いすぎ  フレームワーク化  障害時に追えないと
か辛すぎる
272016/02/15 JJUG Night Seminar #JJUG
CDIコンテナ::LifeCycleEvents
• CDIコンテナ拡張機能のひとつ
• コンテナ周りの各種イベント(後述)をフックできる
• 作り方
1. javax.enterprise.inject.spi.Extension を実装するクラスを作
成する
• イベントを受け取るにはオブザーバーを使う
2. META-INF/services/javax.enterprise.inject.spi.Extension
ファイルに上記クラス名を記載
282016/02/15 JJUG Night Seminar #JJUG
CDIコンテナ::LifeCycleEvents
• 例
public class ContainerEventsExtension implements Extension {
public ContainerEventsExtension(){
log("start container extension...");
}
public void beforeBeanDiscovery(@Observes BeforeBeanDiscovery event){
log(“***EVENT***" + event.toString());
}
… }
292016/02/15 JJUG Night Seminar #JJUG
CDIコンテナ::LifeCycleEvents
• ライフサイクルイベント
– BeforeBeanDiscovery
– AfterTypeDiscovery
– AfterBeanDiscovery
– AfterDeploymentValidation
– BeforeShutdown
– ProcessAnnotatedType
– ProcessInjectionPoint
– ProcessInjectionTarget
– ProcessProducer
– ProcessBeanAttributes
– ProcessBean
– ProcessObserverMethod
 多いよ!!!
302016/02/15 JJUG Night Seminar #JJUG
CDIコンテナ::LifeCycleEvents
• 拡張機能は楽しい
• 以下の人向け
– APサーバや生コンテナに任せて居られない人
– 業務アプリで攻めたい人
• デザパタとか上に載せたくなる病の人は注意
• すみませんコンサバなもんでつい
312016/02/15 JJUG Night Seminar #JJUG
CDIコンテナ::雑感
• CDIコンテナの動き(と言うよりもCDIビーンの管理
状態遷移)は手に取るようには分からない事が
多い気がしてます
• 特に大規模開発してると勝手インジェクションとか
死ぬほどあって制御できないパターンのやつとか
• なのでCDIビーンの生き様/死に様を手に取るよう
にわかるような拡張を考えようかなと思ったり
322016/02/15 JJUG Night Seminar #JJUG
@ConversationScoped
332016/02/15 JJUG Night Seminar #JJUG
@ConversationScoped
• 自分でスコープ長を定義できる
• begin()  end() やタイムアウトで指定
• JSFとは勝手に紐づくけどそれ以外の操作(リダイ
レクトとか)には明示的にcidを用いた上で戻って
来ないと、新規のconversationとして扱われてし
まう
342016/02/15 JJUG Night Seminar #JJUG
(CDIと)トランザクション
352016/02/15 JJUG Night Seminar #JJUG
(CDIと)トランザクション
• 言い訳が思いつかない
– JTA 1.2 までやり始めると書いてて死ねる
• ので、ここで補足
362016/02/15 JJUG Night Seminar #JJUG
(CDIと)トランザクション
• JTA 1.2 (JSR-907)
• 目指せ EJB CMT からの脱却
• みんなそんなにEJBが嫌なのか!
– と思いつつもUserTransactionなんか書きたくないので、
EJBに依存することさえ無ければこいつ良いヤツなの
にって思ってるでしょ
372016/02/15 JJUG Night Seminar #JJUG
(CDIと)トランザクション::これだけ
• javax.transaction パッケージ
• @Transactional
– トランザクション境界の設定
– クラスとメソッドどちらでも
– JTA なのでCDIビーンじゃなくてもいける
• Transactional.TxType
– トランザクション属性を決める
– TransactionAttributeType と同様
382016/02/15 JJUG Night Seminar #JJUG
(CDIと)トランザクション::これだけ
• @TransactionScoped
– “現在有効なJTAトランザクション”の実行に合わせたラ
イフサイクルを持つもの
@Transactional CDI/EJB DBCDI/EJB
tx.begin();
tx.end();
@Transaction
Scoped
どちらに呼び出されてもインスタンスは同じ
※トランザクションごとに新たに作成される
392016/02/15 JJUG Night Seminar #JJUG
まとめ
wrap it up
402016/02/15 JJUG Night Seminar #JJUG
とはいえ
• EJBは時代的にアレだがCDIで何でもかんでもって設
計もどうかなって思う
– 密結合させることも必要だし悪くないのだ
– スコープ制御しきれない悪寒。というか実感。
– EJBみたいにプールが欲しい時があって本末転倒感
• EJBに任せてもいい処理があるのではないか
– でも@TransactionScopedはちょっと良いな
412016/02/15 JJUG Night Seminar #JJUG
最近はこう考えている
• CDIが本格進出してきたことでフリーダムになってしまっ
た印象
– アイツが来るまでは村は平和だったんじゃ!的な
• CDI + EJB でいいよね?
– 実際案件に触れているとそうしているお客様が増えてきて
いる気がする
– 悩んでいるところには悩まないように簡素に実装できるとい
う意味で推し
422016/02/15 JJUG Night Seminar #JJUG
この領域の残念なところ
• フリーダム
• アンチパターンが多くない(ので集めたい)
– 使いすぎ良くない、程度
• 本編で少し触れましたが多量のインジェクションは止めましょう
– 2回ほど見かけました。Oracle WebLogic Server が死にかけてた
– 大規模開発現場での設計者が意図しないインジェクション数
– かといってフレームワークで制御ってのも
– 設計でカバー?うーん…
432016/02/15 JJUG Night Seminar #JJUG
感想など
• 書けていないこと沢山ありました
• ちょくちょくどこかで追撃できればと思います
• 振り返れば楽しかったです
442016/02/15 JJUG Night Seminar #JJUG

More Related Content

What's hot

Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Norito Agetsuma
 
(Fix)Azure Network Security Group(NSG)のおさらい
(Fix)Azure Network Security Group(NSG)のおさらい(Fix)Azure Network Security Group(NSG)のおさらい
(Fix)Azure Network Security Group(NSG)のおさらいYoshimasa Katakura
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説増田 亨
 
AzureDevOps ユーザーストーリーを作ってみよう - 201904
AzureDevOps ユーザーストーリーを作ってみよう - 201904AzureDevOps ユーザーストーリーを作ってみよう - 201904
AzureDevOps ユーザーストーリーを作ってみよう - 201904Masaru Takahashi
 
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Hirofumi Iwasaki
 
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Masayuki Ozawa
 
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのかActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのかYoichi Toyota
 
ジャストシステムJava100本ノックのご紹介
ジャストシステムJava100本ノックのご紹介ジャストシステムJava100本ノックのご紹介
ジャストシステムJava100本ノックのご紹介JustSystems Corporation
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 
Java によるクラウドネイティブ の実現に向けて
Java によるクラウドネイティブ の実現に向けてJava によるクラウドネイティブ の実現に向けて
Java によるクラウドネイティブ の実現に向けてShigeru Tatsuta
 
みんな大好きJava gc入門 【前編】
みんな大好きJava gc入門 【前編】みんな大好きJava gc入門 【前編】
みんな大好きJava gc入門 【前編】kouzirou tenkubashi
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐkwatch
 
Memory Management in the Java Virtual Machine(Garbage collection)
Memory Management in the Java Virtual Machine(Garbage collection)Memory Management in the Java Virtual Machine(Garbage collection)
Memory Management in the Java Virtual Machine(Garbage collection)Prashanth Kumar
 
はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)Masatoshi Tada
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みTakeshi Ogawa
 
SQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォークSQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォークke-m kamekoopa
 
MicroProfileの正しい使い方 (Java Developer Summit 2023)
MicroProfileの正しい使い方 (Java Developer Summit 2023)MicroProfileの正しい使い方 (Java Developer Summit 2023)
MicroProfileの正しい使い方 (Java Developer Summit 2023)Hirofumi Iwasaki
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発慎一 古賀
 
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニングJVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング佑哉 廣岡
 

What's hot (20)

Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015
 
(Fix)Azure Network Security Group(NSG)のおさらい
(Fix)Azure Network Security Group(NSG)のおさらい(Fix)Azure Network Security Group(NSG)のおさらい
(Fix)Azure Network Security Group(NSG)のおさらい
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
 
AzureDevOps ユーザーストーリーを作ってみよう - 201904
AzureDevOps ユーザーストーリーを作ってみよう - 201904AzureDevOps ユーザーストーリーを作ってみよう - 201904
AzureDevOps ユーザーストーリーを作ってみよう - 201904
 
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
 
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎
 
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのかActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのか
 
ジャストシステムJava100本ノックのご紹介
ジャストシステムJava100本ノックのご紹介ジャストシステムJava100本ノックのご紹介
ジャストシステムJava100本ノックのご紹介
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
Kotlinアンチパターン
KotlinアンチパターンKotlinアンチパターン
Kotlinアンチパターン
 
Java によるクラウドネイティブ の実現に向けて
Java によるクラウドネイティブ の実現に向けてJava によるクラウドネイティブ の実現に向けて
Java によるクラウドネイティブ の実現に向けて
 
みんな大好きJava gc入門 【前編】
みんな大好きJava gc入門 【前編】みんな大好きJava gc入門 【前編】
みんな大好きJava gc入門 【前編】
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
 
Memory Management in the Java Virtual Machine(Garbage collection)
Memory Management in the Java Virtual Machine(Garbage collection)Memory Management in the Java Virtual Machine(Garbage collection)
Memory Management in the Java Virtual Machine(Garbage collection)
 
はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
SQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォークSQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォーク
 
MicroProfileの正しい使い方 (Java Developer Summit 2023)
MicroProfileの正しい使い方 (Java Developer Summit 2023)MicroProfileの正しい使い方 (Java Developer Summit 2023)
MicroProfileの正しい使い方 (Java Developer Summit 2023)
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
 
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニングJVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
 

Viewers also liked

JavaEE7徹底入門 プレゼンテーション層の開発 JSF
JavaEE7徹底入門 プレゼンテーション層の開発 JSFJavaEE7徹底入門 プレゼンテーション層の開発 JSF
JavaEE7徹底入門 プレゼンテーション層の開発 JSFMasuji Katoda
 
ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発Takakiyo Tanaka
 
20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatchJun Inose
 
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4cCDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4cNorito Agetsuma
 
EJB3 ABC
EJB3 ABCEJB3 ABC
EJB3 ABCbose999
 
JSR 352 “Batch Applications for the Java Platform”
JSR 352 “Batch Applications for the Java Platform”JSR 352 “Batch Applications for the Java Platform”
JSR 352 “Batch Applications for the Java Platform”Norito Agetsuma
 
Wicket + EJB3 on JBoss (Japanese)
Wicket + EJB3 on JBoss (Japanese)Wicket + EJB3 on JBoss (Japanese)
Wicket + EJB3 on JBoss (Japanese)bose999
 
BTS/ITSの近況とあれこれ 2015
BTS/ITSの近況とあれこれ 2015BTS/ITSの近況とあれこれ 2015
BTS/ITSの近況とあれこれ 2015minazou67
 
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?Edward Burns
 
What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)Pavel Bucek
 
開発環境の認証を改善して Redmineを社内標準にした話
開発環境の認証を改善して Redmineを社内標準にした話開発環境の認証を改善して Redmineを社内標準にした話
開発環境の認証を改善して Redmineを社内標準にした話Ryou Soda
 
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門クロスプラットフォーム開発入門
クロスプラットフォーム開発入門minazou67
 
CON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To YouCON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To YouEdward Burns
 
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新Masatoshi Tada
 

Viewers also liked (14)

JavaEE7徹底入門 プレゼンテーション層の開発 JSF
JavaEE7徹底入門 プレゼンテーション層の開発 JSFJavaEE7徹底入門 プレゼンテーション層の開発 JSF
JavaEE7徹底入門 プレゼンテーション層の開発 JSF
 
ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発
 
20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch
 
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4cCDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
 
EJB3 ABC
EJB3 ABCEJB3 ABC
EJB3 ABC
 
JSR 352 “Batch Applications for the Java Platform”
JSR 352 “Batch Applications for the Java Platform”JSR 352 “Batch Applications for the Java Platform”
JSR 352 “Batch Applications for the Java Platform”
 
Wicket + EJB3 on JBoss (Japanese)
Wicket + EJB3 on JBoss (Japanese)Wicket + EJB3 on JBoss (Japanese)
Wicket + EJB3 on JBoss (Japanese)
 
BTS/ITSの近況とあれこれ 2015
BTS/ITSの近況とあれこれ 2015BTS/ITSの近況とあれこれ 2015
BTS/ITSの近況とあれこれ 2015
 
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?
 
What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)
 
開発環境の認証を改善して Redmineを社内標準にした話
開発環境の認証を改善して Redmineを社内標準にした話開発環境の認証を改善して Redmineを社内標準にした話
開発環境の認証を改善して Redmineを社内標準にした話
 
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門クロスプラットフォーム開発入門
クロスプラットフォーム開発入門
 
CON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To YouCON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To You
 
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
 

Similar to 3.Java EE7 徹底入門 CDI&EJB

Windows Azure Bootcamp メディアサービス編
Windows Azure Bootcamp メディアサービス編Windows Azure Bootcamp メディアサービス編
Windows Azure Bootcamp メディアサービス編normalian
 
Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理You&I
 
アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜
アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜
アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜Dai FUJIHARA
 
決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム
決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム
決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォームDaichiKimura3
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1Y Watanabe
 
タイムボックス制約付きインクリメンタル開発
タイムボックス制約付きインクリメンタル開発タイムボックス制約付きインクリメンタル開発
タイムボックス制約付きインクリメンタル開発HIDEKAZU MATSUURA
 
Decode2017を振り返りアップデート情報チョット見せ
Decode2017を振り返りアップデート情報チョット見せDecode2017を振り返りアップデート情報チョット見せ
Decode2017を振り返りアップデート情報チョット見せTsukasa Kato
 
【Unite Tokyo 2018】非プログラマでもできる!簡単プロジェクト管理&マネタイゼーション術!
【Unite Tokyo 2018】非プログラマでもできる!簡単プロジェクト管理&マネタイゼーション術!【Unite Tokyo 2018】非プログラマでもできる!簡単プロジェクト管理&マネタイゼーション術!
【Unite Tokyo 2018】非プログラマでもできる!簡単プロジェクト管理&マネタイゼーション術!Unity Technologies Japan K.K.
 
SCUGJ第27回勉強会:ものすごくざっくりなAzure Filesの話
SCUGJ第27回勉強会:ものすごくざっくりなAzure Filesの話SCUGJ第27回勉強会:ものすごくざっくりなAzure Filesの話
SCUGJ第27回勉強会:ものすごくざっくりなAzure Filesの話wind06106
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニングKiyokazu Kaba
 
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進めDai FUJIHARA
 
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進めRakuten Group, Inc.
 
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかったMakoto Iguchi
 
GC_Naiseika_Day_q3_0706_Keynote.pdf
GC_Naiseika_Day_q3_0706_Keynote.pdfGC_Naiseika_Day_q3_0706_Keynote.pdf
GC_Naiseika_Day_q3_0706_Keynote.pdfssuser41f27b
 
SCUGJ第28回勉強会:Azure Extended Network Ver 2.2.0 Update
SCUGJ第28回勉強会:Azure Extended Network Ver 2.2.0 Update SCUGJ第28回勉強会:Azure Extended Network Ver 2.2.0 Update
SCUGJ第28回勉強会:Azure Extended Network Ver 2.2.0 Update wind06106
 
SCUGJ第25回勉強会:Azure Site Recoveryでハマった with VMware 環境
SCUGJ第25回勉強会:Azure Site Recoveryでハマった with VMware 環境SCUGJ第25回勉強会:Azure Site Recoveryでハマった with VMware 環境
SCUGJ第25回勉強会:Azure Site Recoveryでハマった with VMware 環境wind06106
 
運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用真治 米田
 
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010Yusuke Suzuki
 
SCUGJ第29回勉強会:Introducing Azure Arc enabled VMware vSphere
SCUGJ第29回勉強会:Introducing Azure Arc enabled VMware vSphereSCUGJ第29回勉強会:Introducing Azure Arc enabled VMware vSphere
SCUGJ第29回勉強会:Introducing Azure Arc enabled VMware vSpherewind06106
 

Similar to 3.Java EE7 徹底入門 CDI&EJB (20)

Windows Azure Bootcamp メディアサービス編
Windows Azure Bootcamp メディアサービス編Windows Azure Bootcamp メディアサービス編
Windows Azure Bootcamp メディアサービス編
 
Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理
 
アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜
アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜
アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜
 
決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム
決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム
決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
 
タイムボックス制約付きインクリメンタル開発
タイムボックス制約付きインクリメンタル開発タイムボックス制約付きインクリメンタル開発
タイムボックス制約付きインクリメンタル開発
 
Decode2017を振り返りアップデート情報チョット見せ
Decode2017を振り返りアップデート情報チョット見せDecode2017を振り返りアップデート情報チョット見せ
Decode2017を振り返りアップデート情報チョット見せ
 
【Unite Tokyo 2018】非プログラマでもできる!簡単プロジェクト管理&マネタイゼーション術!
【Unite Tokyo 2018】非プログラマでもできる!簡単プロジェクト管理&マネタイゼーション術!【Unite Tokyo 2018】非プログラマでもできる!簡単プロジェクト管理&マネタイゼーション術!
【Unite Tokyo 2018】非プログラマでもできる!簡単プロジェクト管理&マネタイゼーション術!
 
SCUGJ第27回勉強会:ものすごくざっくりなAzure Filesの話
SCUGJ第27回勉強会:ものすごくざっくりなAzure Filesの話SCUGJ第27回勉強会:ものすごくざっくりなAzure Filesの話
SCUGJ第27回勉強会:ものすごくざっくりなAzure Filesの話
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
 
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
 
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
 
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
 
220523JS7.pdf
220523JS7.pdf220523JS7.pdf
220523JS7.pdf
 
GC_Naiseika_Day_q3_0706_Keynote.pdf
GC_Naiseika_Day_q3_0706_Keynote.pdfGC_Naiseika_Day_q3_0706_Keynote.pdf
GC_Naiseika_Day_q3_0706_Keynote.pdf
 
SCUGJ第28回勉強会:Azure Extended Network Ver 2.2.0 Update
SCUGJ第28回勉強会:Azure Extended Network Ver 2.2.0 Update SCUGJ第28回勉強会:Azure Extended Network Ver 2.2.0 Update
SCUGJ第28回勉強会:Azure Extended Network Ver 2.2.0 Update
 
SCUGJ第25回勉強会:Azure Site Recoveryでハマった with VMware 環境
SCUGJ第25回勉強会:Azure Site Recoveryでハマった with VMware 環境SCUGJ第25回勉強会:Azure Site Recoveryでハマった with VMware 環境
SCUGJ第25回勉強会:Azure Site Recoveryでハマった with VMware 環境
 
運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用
 
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
 
SCUGJ第29回勉強会:Introducing Azure Arc enabled VMware vSphere
SCUGJ第29回勉強会:Introducing Azure Arc enabled VMware vSphereSCUGJ第29回勉強会:Introducing Azure Arc enabled VMware vSphere
SCUGJ第29回勉強会:Introducing Azure Arc enabled VMware vSphere
 

Recently uploaded

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 

Recently uploaded (10)

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 

3.Java EE7 徹底入門 CDI&EJB