タグ

CDIに関するKazuhiraのブックマーク (51)

  • Nobody expects the CDI portable extensions | Next Presso

    Kazuhira
    Kazuhira 2017/02/08
  • CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c

    Java Day Tokyo2016 #jdt2016_4c のセッション資料です。Read less

    CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
    Kazuhira
    Kazuhira 2016/05/25
  • DeltaSpike DataをJava EEアプリケーションサーバー上で動かす(2)

    前回のブログに引き続きDeltaSpike Dataを使ったJava EEアプリケーションをArquillianを使ってテストする方法について説明します。DeltaSpike Data自身はJava EEサーバーに依存していませんが、今回のサンプルプログラムはJPAのpersistence.xmlがデータベースにアクセスするのにWildFlyのデータソースを使っているのでテストを実行するにはWildFlyが必要になります。このようなアプリサーバーに依存するテストはArqullianを使うことで可能になります。 Arquillianとは Java EE アプリケーションは、REST/CDI/EJB/JMSなどサーバー上のコンテナに依存することが多いのでJUnitを使ったテストの自動化は簡単ではありません。 ArquillianはJava EEアプリケーションのためのテスティング・フレームワー

    DeltaSpike DataをJava EEアプリケーションサーバー上で動かす(2)
  • Java EEアプリケーションで起動時になにかしらの処理をする方法 — 裏紙

    いくつか考えてみました。 HttpServlet.init をオーバーライドする(Servlet) ServletContainerInitializer の実装クラスを作る(Servlet) Singleton セッションビーンに @Startup を付けて @PostConstructed を付けたメソッドを定義する(EJB) Extension の実装クラスを作ってライフサイクルイベントをハンドリングするオブザーバーメソッドを作る(CDI) @ApplicationScoped なCDI管理ビーンを作って @Initialized(ApplicationScoped.class) なイベントをハンドリングするオブザーバーメソッドを作る(CDI) 他にもあったら教えてください! で、個人的には Servlet APIを直接使うのは可能な限り避けたい EJBは使わない という感じなのでC

    Kazuhira
    Kazuhira 2015/12/24
  • DeltaSpike DataをJava EEアプリケーションサーバー上で動かす(1)

    前回のブログで紹介したDeltaSpike DataモジュールをJava EEアプリケーションサーバー上で動かしてみましょう。どのアプリケーションサーバーを使ってもよいのですが、このブログではWildFlyを使った手順を紹介します。WildFlyにはCDIコンテナとしてWeldが組み込まれていますし、H2データベースが最初からインストールされているので、DeltaSpike Dataモジュールをすぐに試してみることができます。このページの最後にサンプルプログラムのリンクをつけていますので実際にプログラムを動かしながら確認してください。 WildFlyのインストール WildFlyはJBoss.orgにおいてオープンソースで開発されているJava EE 7に対応したアプリケーションサーバーです(以前はJBossプロジェクトのアプリケーションサーバーはJBoss ASと呼ばれていましたが、JB

    DeltaSpike DataをJava EEアプリケーションサーバー上で動かす(1)
    Kazuhira
    Kazuhira 2015/12/19
  • JavaOne2015報告会 Java EE アップデート #j1jp

    JavaDay Tokyo 2015 の講演内容です。 JavaEEが初めての方でもJPAの全体像を理解できます。 ※<重要な補足>アップロードした後で気が付いたのですが、一部のアニメーションが、SlideShareでは再現できないようです。原ファイルは http://k-webs.jp/download/JPA.pptx からダウンロードできます。 また、Oracle 社でスライド発表を解説記事にリライトした「初めてのJPA-シンプルで使いやすい、Java EEのデータ永続化機能の基を学ぶ」をhttp://builder.japan.zdnet.com/sp_oracle/weblogic/35067018/ で読むことができます。

    JavaOne2015報告会 Java EE アップデート #j1jp
  • JCache, why and how? | Vaadin

  • CDIによるプロパティのインジェクション

    アプリケーションの設定情報をソースコード中にハードコードするのではなく、プロパティファイルに記述しておいて後から変更できるようにしたい場合があります。このプロパティの値をCDIらしくインジェクションで取得する方法としてProducerを使う方法があります。こうやって手作りするのは良いのですが、複数の変数の型に対応させたり、拡張可能にしたりと機能を盛り込んでいくと手間がかかります。今回はこのような機能を提供するDeltaSpike Configurationについて紹介します。 DeltaSpike Configurationとは DeltaSpike Configurationはプロパティから構成情報を取得するための機能でCoreモジュールに含まれます。アプリケーションからこれを使うのは簡単です。変数のインジェクション時に@ConigurePropertyというアノテーションを指定すると、

    CDIによるプロパティのインジェクション
    Kazuhira
    Kazuhira 2015/11/14
  • CDIを使ったプログラムの単体テスト(3)

    CDIを使った単体テストについての3回目はDeltaSpike Test-ControlモジュールのMockフレームワークの使い方について紹介します。前回のブログでは@ExcludeとProjectStageを組み合わせることで開発ステージに合わせてインジェクトするBeanを切り替える方法について説明しましたが、今回紹介する方法ではもっとダイレクトにMockを使ってインジェクトの対象を切り替えます。 Mockフレームワークとは 使い方を説明するために、まずインジェクションを実行する舞台となるBeanを定義します。サンプルコードとしてMyLogicというBeanを作ります。このBeanはget()メソッドの引数の10倍の数を返すもので、内部でRepositoryのsave()メソッドを呼び出します。 package org.tanoseam.examples; import javax.en

    CDIを使ったプログラムの単体テスト(3)
    Kazuhira
    Kazuhira 2015/11/05
  • CDIを使ったプログラムの単体テスト(2)

    前回のブログに引き続きJava SE上でCDIプログラムの単体テストをする方法について書きます。今回はDeltaSpike Coreモジュールに含まれるProjectStageと@Exclude、そして最後にCdiTestRunnerと組み合わせて使う方法を紹介します。 ProjectStageとは 単体テスト、結合テスト、システムテストなど、テストのフェーズ応じてテスト用のプログラムやデータを切り替えたいということがあります。単体テストの場合はDerbyのような軽量なDBを使い、システムテストでは番と同等の構成のDBを使うというような場合です。この切り替えのために手作業で設定ファイルを変更するのでは自動ビルドに対応するのが難しくなるので、プログラム起動のパラメーターによって切り替えられる仕組みが望まれるところです。 DeltaSpikeのProjectStageは、プロジェクトの開発ス

    CDIを使ったプログラムの単体テスト(2)
    Kazuhira
    Kazuhira 2015/11/03
  • CDIを使ったプログラムの単体テスト(1)

    これから何回かに分けてCDIベースのテストを支援するDeltaSpikeのモジュールを紹介します。今回はDeltaSpike Test-Controlモジュールです。 CDIベースの単体テストの問題 CDIを使ったインジェクション、プロデューサ、インタセプタ、イベントなどを使ったクラスをどうやってテストしたらよいのでしょう。setterインジェクションを使うなど、無理をすればある程度はコンテナ無しでもテストができるかもしれませんが、できればCDIの普通の使い方をしたままでテストをしたいものです。そうなると、JUnitとCDIコンテナを連携させる仕組みが必要になります。 テスト対象がEJBやコンテナ管理のJPAを使っている場合など、Java EEコンテナに依存する場合には、Arquillianを使うのが定番ですが、Arquillianはテストをアプリサーバー上で実行するためにアプリサーバーの

    CDIを使ったプログラムの単体テスト(1)
    Kazuhira
    Kazuhira 2015/10/31
  • Producesアノテーションでのスコープ管理 - シュンツのつまづき日記

    【前提条件】 [環境] JDK 1.8.66 Jersey 2.22.1 Glassfish 4.1 【概要】 前回はProducesアノテーションを使ったインエジェクションについて書きました。 今回はProducesアノテーションとスコープアノテーションを組み合わせて使ってみます。 【前提の設定】 pom.xmlとApplicationの設定は前回のエントリと同じです。 【インジェクションするクラス】 import java.io.Serializable; import java.time.LocalDateTime; public class CreatedDate implements Serializable { private final LocalDateTime dateTime; private final String name; public CreatedDate(

    Producesアノテーションでのスコープ管理 - シュンツのつまづき日記
    Kazuhira
    Kazuhira 2015/10/31
  • DeltaSpikeモジュールの概要

    久しぶりのブログへの投稿になります。当ブログではJava EE仕様のバックボーン的な重要な仕様であるContexts and Depenency Injection (CDI)とその拡張モジュールについて書いています。特に、CDI拡張モジュールについてはDeltaSpikeの活動について注目しています。しばらく更新が滞っていましたが、WildFly 10などJava EE 7ベースのアプリサーバーが普及するとアプリケーション開発の現場でCDIを使う機会が益々増えると思いますので、またブログを再開したいと思います。今ままで同様、不定期の更新になるかとは思いますが、今後ともよろしくお願いします。 DeltaSpikeはポータブルなCDI拡張モジュール Apache DeltaSpikeはオープンソースで開発されているCDIの拡張モジュール集です。DeltaSpikeは、CDIコンテナの代表的な

    DeltaSpikeモジュールの概要
    Kazuhira
    Kazuhira 2015/10/25
  • 【注意事項あり】Doma 2だけどCDI/EJB使ってJTAでトランザクション管理したい!そしてJAX-RSでREST作りたい! - 行きあたりばったりエンジニアの日記

    Doma 2とは?基的な使い方は? Doma 2は、SQLを外部ファイルに書くことができるORマッパーです。ネイティブSQLが書けること、依存ライブラリが無い事、国産 OSSで日語ドキュメントが充実している事などが魅力です。 下記の記事もご参考になさってください。2014年のJavaアドベントカレンダー向けに書いたものです。 美しき青きDoma!~SQLとIDEが奏でる美しきORマッピング~ - Java EE 事始め! Domaでは、プログラマが作るのはHogeDaoインターフェイスだけで、その実装クラスHogeDaoImplはGradleでビルド時にAnnotation Processorで自動生成されます。 CDI/EJB使ってHogeDao型のフィールドにHogeDaoImplのインスタンスをインジェクションしたり、JTAでトランザクション管理するには、実装クラス側(HogeD

    【注意事項あり】Doma 2だけどCDI/EJB使ってJTAでトランザクション管理したい!そしてJAX-RSでREST作りたい! - 行きあたりばったりエンジニアの日記
  • Java EE パフォーマンスTips #glassfish_jp

    JJUG CCC 2021 Spring にて講演。 2021年3月リリースのJDK 16 では、17個の JEP(JDK Enhancement Proposal)が導入されました。 JDK 16で導入された JEP 396: Strongly Encapsulate JDK Internals by Default による影響は十分に評価・準備することをお勧めします。 今回は、JEP 396での変更点やその背景を解説すると共に、アプリケーションでの評価・確認する際のポイントをご紹介します。

    Java EE パフォーマンスTips #glassfish_jp
  • ProcessAnnotatedTypeイベント:アノテーションの上書き

    AnnotatedTypeはCDIにおいてクラスまたはインタフェースのメタデータを管理するためのものです。AnnotatedTypeからアノテーション、コンストラクタ、フィールド、メソッドの情報を得ることができます(下図参照)。CDI拡張モジュールはProcessAnnotatedTypeイベントによってこのAnnotatedTypeを受け取り、そのラッパークラスを作成してCDIコンテナに登録することで、メタデータを上書きできます。 具体例を見ていきましょう。AnnotatedTypeの上書きをする拡張モジュールの例としてWeld Documentation:16.7. Wrapping an AnnotatedTypeがあります。これは、AnnotatedTypeのアノテーションが@Nameを含む場合にvalue()の内容を上書きするというものです。 もともとの@Namedの定義は次のよ

    ProcessAnnotatedTypeイベント:アノテーションの上書き
    Kazuhira
    Kazuhira 2015/06/02
  • なるほど!ザ・Weld

    CDIを使った単体テストについての3回目はDeltaSpike Test-ControlモジュールのMockフレームワークの使い方について紹介します。前回のブログでは@ExcludeとProjectStageを組み合わせることで開発ステージに合わせてインジェクトするBeanを切り替える方法について説明しましたが、今回紹介する方法ではもっとダイレクトにMockを使ってインジェクトの対象を切り替えます。 Mockフレームワークとは 使い方を説明するために、まずインジェクションを実行する舞台となるBeanを定義します。サンプルコードとしてMyLogicというBeanを作ります。このBeanはget()メソッドの引数の10倍の数を返すもので、内部でRepositoryのsave()メソッドを呼び出します。 package org.tanoseam.examples; import javax.en

    なるほど!ザ・Weld
    Kazuhira
    Kazuhira 2015/04/16
  • BeanリファレンスとCreationalContext (2)

    BeanリファレンスとCreationalContextというテーマの続きです。前回のブログで、Beanインスタンスを生成するBean::create()の中で、(1) 実際にBeanインスタンスを生成するproduce()と、(2) インジェクションを実行するinject()の両方にメソッド引数として同じCreationalContextのインスタンスが渡されていていることを確認しました。このCreationalContextの役割を調べるのが今回のテーマです。

    BeanリファレンスとCreationalContext (2)
    Kazuhira
    Kazuhira 2015/04/16
  • CDI を理解する為に重要なレシピ

    2015年4月15日 at 1:19 午後 1件のコメント Java Day Tokyo 2015 で私が発表した内容を下記に公開しました。セッションは、資料を作成する上で、今回ご紹介する内容を、より重点的に説明した方が良いと判断し、アジェンダに記載した若干内容を変更しお届けさせて頂きました。しかしセッションは、日でまだ不足している情報をお届けする内容であるため、皆様のご理解のお役に立てば誠に幸いです。 Java EE を利用して Web アプリケーション、企業アプリケーションを構築するためには、Webのデザイン、データ・アクセス部の実装、そしてそれらをつなぐビジネス・ロジックの3階層から構成する事が多いかと思います。これらの構成要素の中で、今回は、ビジネス・ロジックの実装部で重要な役割を担う CDI について焦点をあて、利用する上で重要な点について 14 点ご紹介しました。 セッ

    CDI を理解する為に重要なレシピ
    Kazuhira
    Kazuhira 2015/04/15
  • CDI Essential Recipes at Java Day Tokyo 2015

    CDI Essential Recipes at Java Day Tokyo 2015 1. Java EE 7 エッセンシャル・レシピ ⽇日オラクル株式会社 Fusion  Middleware  事業統轄Java  エバンジェリスト 寺⽥田  佳央 Java Day Tokyo 2015 2015年年4⽉月8⽇日 Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 2. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | •  以下の事項は、弊社の⼀一般的な製品の⽅方向性に関する概要を説明するものです。 また、情報提供を唯⼀一の⽬目的とするものであり、いかなる契約にも組み込むこ とはできません。以下の事項は

    CDI Essential Recipes at Java Day Tokyo 2015
    Kazuhira
    Kazuhira 2015/04/09