これからはじめる java ee
TRANSCRIPT
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
これからはじめる Java EE 第60回 WebLogic Server 勉強会@東京
日本オラクル株式会社 オラクルユニバーシティ 岡田 大輔 2017年1月25日
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。
Oracle と Java は、米国オラクルコーポレーション及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
2
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
お話すること
1. Java EE とは?
2. Java EE アプリケーションの開発
3. Java EE アプリケーションのデプロイ
3
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java EE とは? Java EE の概要
4
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 群
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
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 セット
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
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
ブラウザ
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
• アプリケーションの固有機能と共通機能を分離する
• Java EE のコンポーネント
– Webアプリケーション: JSF, Serlvets, JSP
– EJB: Session Bean, Message Driven Bean
–クライアント: アプレット
コンポーネント・アーキテクチャ
コンテナ
コンポーネント
コンテナ: • クライアントに「サービス」を提
供する実行環境 • コンポーネントのライフサイクル
を管理
コンポーネント: • アプリケーション固有の機能
が実装されている • コンテナが提供するサービス
を利用 • コンテナによって管理される
10
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
コンテナが提供するサービス
• デプロイ時に宣言可能なサービス
– 永続化
– トランザクション
– セキュリティ
– インジェクション
• コンポーネント制御のためのサービス
– ライフサイクル管理
– スレッド管理
– クライアントとの通信
• コンテナ・プロバイダ固有のサービス
– クラスタリング
– 負荷分散
– フェイル・オーバー
サービスの振る舞いはデプロイメント記述子や注釈で指定
可能
アプリケーション・サーバー ごとに提供する機能が異なる
コンポーネント制御に必要なサービスは暗黙で提供される
11
コンポーネントは Java EE 標準 API でアクセスできる
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
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java EE アプリケーションの開発 アプリケーションの作り方と WebLogic Server の設定
13
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
開発環境の準備
開発環境の
準備
アプリケーション
の作成
(プレゼンテーション層)
アプリケーション
の作成
(ビジネスロジック層)
アプリケーション
の作成
(永続化層)
14
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
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
• NetBeans 日本語サイト から入手可能
– Java EE を選択すると開発に必要なものはひと通り揃う • GlassFish (アプリケーション・サーバー)
• WebLogic Server は別途インストール
• 日本語化済み
16
開発環境の準備: NetBeansの場合
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
1. [サービス]タブの「サーバー」を右クリックして「サーバーの追加…」を選択
2. [サーバー・インスタンスの追加] 画面でアプリケーション・サーバーを追加 • アプリケーション・サーバーのイン
ストール先を指定する
• Oracle WebLogic Server を使う場合は事前にドメインを作成
17
アプリケーション・サーバーの指定: NetBeansの場合
GlassFishを使う場合は この作業は不要です!
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
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
1. [サーバー]タブをリンクをクリック
2. [新規サーバー] 画面でアプリケーション・サーバーを追加 • サーバー・ランタイムが登録されて
いない場合は、アプリケーション・サーバーのインストール先を指定する
• Oracle WebLogic Serverを使う場合は、次の画面でドメイン指定する (ドメインは事前に作成しておく)
19
アプリケーション・サーバーの指定: Eclipseの場合
GlassFishを使う場合も 同様に登録します
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 20
アプリケーションはプロジェクト単位で作成 1. Dynamic Web Project を作成
2. [Modify …] を 押す
3. Web アプリケーションで使用するファセットを追加
追加するファセット (JavaServer Faces, JPA など) によって、ライブラリや DB 接続設定などが必要
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
アプリケーションの作成 (プレゼンテーション層)
開発環境の
準備
アプリケーション
の作成
(プレゼンテーション層)
アプリケーション
の作成
(ビジネスロジック層)
アプリケーション
の作成
(永続化層)
21
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]
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
JavaServer Facesとは?
• Java EE標準で提供されるWebアプリケーションのためのUIフレームワーク
–コンポーネント・ベースでユーザー・インタフェースを作成 • UIの構成要素は「UIコンポーネント」として提供される
• イベント駆動型プログラミング
–ビュー定義はFacelet (XHTML+JSFタグ)を使用 • テンプレート・エンジン
• Ajaxをサポート
• …
Webアプリケーションを効率良く開発可能に
23
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Webコンテナ
JSFとMVC
HTTPリクエスト
HTTPレスポンス
コントローラー
(Faces Servlet)
ビュー
(Facelet)
モデル
(マネージドBean)
生成・管理
操作・リダイレクト
アクセス
24
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
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
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
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
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式を使用
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
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
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>
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
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
アプリケーションの作成 (ビジネスロジック層)
開発環境の
準備
アプリケーション
の作成
(プレゼンテーション層)
アプリケーション
の作成
(ビジネスロジック層)
アプリケーション
の作成
(永続化層)
34
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
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
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 …. サービスのパス
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
オブジェクト プーリング
オブジェクトキャッシュ
シングル インスタンス
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 コールバック
メソッド実行
タイムアウト
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
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();
}
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
アプリケーションの作成 (永続化層)
開発環境の
準備
アプリケーション
の作成
(プレゼンテーション層)
アプリケーション
の作成
(ビジネスロジック層)
アプリケーション
の作成
(永続化層)
42
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マッピング(自動で相互変換)
アプリケション
参照 挿入 更新 削除
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 44
JPA エンティティ・クラスを作成するには?
表を選択してクラス名などマッピングを指定するとエンティティ・クラスを生成できる (事前にデータベース接続を設定する必要あり)
テーブルから エンティティを作成
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.* パッケージをインポート
引数なしのコンストラクタ
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のトランザクション・タイプなどを指定
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>
…
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
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
WebLogic Server の設定: データソースの設定 (1)
49
データソースのJNDI名は persistence.xml の文字列を 指定
2 フェーズコミットが必要なければ、非 XA ドライバを選択可
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
WebLogic Server の設定: データソースの設定 (2)
50
トランザクション・オプションはデフォルト設定のままで OK (グローバル・トランザクションのサポートは必ず選択)
Derby を使用する場合で DB の作成指定する場合はデータベース名: は任意のものを指定できる
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
WebLogic Server の設定: データソースの設定 (3)
51
JDBC URLで指定したデータベースを作成する場合は、プロパティ: に 「create=true」を追記
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
WebLogic Server の設定: データソースの設定 (4) と確認
52
JDBCデータ・ソースの対象を指定
データ・ソースがデプロイされると[モニタリング]-[統計]タブにインスタンスの行が表示される
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 を使用)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java EE アプリケーションのデプロイ WebLogic Server にアプリケーションをデプロイする
54
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 としても
デプロイ可能
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
ドメイン
アプリケーションのデプロイメント
56
マシン
管理サーバー
マシン
管理対象 サーバー
webApp.war
prodMgmt.war
設定変更
MBean
管理 コンソール
prodMgmt.war
デプロイメント・ソースファイル
dir
MBean
config.xml
設定ファイル
ステージング
1. ドメインにアプリケーションを登録 (インストール)
管理者 ブラウザ
2. 対象のサーバーでアプリケーションをアクセス可能にする (アクティブ化)
開発ツール
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 57
IDE からのデプロイ
サーバーの制御メニューからデプロイ可能
Eclipse からのデプロイはアーカイブ形式で (・・・のほうが無難)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Web アプリケーションの監視 (全体)
58
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Web アプリケーションの監視 (アプリケーション単位)
59
JAX-RS アプリケーションを選択
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
オラクルユニバーシティからのお知らせ
60
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
オラクルユニバーシティからのお知らせ
• WebLogic Server 12c の管理方法や Java EE 7 ベースのアプリケーション開発方法を体系的に学習したい方に最適な研修コースをご提供しています。
– Classroomトレーニングだけでなく、Live Virtual Class や『Oracle トレーニング・オンデマンド』など多様な受講形態から選択いただけます。
61
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
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
サンプル問題で腕試し。もできます
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 64