これからはじめる java ee

65
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | これからはじめる Java EE 60WebLogic Server 勉強会@東京 日本オラクル株式会社 オラクルユニバーシティ 岡田 大輔 2017125

Upload: oracle-fusion-middleware

Post on 19-Feb-2017

105 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

これからはじめる Java EE 第60回 WebLogic Server 勉強会@東京

日本オラクル株式会社 オラクルユニバーシティ 岡田 大輔 2017年1月25日

Page 2: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。

Oracle と Java は、米国オラクルコーポレーション及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。

2

Page 3: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

お話すること

1. Java EE とは?

2. Java EE アプリケーションの開発

3. Java EE アプリケーションのデプロイ

3

Page 4: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Java EE とは? Java EE の概要

4

Page 5: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Java Platform, Enterprise Edition

• Java SE をベースにした企業システム向けのフレームワーク

–オープンなWebシステムの構築を支える機能群の標準仕様 • コミュニティ主導のエンタープライズ・ソフトウェア標準

• コンポーネント仕様とサービスアクセスのための各種APIを規定

–移植性(Write Once Run Anywhere を担保)

• Oracle WebLogic Server 12c R2 – Java EE 7 仕様に準拠した アプリケーション・サーバー • Java EE アプリケーションが動作する 環境を提供

5

Java SE

Java EE Java 言語の基本機能を提供する API 群

企業システム向けの 機能を提供する API 群

Page 6: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

1998年5 月

エンタープライズ アプリケーション

1999年12月

10 specs

堅牢 スケーラブル

2001年9月

13 specs

Web サービス

2003年11月

20 specs

かんたん開発

2006年5月

23 specs

軽量化

2009年12月

28 specs

Project JPE

J2EE 1.3

CMP, Connector

Architecture

Java EE 5

Ease of

Development, Annotations,

EJB 3.0, JPA, JSF, Updated Web Services

J2EE 1.4 Web Services

Mgmt, Deployment,

Async

Connector

Java EE 6 Pruning, Extensibility Ease of Dev,

CDI, JAX-RS

Web Profile

Servlet 3.0, EJB 3.1 Lite

J2EE 1.2 Servlet, JSP,

EJB, JMS

RMI/IIOP

Java EE 7 JBatch, Concurrency Utility, HTML5:

WebSocket,JSON-P

Web Profile

Servlet 3.1, EJB 3.1 Lite

HTML5対応 エンタープライズ ニーズへの対応

2013年6月

28 specs

Java EE の歴史

6

Page 7: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Web Profile Full Profile Java SE Java EE 7

7

JSF

Servlet

JSP

Expression Language

JSTL

Common Annotation

EJB Lite

JPA

CDI

Bean Validation

JASPI JTA

EJB

JMS

Batch

Concurrency Utilities

Interceptors

JavaMail

XML Messaging

JAX-WS

JAX-RPC

WebSocket JAX-RS JAXR

JSON JAXB

JDBC

JAXP

JMX

StAX

• Web Profile Web アプリケーション開発で必要となる API セット

• Full Profile すべての Java EE API セット

Page 8: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Java EE 7 の主な標準仕様 標準仕様 開発領域 特徴

JSF 2.2

Webアプリケーション

• リッチな UI の効率的な開発を実現するコンポーネントベースのWebアプリケーション・フレームワーク

Servlet 3.1 • リクエスト・レスポンスを処理するコンポーネント仕様 • 非同期 Servlet による Ajax 対応、ノンブロッキング I/O の サポート

Java API for WebSocket

• Java で WebSocket 通信を実装するための API • 注釈ベースで実装可能

EJB 3.2 ビジネスロジック • ビジネスロジックを提供する分散コンポーネント仕様 • 冗長な設定・コード記述の削減により開発生産性を向上

JPA 2.1 永続化ロジック • 標準ORマッピング・フレームワーク • Java EE だけでなく Java SE でも使用可能

JAX-RS 2.0 Webサービス • 注釈ベースで実装可能なREST スタイルの Web サービス標準仕様

CDI 1.1 全領域 • コンテキスト(スコープ) をもった依存性注入(DI) 仕様。すべてのレイヤにおいて統一された DI 方法を提供

8

Page 9: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

プレゼンテーション インテグレーション (永続化ロジック)

ビジネスロジック

9

Java EE アプリケーションのアーキテクチャ (多層モデル)

Enterprise JavaBeans

JPA

JavaServer Faces

(Servlets/JSPs)

JAX-RS

WebSocket

CDI

CDI

CDI

CDI JMS

jBatch

HTML JavaScripts

Web Storage

HTML JavaScripts

メッセージング・サービス による非同期 処理 API

Java でバッチ処理を実装するための API

ORマッピング・ フレームワーク ビジネス・ロジック

を実装するための API

従来通りの MVC モデルを使用した アプリケーション・アーキテクチャ。プレゼンテーション・レイヤー(JSF)で HTML を構成。

リッチ・クライアント対応型 アプリケーション・アーキテクチャ。 プレゼンテーション・レイヤー (JAX-RS)は REST 通信で JSON を返す。 クライアント側で HTML を構成。

HTTP

HTML

REST

JSON

ブラウザ

Page 10: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

• アプリケーションの固有機能と共通機能を分離する

• Java EE のコンポーネント

– Webアプリケーション: JSF, Serlvets, JSP

– EJB: Session Bean, Message Driven Bean

–クライアント: アプレット

コンポーネント・アーキテクチャ

コンテナ

コンポーネント

コンテナ: • クライアントに「サービス」を提

供する実行環境 • コンポーネントのライフサイクル

を管理

コンポーネント: • アプリケーション固有の機能

が実装されている • コンテナが提供するサービス

を利用 • コンテナによって管理される

10

Page 11: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

コンテナが提供するサービス

• デプロイ時に宣言可能なサービス

– 永続化

– トランザクション

– セキュリティ

– インジェクション

• コンポーネント制御のためのサービス

– ライフサイクル管理

– スレッド管理

– クライアントとの通信

• コンテナ・プロバイダ固有のサービス

– クラスタリング

– 負荷分散

– フェイル・オーバー

サービスの振る舞いはデプロイメント記述子や注釈で指定

可能

アプリケーション・サーバー ごとに提供する機能が異なる

コンポーネント制御に必要なサービスは暗黙で提供される

11

コンポーネントは Java EE 標準 API でアクセスできる

Page 12: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

WebLogic Server

EJB コンテナ Web コンテナ

WebLogic Server と Java EE

12

トランザクション・マネージャ

JMS サーバー

データ・ソース

JNDI

JNDI JAAS

JMS JTA

JDB

C

セキュリティ・レルム

LDAP ATN ATZ Auditor

宛先 (Queue/Topic)

JSF EJB JPA

Java EE アプリケーション

RMI

HTT

P

T3

Plug-in

データベース

Web サーバー

ブラウザ

クライアント

Java SE

Page 13: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Java EE アプリケーションの開発 アプリケーションの作り方と WebLogic Server の設定

13

Page 14: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

開発環境の準備

開発環境の

準備

アプリケーション

の作成

(プレゼンテーション層)

アプリケーション

の作成

(ビジネスロジック層)

アプリケーション

の作成

(永続化層)

14

Page 15: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

開発環境は何を使う?

• Java EE 7 対応 IDE であれば何でも OK

– IDE ごとに使い勝手が違うので好みのものを選択 • NetBeans

• Eclipse (今回は Eclipse を使います)

• IntelliJ IDEA

• Oracle JDeveloper

• etc …

15

Page 16: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

• NetBeans 日本語サイト から入手可能

– Java EE を選択すると開発に必要なものはひと通り揃う • GlassFish (アプリケーション・サーバー)

• WebLogic Server は別途インストール

• 日本語化済み

16

開発環境の準備: NetBeansの場合

Page 17: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

1. [サービス]タブの「サーバー」を右クリックして「サーバーの追加…」を選択

2. [サーバー・インスタンスの追加] 画面でアプリケーション・サーバーを追加 • アプリケーション・サーバーのイン

ストール先を指定する

• Oracle WebLogic Server を使う場合は事前にドメインを作成

17

アプリケーション・サーバーの指定: NetBeansの場合

GlassFishを使う場合は この作業は不要です!

Page 18: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

• Oracle Enterprise Pack for Eclipse を使用します

– Eclipse とアプリケーション・サーバー (GlassFish や Oracle WebLogic Server) 用のツールなどがバンドルされている • アプリケーション・サーバーは別途インストール

–日本語化は Pleiades などで行う

18

開発環境の準備: Eclipseの場合

日本語化済みEclipse (Pleiades All in One)を入手してOEPEプラグインを追加してもOK

Page 19: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

1. [サーバー]タブをリンクをクリック

2. [新規サーバー] 画面でアプリケーション・サーバーを追加 • サーバー・ランタイムが登録されて

いない場合は、アプリケーション・サーバーのインストール先を指定する

• Oracle WebLogic Serverを使う場合は、次の画面でドメイン指定する (ドメインは事前に作成しておく)

19

アプリケーション・サーバーの指定: Eclipseの場合

GlassFishを使う場合も 同様に登録します

Page 20: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 20

アプリケーションはプロジェクト単位で作成 1. Dynamic Web Project を作成

2. [Modify …] を 押す

3. Web アプリケーションで使用するファセットを追加

追加するファセット (JavaServer Faces, JPA など) によって、ライブラリや DB 接続設定などが必要

Page 21: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

アプリケーションの作成 (プレゼンテーション層)

開発環境の

準備

アプリケーション

の作成

(プレゼンテーション層)

アプリケーション

の作成

(ビジネスロジック層)

アプリケーション

の作成

(永続化層)

21

Page 22: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 22

よくある Web アプリケーションの構成

データベース ブラウザ

プレゼンテーション インテグレーション (永続化ロジック)

ビジネスロジック

コントローラー

ビュー

モデル

(JSF)

FacesServlet (Bean Validation) 入力値の検証

(JPA)

EntityManager

(CDI) マネージド

Bean

(EJB / JAX-RS) ビジネス ロジック

(JPA) エンティティ

(JSF) ページ [Facelets]

Page 23: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

JavaServer Facesとは?

• Java EE標準で提供されるWebアプリケーションのためのUIフレームワーク

–コンポーネント・ベースでユーザー・インタフェースを作成 • UIの構成要素は「UIコンポーネント」として提供される

• イベント駆動型プログラミング

–ビュー定義はFacelet (XHTML+JSFタグ)を使用 • テンプレート・エンジン

• Ajaxをサポート

• …

Webアプリケーションを効率良く開発可能に

23

Page 24: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Webコンテナ

JSFとMVC

HTTPリクエスト

HTTPレスポンス

コントローラー

(Faces Servlet)

ビュー

(Facelet)

モデル

(マネージドBean)

生成・管理

操作・リダイレクト

アクセス

24

Page 25: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Webコンテナ

JSFの構成要素

ブラウザ

HTML JavaScript

CSS

Faces Servlet

XUL

JSP

XHTML コンバータ

バリデータ

マネージド Bean

faces-config.xml

(オプション)

レンダラ

HTTP リクエスト

HTTP レスポンス

リクエストの制御とマネージドBeanの呼び出し

レスポンスと生成(デフォルトではHTML生成)

ページ記述する Faceletの使用を推奨

入出力の文字列とマネージドBeanのデータ型を変換 失敗時はエラーを返す

入力値の有効性を検証 失敗時はエラーを返す

画面遷移やコンポーネントとのデータ同期、ビジネスロジックを実行

<f:ajax>タグでAjax対応

25

Page 26: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

FacesServletの役割

• MVCモデルのコントローラーに相当

–リクエストに応じて、JSFライフサイクルを管理するフロント・コントローラー・コンポーネント

– javax.faces.context.FacesContext • リクエスト処理とレスポンス生成に関連するコンテキスト情報

• ライフサイクルの各フェーズで利用される

3. 6つのライフサイクル・フェーズを処理

FacesServlet

Lifecycle

FacesContext

1. FacesContextを生成する

2. 制御をLifecycleに渡す

26

Page 27: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 27

JSF ページの作成

• Java EE 7 用に namespace を修正

Java EE 6 http://java.sun.com/jsf/html Java EE 7 http://xmlns.jcp.org/jsf/html

Page 28: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

JSF ページ

<?xml version='1.0' encoding='UTF-8' ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"

xmlns:h="http://xmlns.jcp.org/jsf/html">

<h:head>

<title>prodMgmt</title>

</h:head>

<h:body>

<h2>

<h:outputText value="index.xhtml" />

</h2>

<hr />

<p>商品管理</p>

<h:form>

<div>

<label>一覧</label> <span />

<span> <h:commandButton action="#{searchBean.toList}" value="表示" /> </span>

</div>

</h:form>

</h:body>

</html>

<h:outputText>

<h:commandButton>

index.xhtml

28

Page 29: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

JSF での画面遷移

<h:commandButton id="subimt" value="送信" action="search" />

search.xhtml <h:outputText value="何かを表示します" />

index.xhtml <h:form> <h:inputText id="prodName"/> <h:commandButton id="subimt" value="送信"

action="#{searchBackingBean.toSearch}" /> </h:form>

戻り値の型がvoidのメソッドの呼び出し、または メソッドの戻り値が null の場合は呼び出し元の ページを表示

遷移先のJSFページを指定できる

SearchBackingBean public String toSearch() {

return "search"; }

遷移先のページを戻り値で指定

index.xhtml

SearchBackingBean.java

29

マネージドBeanへのアクセスはEL式を使用

Page 30: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

マネージド Bean (CDI) の実装

import javax.enterprise.context.RequestScoped;

@Named("searchBean")

@RequestScoped

public class SearchBackingBean {

private Product[] list;

@NotNull(message = "商品名を入力してください")

@Size(max = 20)

private String productName;

@Inject

private ProductClientBean productClient;

public String toSearch() {

list = productClient.getProductsByName(productName());

return "search";

}

// …

@Named 注釈とスコープの注釈を指定 (スコープの注釈はできるだけ省略しない)

30

マネージド Bean には 画面遷移を行うメソッドも

記述できます

JSF では Bean Validation を使用して入力値を検証可能 (@NotNull で空白入力チェックする場合は、web.xml で

javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL を true に設定する )

SearchBackingBean.java

Page 31: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

search.xhtml

EL 式の使い方

<h:dataTable border="1" value="#{searchBean.list}" var="c" >

JSFのEL式の構文は #{ マネージド Bean の名前.プロパティ名 }

@Named("searchBean") @RequestScoped

public class ProductBean {

private Product[] list;

public Product[] getList() {

return list;

}

マネージドBean名はクラス名(先頭小文字) (@Named 注釈の name 属性で変更可能)

マネージドBeanのプロパティのgetterメソッドを呼び出す

SearchBackingBean.java

31

Page 32: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 32

入力フォーム

<form jsf:id="f1">

検索:

<input type="text" id="it1"

jsf:value="#{searchBackingBean.productName}"

p:placeHolder="商品名を入力" />

<input type="submit" value="検索" jsf:action="search" />

</form>

プレースホルダ

HTMLタグに直接出力する属性を指定するには passThroughAttribute タグを使用 (HTML 5 形式で記述する場合のnamespace宣言は

xmlns:p="http://xmlns.jcp.org/jsf/passthrough" )

<h:inputText value="#{searchBackingBean.productName}">

<f:passThroughAttribute name="placeholder" value="商品名を入力" />

</h:inputText>

Page 33: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

One Point: 日本語の入力を処理するには?

• デプロイメント記述子(weblogic.xml)でエンコーディングを指定

<?xml version="1.0" encoding="UTF-8"?>

<weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-

app"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<charset-params>

<input-charset>

<resource-path>/*</resource-path>

<java-charset-name>UTF-8</java-charset-name>

</input-charset>

</charset-params> </weblogic-web-app>

weblogic.xml

33

Page 34: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

アプリケーションの作成 (ビジネスロジック層)

開発環境の

準備

アプリケーション

の作成

(プレゼンテーション層)

アプリケーション

の作成

(ビジネスロジック層)

アプリケーション

の作成

(永続化層)

34

Page 35: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Enterprise JavaBeans (EJB)

• EJBは再利用可能なビジネスロジックを提供するためのコンポーネント仕様

– Session Bean • クライアントからのリクエスト受信時に実行するビジネスロジックを記述

• 注釈付きのPOJO(Plain Old Java Object)として実装できる

• 同期呼び出しおよび非同期呼び出しとして実装可能

• コンテナによってライフサイクルが管理される

–クライアントの呼び出しを受けたコンテナによって呼び出される

–トランザクションやセキュティはデプロイ時に宣言可能なサービス

– Message Driven Bean • JMSメッセージ受信時に実行するビジネスロジックを記述

35

Page 36: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Session Bean の種類

Session Bean 説明 注釈

Statelss Session Bean クライアントごとにインスタンスが割当てられるが、クライアントの状態を保持しない

@Stateless

Stateful Session Bean クライアントごとにインスタンスが割当てられ、クライアントごとの状態を保持する

@Stateful

Singleton Session Bean

アプリケーションで1回だけインスタンス化され、複数のクライアントがインスタンスに並行アクセスできる (JVMごとに1つだけインスタンスが存在する)

@Singleton

36

Page 37: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

ProductEntityRest.java

@Stateless

@Path("products")

@Consumes({"application/json", "application/xml" })

@Produces({"application/json", "application/xml" })

public class ProductEntityRest {

@PersistenceContext

private EntityManager entityManager;

private Class<Product> entityClass = Product.class;

@GET

@Produces({"application/xml", "application/json" })

public List<Product> findAll() {

CriteriaQuery<Product> cquery =

entityManager.getCriteriaBuilder().createQuery(entityClass);

cquery.select(cquery.from(entityClass));

return entityManager.createQuery(cquery).getResultList();

}

ビジネスロジック・クラスの作成 (EJB / JAX-RS)

37

@Session Bean 注釈 Stateless SessionBean (EJB) として宣言

エンティティの検索 (Criteria API)

Web リソースクラスとして宣言する @Path …. リソースのパス

リソースメソッド @Produces … リソースメソッドが生成する MIME タイプを指定

EJB を Web サービスとして宣言する @Path …. サービスのパス

Page 38: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Session Bean の振る舞い

• Stateless Session Bean • Stateful Session Bean • Singleton Session Bean

Stateless SessionBean

Stateless SessionBean

Session Object

クライアント クライアント

Stateful Session Bean

Stateful Session Bean

Session Object

クライアント クライアント

Session Object

Singleton Session Bean

Session Object

クライアント クライアント

Session Object

38

オブジェクト プーリング

オブジェクトキャッシュ

シングル インスタンス

Page 39: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Session Bean のライフサイクル

• Stateless Session Bean • Stateful Session Bean • Singleton Session Bean

39

存在しない

Ready状態 (呼び出し可能)

1. DI 2.PostConstructコールバック

PreDestroy コールバック

メソッド実行

存在しない

Ready状態 (呼び出し可能)

1.DI 2.PostConstructコールバック

1.Removeメソッド またはタイムアウト 2.PreDestroy コールバック

Passive状態

存在しない

Ready状態 (呼び出し可能)

1.DI 2.PostConstruct コールバック

PreDestroy コールバック

メソッド実行

PrePassivate コールバック

PostActivate コールバック

メソッド実行

タイムアウト

Page 40: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

weblogic-ejb-jar.xml

One Point: SLSB のプールサイズを調整するには?

• デプロイメント記述子(weblogic-ejb-jar.xml)で指定

<?xml version="1.0" encoding="UTF-8"?> <weblogic-ejb-jar xmlns="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd http://xmlns.oracle.com/weblogic/weblogic-ejb-jar http://xmlns.oracle.com/weblogic/weblogic-ejb-jar/1.0/weblogic-ejb-jar.xsd">

<weblogic-enterprise-bean> <ejb-name>ProductEJB</ejb-name> <stateless-session-descriptor> <pool> <initial-beans-in-free-pool>3</initial-beans-in-free-pool> <max-beans-in-free-pool>3</max-beans-in-free-pool> </pool> </stateless-session-descriptor> </weblogic-enterprise-bean> </weblogic-ejb-jar>

<ejb-name>は Session Bean クラスのクラス名を指定

設定は initial = max を推奨 max の値は、 そのEJBへの最大同時 アクセス数が目安 ( < 実行スレッド数)

40

Page 41: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

ProductClientBean.java

JAX-RS クライアント・クラス

41

public class ProductClientBean {

private static final String TARGET_URL =

"http://localhost:7001/prodMgmt/webresources/products";

private Client client;

private WebTarget target;

@PostConstruct

public void init() {

client = ClientBuilder.newClient();

target = client.target(TARGET_URL);

}

public Product[] getProducts() {

return target.request().get(Product[].class);

}

@PreDestroy

public void destroy() {

client.close();

}

Page 42: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

アプリケーションの作成 (永続化層)

開発環境の

準備

アプリケーション

の作成

(プレゼンテーション層)

アプリケーション

の作成

(ビジネスロジック層)

アプリケーション

の作成

(永続化層)

42

Page 43: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

JPA (Java Persistence API)とは?

• JPA 2.1 は Java EE 7 で使用可能な標準ORマッピング・フレームワーク

– OMマッピング … JavaのオブジェクトとRDBのデータをマッピングするしくみ • Java EE

– Java SE 環境でも Java EE 環境でも使用可能 • アプリケーション管理の永続性(Java SE / Java EE)

• コンテナ管理の永続性 (Java EE)

43

データベース Java

オブジェクト

ORマッピング(自動で相互変換)

アプリケション

参照 挿入 更新 削除

Page 44: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 44

JPA エンティティ・クラスを作成するには?

表を選択してクラス名などマッピングを指定するとエンティティ・クラスを生成できる (事前にデータベース接続を設定する必要あり)

テーブルから エンティティを作成

Page 45: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

エンティティ・クラスの構造

45

Product.java import javax.persistence.Entity;

import javax.persistence.Id;

@Entity

public class Product implements Serializable {

@Id private Integer id;

private String productCode;

private String productName;

private Integer price;

@Temporal(TemporalType.TIMESTAMP) private Date creationDate;

public Product() {

}

// …

エンティティ・クラス名は 表名と同じ

主キー

フィールド名は表の列名と同じ

時刻(日付)型のマッピング

Javax.persistence.* パッケージをインポート

引数なしのコンストラクタ

Page 46: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

JPAの構成要素

Persistence Context

EntityManager

PersistenceUnit

(persistence.xml)

EntityManagerFactory

Entity

Entity

Entity

Entity

Entity

データベース

決定 生成

Persistence Unitの設定に基づいて EntityManagerのインスタンスを生成するファクトリクラス

エンティティの操作(CRUD)を行うためのAPIを提供

46

データソースやEntityManagerのトランザクション・タイプなどを指定

Page 47: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

• WebLogic Server のデータソースを使用するように persistence.xml を修正

– <jta-data-source> は WebLogic Server で設定するデータソースの JNDI 名

47

persistence.xml の修正

<persistence-unit name="prodMgmt"

transaction-type="JTA">

<jta-data-source>

jdbc/prodMgmt/dataSource

</jta-data-source>

Page 48: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

WebLogic Server

データ・ソース

Java EE アプリケーションのデータベース接続 データソース(接続プール)を利用

JNDI

デプロイ時にバインド

デプロイ時に 初期容量まで接続

JPA アプリケーション

接続オブジェクト 取得

JNDIルックアップ

Entity オブジェクト

persistence.xml

<jta-data-source />

EntityManager

PersistenceContext

接続プール

TIPS:

アプリケーション・サーバーが提供するデータベース接続サービス(データソース)を利用

48

Page 49: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

WebLogic Server の設定: データソースの設定 (1)

49

データソースのJNDI名は persistence.xml の文字列を 指定

2 フェーズコミットが必要なければ、非 XA ドライバを選択可

Page 50: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

WebLogic Server の設定: データソースの設定 (2)

50

トランザクション・オプションはデフォルト設定のままで OK (グローバル・トランザクションのサポートは必ず選択)

Derby を使用する場合で DB の作成指定する場合はデータベース名: は任意のものを指定できる

Page 51: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

WebLogic Server の設定: データソースの設定 (3)

51

JDBC URLで指定したデータベースを作成する場合は、プロパティ: に 「create=true」を追記

Page 52: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

WebLogic Server の設定: データソースの設定 (4) と確認

52

JDBCデータ・ソースの対象を指定

データ・ソースがデプロイされると[モニタリング]-[統計]タブにインスタンスの行が表示される

Page 53: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 53

WebLogic Server の設定: JTA の設定

• Java EE アプリケーションのグローバル・トランザクションはトランザクション・マネージャ(TM)によって管理される

– WebLogic Server 起動時に TM も起動する

• TM の設定はドメイン単位で行う

– トランザクション・タイムアウト(秒) などを適切に構成する

• データソースも JTA 対応データソースにする (「グローバル・トランザクションのサポート」を有効化 or XA データソース)

– アプリケーションのトランザクション

• コンテナ管理 … 設定ファイル or 注釈で指定

• Bean 管理 … プログラムで指定 (JTA を使用)

Page 54: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Java EE アプリケーションのデプロイ WebLogic Server にアプリケーションをデプロイする

54

Page 55: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Java EE アプリケーションのパッケージング

• Java EE アプリケーションのパッケージング形式 – エンタープライズ・アプリケーション (ear)

– EJB (jar)

– リソースアーカイブ (rar)

– Webアプリケーション (war)

55

Webアプリケーション(war)

EJB EJB

エンタープライズアプリケーション(ear)

Webアプリケーション(war)

EJB(jar)

EJB EJB

EJB (jar)

EJB EJB

Java EE 7 ではEJBを war として

デプロイ可能

従来どおりejb-jar または ear としても

デプロイ可能

Page 56: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

ドメイン

アプリケーションのデプロイメント

56

マシン

管理サーバー

マシン

管理対象 サーバー

webApp.war

prodMgmt.war

設定変更

MBean

管理 コンソール

prodMgmt.war

デプロイメント・ソースファイル

dir

MBean

config.xml

設定ファイル

ステージング

1. ドメインにアプリケーションを登録 (インストール)

管理者 ブラウザ

2. 対象のサーバーでアプリケーションをアクセス可能にする (アクティブ化)

開発ツール

Page 57: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 57

IDE からのデプロイ

サーバーの制御メニューからデプロイ可能

Eclipse からのデプロイはアーカイブ形式で (・・・のほうが無難)

Page 58: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Web アプリケーションの監視 (全体)

58

Page 59: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Web アプリケーションの監視 (アプリケーション単位)

59

JAX-RS アプリケーションを選択

Page 60: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

オラクルユニバーシティからのお知らせ

60

Page 61: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

オラクルユニバーシティからのお知らせ

• WebLogic Server 12c の管理方法や Java EE 7 ベースのアプリケーション開発方法を体系的に学習したい方に最適な研修コースをご提供しています。

– Classroomトレーニングだけでなく、Live Virtual Class や『Oracle トレーニング・オンデマンド』など多様な受講形態から選択いただけます。

61

Page 62: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

コース内容

Oracle WebLogic Server概要

ドメインの作成

Administration Console ドメインのモニタリング アプリケーションのデプロイメント

WebLogic Server セキュリティ ドメインのバックアップおよびリカバリ

WebLogic Serverのインストールおよびパッチ適用

サーバーの起動および停止

JDBCデータソースの構成

ノードマネージャ WebLogic Serverクラスタリング

トランザクション・サービスのコンフィグレーション

受講前提条件 ・Linux の基本的な操作方法の理解 ・Java EE の基礎知識(サーブレットや JSP など) ※推奨

対象者 ・Oracle WebLogic Server 管理者

・Javaアプリケーション開発者

・アーキテクト

コース日程 5日間 日程の詳細は Oracle University Webサイト にてご確認ください。

受講料 定価¥385,560(税込) ※Oracle PartnerNetwork 会員様は、パートナー割引価格で受講いただけます。

Oracle WebLogic Server 12c の運用管理スキルをしっかり習得 待望のWebLogic Server 12c R2 対応研修が 2017 年 4 月よりスタートします。

このコースでは、アプリケーション・サーバー管理者がOracle WebLogic Server 12cのインストールおよび設定方法を習得することができま

す。管理コンソールやコマンドラインツール(WLST)などを使用してドメインを構成する方法やJava EEアプリケーションをサーバーにデ

プロイする方法についても説明します。さらに、Oracle WebLogic Server のプロキシとしてOracle HTTP Serverを設定し、WebLogic Serverク

ラスタによるアプリケーションのフェイルオーバーとロードバランシングをサポートする方法など、環境構築に必要なスキルとWebLogic

Serverのモニタリングやログ情報の収集など運用に必要なスキルを実機演習を通して習得できます。さらに、Oracle WebLogic Server 12cで

強化されたActive GridLink for RACの構成方法や動的クラスタなど注目の機能もカバーします。 (マルチテナンシ機能は、「Oracle Fusion Middleware 12c: マルチテナンシ管理」コースで扱います)

Oracle WebLogic Server 12c: 管理 I

62

Page 63: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

一回目で合格できなくてももう一度挑戦できる!

オラクル認定資格 再受験無料キャンペーン

期間: 2016年12月2日 〜 2017年5月31日

プロモーションコード:

RETAKE17JP キャンペーンの詳細は ピアソン VUE の Web サイト まで。

63

キャンペーン。はじめました。

アクセスはこちら。 http://www.oracle.com/jp/education/campaign-1898205-ja.html#20161226

サンプル問題で腕試し。もできます

Page 64: これからはじめる Java EE

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 64

Page 65: これからはじめる Java EE