More Related Content
ついに始まるJava EE 7時代のアプリケーション開発 イエラエセキュリティMeet up 20210820 9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O... SCUGJ第27回勉強会:ものすごくざっくりなAzure Filesの話 What's hot (20)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料) Docker管理もHinemosで! ~監視・ジョブ機能を併せ持つ唯一のOSS「Hinemos」のご紹介~ 「これからはじめるNGINX技術解説~基本編」セミナー (NGINX Back to Basic in JP) Javaはどのように動くのか~スライドでわかるJVMの仕組み 攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐 より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料) 2015 03 26 社内勉強会_オープンソースソフトウェアライセンスについて ドメイン駆動設計のための Spring の上手な使い方 オープンソースのAPIゲートウェイ Kong ご紹介 Windows Server 2019 で Container を使ってみる 【Oracle Cloud ウェビナー】WebLogic Serverのご紹介 Inside vacuum - 第一回PostgreSQLプレ勉強会 Dockerを利用したローカル環境から本番環境までの構築設計 Viewers also liked (13)
JavaEE7徹底入門 プレゼンテーション層の開発 JSF 20160215 04 java ee7徹底入門 jbatch CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c JSR 352 “Batch Applications for the Java Platform” Wicket + EJB3 on JBoss (Japanese) JavaOne 2014 BOF4241 What's Next for JSF? What's next for Java API for WebSocket (JSR 356) 開発環境の認証を改善して Redmineを社内標準にした話 CON5898 What Servlet 4.0 Means To You Similar to 3.Java EE7 徹底入門 CDI&EJB (20)
Windows Azure Bootcamp メディアサービス編 Pivotal Trackerでアジャイルなプロジェクト管理 アジャイルマネジメントとマインドセット 〜ヒーローを待っていても世界は変わらない〜 決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1 Decode2017を振り返りアップデート情報チョット見せ 【Unite Tokyo 2018】非プログラマでもできる!簡単プロジェクト管理&マネタイゼーション術! 分散開発チームによるAgile開発実践 ~いろいろハマった!よかった GC_Naiseika_Day_q3_0706_Keynote.pdf SCUGJ第28回勉強会:Azure Extended Network Ver 2.2.0 Update SCUGJ第25回勉強会:Azure Site Recoveryでハマった with VMware 環境 ユーザー企業における標準化のあり方 : QCon Tokyo 2010 SCUGJ第29回勉強会:Introducing Azure Arc enabled VMware vSphere 3.Java EE7 徹底入門 CDI&EJB
- 3. Safe Harbor Statement
• 本資料は私個人の見解であり所属会社の見解を反映したもの
ではありません。
• 本資料の作成にあたっては正確な記述につとめましたが、内容に
対してなんら保証をするものではなく、内容に基づくいかなる運用
結果に関してもいっさいの責任を負いません。
32016/02/15 JJUG Night Seminar #JJUG
- 4. 排他的な関係ではない
• 本書でCDI or EJB とか選択とか書いているので排
他的であるような印象を残してしまった部分が
あったようです
• 「で、どっちが良いの?」と聞かれることもあり
• 実際には組み合わせで解決するのが良いのかな
と思っています
42016/02/15 JJUG Night Seminar #JJUG
- 7. 白猫本に書いてあること
• CDI の使い方
– インジェクションと型解決、定義方法
– イベント処理、ステレオタイプ、プロデューサ/ディスポーザ
• EJB の使い方
– 各種EJB解説
– この先EJBまだ使って…良いんだよね?という行間
• 今日の話にEJBは出てこないです
72016/02/15 JJUG Night Seminar #JJUG
- 8. 白猫本に書いてないこと
• CDI コンテナの取り扱い
• @ConversationScoped ちゃんと書け
• CDI におけるトランザクションの取り扱い
• EJB のテストのところはもうちょっと書けただろ!
82016/02/15 JJUG Night Seminar #JJUG
- 10. おさらい::CDIとは何か
• CDI とは何か
– Contexts and Dependency Injection
– そもそもDIは「層」をくっつける接着剤
– 必要なオブジェクトを必要なタイミングで提供
2016/02/15 JJUG Night Seminar #JJUG 10
- 12. おさらい::例
2016/02/15 JJUG Night Seminar #JJUG 12
@Inject
MyBean bean;
@RequestScoped
public class MyBean {
…
}
サーブレット他 CDIビーン
CDI コンテナによるインスタンス化と代入
- 14. おさらい::層
• 層って何
2016/02/15 JJUG Night Seminar #JJUG 14
アプリケーションサーバ
DB
Servlet
JSP
EJB
Entity
プレゼンテーション層
・画面処理
業務ロジック層
・業務処理判断
永続化層
・データ処理
Web
ブラウザ
Web
サービス
外部メッセージングサービスなど
JSF
CDI
- 15. おさらい::層
• 実際
2016/02/15 JJUG Night Seminar #JJUG 15
アプリケーションサーバ
DB
Servlet
JSP
EJB
Entity
プレゼンテーション層
・画面処理
業務ロジック層
・業務処理判断
永続化層
・データ処理
Web
ブラウザ
Web
サービス
外部メッセージングサービスなど
JSF
CDI
- 19. CDIコンテナ
• よくも悪くも Weld。猫も杓子も Weld。
• 自分が開発/運用するアプリケーションサーバで採用
しているWeldのバージョンがどのバージョンなのか、くら
いは抑えておかないと死ねます
• 開発Glassfish 運用は商用サーバとか
• (感覚ですが)APサーバのバグ当たる前にWeldの
バグ当たった方が良いかもしれない、位に思っていた
方が良いと思われます
192016/02/15 JJUG Night Seminar #JJUG
- 20. 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
- 22. 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
- 29. 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
- 30. CDIコンテナ::LifeCycleEvents
• ライフサイクルイベント
– BeforeBeanDiscovery
– AfterTypeDiscovery
– AfterBeanDiscovery
– AfterDeploymentValidation
– BeforeShutdown
– ProcessAnnotatedType
– ProcessInjectionPoint
– ProcessInjectionTarget
– ProcessProducer
– ProcessBeanAttributes
– ProcessBean
– ProcessObserverMethod
多いよ!!!
302016/02/15 JJUG Night Seminar #JJUG
- 37. (CDIと)トランザクション
• JTA 1.2 (JSR-907)
• 目指せ EJB CMT からの脱却
• みんなそんなにEJBが嫌なのか!
– と思いつつもUserTransactionなんか書きたくないので、
EJBに依存することさえ無ければこいつ良いヤツなの
にって思ってるでしょ
372016/02/15 JJUG Night Seminar #JJUG
- 43. この領域の残念なところ
• フリーダム
• アンチパターンが多くない(ので集めたい)
– 使いすぎ良くない、程度
• 本編で少し触れましたが多量のインジェクションは止めましょう
– 2回ほど見かけました。Oracle WebLogic Server が死にかけてた
– 大規模開発現場での設計者が意図しないインジェクション数
– かといってフレームワークで制御ってのも
– 設計でカバー?うーん…
432016/02/15 JJUG Night Seminar #JJUG