Java EE 7 ハンズオン概要 日本オラクル株式会社 Oracle University 野邊 哲男 Java Day Tokyo 2016 2016 年 5 月 24 日 Copyright 2016, Oracle and/or its affiliates. All rights reserved.
Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle s products remains at the sole discretion of Oracle. Copyright 2016, Oracle and/or its affiliates. All rights reserved. 2
アジェンダ 1 2 3 Java EE 7 概要 Java EE 7 ハンズオンの概要 [ 参考 ] Oracle University Java EE 7 関連コースのご紹介 Copyright 2016, Oracle and/or its affiliates. All rights reserved. 3
Java EE 7 概要 Copyright 2016, Oracle and/or its affiliates. All rights reserved. 4
Java EE 7 概要 Java Platform, Enterprise Edition(Java EE) とは 企業向けの多層アプリケーション (Web など ) を開発 / 動作させるためのフレームワーク / 技術仕様群 Java Community Process(JCP) で策定 Java EE 7 は Java EE6 をベースに 3 つのテーマを掲げ 機能拡張や新機能を提供 開発生産性のさらなる向上 HTML5 対応 エンタープライズニーズへの対応 Java EE 7 で追加された 4 つの新しい技術 Java API for WebSocket Batch Applications for the Java Platform(jBatch) Java API for JSON Processing Concurrency Utilities Copyright 2016, Oracle and/or its affiliates. All rights reserved. 5
Java EE 7 の各仕様と当ハンズオンで主に使用するもの ハンズオン JSP 2.2 JSF 2.2 Servlet 3.1 EL 3.0 ハンズオン ハンズオン Interceptors 1.1 CDI 1.1 EJB 3.2 JAX-RS 2.0 Java API for JSON 1.0 ハンズオン Java API for WebSocket 1.0 JPA 2.1 JTA 1.2 Common Annotations 1.1 ハンズオン JMS 2.0 ハンズオン Batch Applications 1.0 Bean Validation 1.1 Connector 1.7 Portable Extensions Concurrency Utilities 1.0 アップデート新機能メジャー リリース Copyright 2016, Oracle and/or its affiliates. All rights reserved. 6
Java API for WebSocket (JSR-356) Java で WebSocket 通信を行うアプリケーションを開発するための標準 API WebSocket では クライアントとサーバ間でハンドシェイクを確立後 特定のエンドポイントを基点に 双方向かつ非同期的にデータを送受信 Time open send receive Client receive receive payload HTTP Handshake Request Handshake Response WebSocket Connection payload payload payload upgrade receive send Server send send send payload receive receive payload send Copyright 2016, Oracle and/or its affiliates. All rights reserved. 7
Java API for WebSocket 下図は Java API for WebSocketの簡単なサンプルであるEchoアプリケーションのイメージ クライアント エンドポイントをベースにWebSocket 通信 ws://host:port/websocket-echo/echo サーバ側のエンドポイント import javax.websocket.onmessage; import javax.websocket.server.serverendpoint; @ServerEndpoint("/echo") public class EchoEndpoint { Hello WebSocket! Hello WebSocket! } @OnMessage public String echo(string message) { return message; } メッセージ着信時に OnMessage ハンドラ実行その他のハンドラとして 接続オープン時に OnOpen 接続クローズ時に OnClose エラー発生時に OnError を実装可能 Copyright 2016, Oracle and/or its affiliates. All rights reserved. 8
Java Message Service 2.0 (JSR 343) Java Message Service (JMS) は Java でメッセージの送受信を行うための技術仕様 Pointo-To-Point (1 対 1) での送受信 Publish-Subscribe (1 対多 ) での送受信 Java App Point-To-Point Queue Java App JMS 2.0 では 下記の機能を拡張 Simplified API 配信遅延 非同期送信 リソース定義の簡素化 Java App Publish-Subscribe Topic Java App Java App Copyright 2016, Oracle and/or its affiliates. All rights reserved. 9
Java Message Service 2.0 (JSR 343) Simplified API JMS の Connection と Session を統合した新しい JMSContext や CDI により メッセージの送受信処理を簡潔な構文で実現可能 Context messaging = null; ConnectionFactory connectionfactory = null; Queue queue = null; Connection connection = null; Session session = null; MessageProducer sender = null; try { messaging = new InitialContext(); connectionfactory = (ConnectionFactory) messaging.lookup("mycf"); queue = (Queue) messaging.lookup("myq"); connection = connectionfactory.createconnection(); session = connection.createsession(session.auto_acknowledge); sender = session.createproducer(queue); TextMessage message = session.createtextmessage(); message.settext( Hello ; sender.send(message); } catch (Exception ex) { ex.printstacktrace(); } finally { try { sender.close(); session.close(); connection.close(); } catch (Exception ex) { } } 旧来のJMS JMS 2.0 @Inject @JMSConnectionFactory("myCF") JMSContext context; @Resource(mappedName = "myq") Queue queue;.. try { context.createproducer().send(queue, Hello ); } catch (Exception ex) { ex.printstacktrace(); } Copyright 2016, Oracle and/or its affiliates. All rights reserved. 10
Batch Application for the Java Platform (JSR 352) 通称 jbatch と呼ばれるバッチ処理を Java で実装するための技術仕様 JOB や STEP などを構成してバッチ処理フローを定義 jbatch の主要構成要素 JOB JOB STEP バッチ処理の単位 複数のステップで構成バッチ処理の実装単位 STEP -A STEP -B JobOperator JOB の実行や再実行の制御 STEP -W STEP -Y JobRepository JOB の実行状態や結果の格納 STEP -X STEP -Z Copyright 2016, Oracle and/or its affiliates. All rights reserved. 11
jbatch の構成要素とステップの実装 JOB の構成は XML ファイルで記述 STEPは チャンク式またはバッチレット式でJavaクラスとして実装 ( 次のスライド ) ItemReader JOB JobOperator Step 1 ItemProcessor ItemWriter Job Repository Step 2 Step 3 Batchlet ItemReader ItemProcessor ItemWriter Copyright 2016, Oracle and/or its affiliates. All rights reserved. 12
jbatch のステップの実装と実行イメージ ItemReader データを読込む処理を実装するクラス ItemProcessor ItemReader で読込んだデータに対する処理を実装するクラス ItemWriter 処理済のデータを書込み コミットする処理を実装するクラス : チェックポイント毎に実行 Batchlet 任意の処理を実装 1 つの Step に 1 つの実装クラス チャンク式ステップの実行開始 STEP ItemReader ItemProcessor ItemWriter データを読込み データを処理 チャンク式ステップの実行終了 チェックポイント毎にデータの書込み Copyright 2016, Oracle and/or its affiliates. All rights reserved. 13
Java EE 7 ハンズオンの概要 Copyright 2016, Oracle and/or its affiliates. All rights reserved. 14
3 章 JavaServer Faces と CDI ブラウザからメッセージを入力して標準出力 CDI 管理 Bean Send Message ボタン選択 IndexPageMgdBean index.xhtml 標準出力 こんにちは 出力 (NetBeans の GlassFish Server の出力タブ ) Copyright 2016, Oracle and/or its affiliates. All rights reserved. 15
4 章 Java Message Service と EJB (Message Driven Bean) ブラウザからメッセージを入力して JMS トピック経由で標準出力 Send Message ボタン選択 CDI 管理 Bean IndexPageMgdBean Message DrivenBean JMS トピック jms/inforegtopic MessageListenerMDBImpl index.xhtml 標準出力 こんにちは 出力 (NetBeans の GlassFish Server の出力タブ ) Copyright 2016, Oracle and/or its affiliates. All rights reserved. 16
5 章 WebSocket と EJB(Singleton Session Bean) ブラウザからメッセージを入力してJMSトピック経由で同じWebSocketセッションを持つくクライアントに送信 JMS トピック jms/inforegtopic MessageListenerMDBImpl Message DrivenBean index.xhtml ClientManageSinglEJB WebSocket メッセージ送信 Send Message ボタン選択 IndexPageMgdBean CDI 管理 Bean Copyright 2016, Oracle and/or its affiliates. All rights reserved. 17
6 章 jbatch ファイル test_in.txt を読み込み 文字列を大文字に変換し test_out.txt に出力する また test_out.txt のファイルサイズを標準出力に出力する Servlet: JobStartServlet JobOperator を使用して Job 開始 Job:simplejob Step: mychunk MyReader MyProcessor MyWriter ファイルから文字列を 1 行読込む 読み込んだ文字列を大文字に変換 変換した文字列を別ファイルに書込む test_in.txt javaee7 netbeans test_out.txt JAVAEE7 NETBEANS Step: mytask MyBatchlet mychunk ステップで作成されたファイルのサイズを出力する Copyright 2016, Oracle and/or its affiliates. All rights reserved. 18
[ 参考 ] Oracle University Java EE 7 関連コースのご紹介 Copyright 2016, Oracle and/or its affiliates. All rights reserved. 19
Java EE 7 関連の主な研修コース 下表は Java EE 7 関連の主要なコースです http://education.oracle.com から右図のように javaee7 のキーワードでコース検索すると詳細を参照できます コース Java EE 7: 新機能 (2 日間 ) Java EE 7: Web アプリケーション開発 (5 日間 ) 概要 このコースでは Java EE 7 の新機能について説明します Java EE 6 を使用していて Java EE 7 への移行を検討している Java エンジニアに最適なコースです このコースでは Java Platform, Enterprise Edition 7 Web プロファイルに準拠したエンタープライズ アプリケーションの作成およびデプロイについて学習します このコースでは Session Bean (EJB-Lite) JPA Servlet/JSP CDI JAX-RS RESTful Web サービス Java API for WebSockets などの主要な Java EE 7 テクノロジについて説明します Copyright 2016, Oracle and/or its affiliates. All rights reserved. 20