Java Day Tokyo2016 #jdt2016_4c のセッション資料です。Read less
前回のブログに引き続き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アプリケーションのためのテスティング・フレームワー
いくつか考えてみました。 HttpServlet.init をオーバーライドする(Servlet) ServletContainerInitializer の実装クラスを作る(Servlet) Singleton セッションビーンに @Startup を付けて @PostConstructed を付けたメソッドを定義する(EJB) Extension の実装クラスを作ってライフサイクルイベントをハンドリングするオブザーバーメソッドを作る(CDI) @ApplicationScoped なCDI管理ビーンを作って @Initialized(ApplicationScoped.class) なイベントをハンドリングするオブザーバーメソッドを作る(CDI) 他にもあったら教えてください! で、個人的には Servlet APIを直接使うのは可能な限り避けたい EJBは使わない という感じなのでC
前回のブログで紹介したDeltaSpike DataモジュールをJava EEアプリケーションサーバー上で動かしてみましょう。どのアプリケーションサーバーを使ってもよいのですが、このブログではWildFlyを使った手順を紹介します。WildFlyにはCDIコンテナとしてWeldが組み込まれていますし、H2データベースが最初からインストールされているので、DeltaSpike Dataモジュールをすぐに試してみることができます。このページの最後にサンプルプログラムのリンクをつけていますので実際にプログラムを動かしながら確認してください。 WildFlyのインストール WildFlyはJBoss.orgにおいてオープンソースで開発されているJava EE 7に対応したアプリケーションサーバーです(以前はJBossプロジェクトのアプリケーションサーバーはJBoss ASと呼ばれていましたが、JB
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/ で読むことができます。
アプリケーションの設定情報をソースコード中にハードコードするのではなく、プロパティファイルに記述しておいて後から変更できるようにしたい場合があります。このプロパティの値をCDIらしくインジェクションで取得する方法としてProducerを使う方法があります。こうやって手作りするのは良いのですが、複数の変数の型に対応させたり、拡張可能にしたりと機能を盛り込んでいくと手間がかかります。今回はこのような機能を提供するDeltaSpike Configurationについて紹介します。 DeltaSpike Configurationとは DeltaSpike Configurationはプロパティから構成情報を取得するための機能でCoreモジュールに含まれます。アプリケーションからこれを使うのは簡単です。変数のインジェクション時に@ConigurePropertyというアノテーションを指定すると、
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
前回のブログに引き続きJava SE上でCDIプログラムの単体テストをする方法について書きます。今回はDeltaSpike Coreモジュールに含まれるProjectStageと@Exclude、そして最後にCdiTestRunnerと組み合わせて使う方法を紹介します。 ProjectStageとは 単体テスト、結合テスト、システムテストなど、テストのフェーズ応じてテスト用のプログラムやデータを切り替えたいということがあります。単体テストの場合はDerbyのような軽量なDBを使い、システムテストでは本番と同等の構成のDBを使うというような場合です。この切り替えのために手作業で設定ファイルを変更するのでは自動ビルドに対応するのが難しくなるので、プログラム起動のパラメーターによって切り替えられる仕組みが望まれるところです。 DeltaSpikeのProjectStageは、プロジェクトの開発ス
これから何回かに分けてCDIベースのテストを支援するDeltaSpikeのモジュールを紹介します。今回はDeltaSpike Test-Controlモジュールです。 CDIベースの単体テストの問題 CDIを使ったインジェクション、プロデューサ、インタセプタ、イベントなどを使ったクラスをどうやってテストしたらよいのでしょう。setterインジェクションを使うなど、無理をすればある程度はコンテナ無しでもテストができるかもしれませんが、できればCDIの普通の使い方をしたままでテストをしたいものです。そうなると、JUnitとCDIコンテナを連携させる仕組みが必要になります。 テスト対象がEJBやコンテナ管理のJPAを使っている場合など、Java EEコンテナに依存する場合には、Arquillianを使うのが定番ですが、Arquillianはテストをアプリサーバー上で実行するためにアプリサーバーの
【前提条件】 [環境] 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(
久しぶりのブログへの投稿になります。当ブログではJava EE仕様のバックボーン的な重要な仕様であるContexts and Depenency Injection (CDI)とその拡張モジュールについて書いています。特に、CDI拡張モジュールについてはDeltaSpikeの活動について注目しています。しばらく更新が滞っていましたが、WildFly 10などJava EE 7ベースのアプリサーバーが普及するとアプリケーション開発の現場でCDIを使う機会が益々増えると思いますので、またブログを再開したいと思います。今ままで同様、不定期の更新になるかとは思いますが、今後ともよろしくお願いします。 DeltaSpikeはポータブルなCDI拡張モジュール Apache DeltaSpikeはオープンソースで開発されているCDIの拡張モジュール集です。DeltaSpikeは、CDIコンテナの代表的な
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
AnnotatedTypeはCDIにおいてクラスまたはインタフェースのメタデータを管理するためのものです。AnnotatedTypeからアノテーション、コンストラクタ、フィールド、メソッドの情報を得ることができます(下図参照)。CDI拡張モジュールはProcessAnnotatedTypeイベントによってこのAnnotatedTypeを受け取り、そのラッパークラスを作成してCDIコンテナに登録することで、メタデータを上書きできます。 具体例を見ていきましょう。AnnotatedTypeの上書きをする拡張モジュールの例としてWeld Documentation:16.7. Wrapping an AnnotatedTypeがあります。これは、AnnotatedTypeのアノテーションが@Nameを含む場合にvalue()の内容を上書きするというものです。 もともとの@Namedの定義は次のよ
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
2015年4月15日 at 1:19 午後 1件のコメント Java Day Tokyo 2015 で私が発表した内容を下記に公開しました。本セッションは、資料を作成する上で、今回ご紹介する内容を、より重点的に説明した方が良いと判断し、アジェンダに記載した若干内容を変更しお届けさせて頂きました。しかし本セッションは、日本でまだ不足している情報をお届けする内容であるため、皆様のご理解のお役に立てば誠に幸いです。 Java EE を利用して Web アプリケーション、企業アプリケーションを構築するためには、Webのデザイン、データ・アクセス部の実装、そしてそれらをつなぐビジネス・ロジックの3階層から構成する事が多いかと思います。これらの構成要素の中で、今回は、ビジネス・ロジックの実装部で重要な役割を担う CDI について焦点をあて、利用する上で重要な点について 14 点ご紹介しました。 本セッ
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. | • 以下の事項は、弊社の⼀一般的な製品の⽅方向性に関する概要を説明するものです。 また、情報提供を唯⼀一の⽬目的とするものであり、いかなる契約にも組み込むこ とはできません。以下の事項は
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く