• 検索結果がありません。

Slide 1

N/A
N/A
Protected

Academic year: 2021

シェア "Slide 1"

Copied!
62
0
0

読み込み中.... (全文を見る)

全文

(1)

<Insert Picture Here>

JavaEE6 と WebLogic Server 12c について

日本オラクル株式会社

第76回 夜な夜な! なにわオラクル塾

(2)

以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。

また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことは

できません。以下の事項は、マテリアルやコード、機能を提供することをコミットメン

ト(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さ

い。オラクル製品に関して記載されている機能の開発、リリースおよび時期につい

ては、弊社の裁量により決定されます。

OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文 中の社名、商品名等は各社の商標または登録商標である場合があります。

(3)

Agenda

JavaEE6 概要

Servlet3.0

JSF2.0

EJB3.1

Bean Validation 1.0

Context and Dependency Injection 1.0

Oracle WebLogic Server 12c概要

WebLogic Server 12c 新機能: Active GridLinkのWeb Session Affinity

(4)

<Insert Picture Here>

(5)

JavaEEの歴史と発展

JDK(Java SE)

JavaEE

1996年

JDK 1.0

(サーバサイドJava

技術の

統一仕様が無い状

態)

1997年

JDK 1.1

1998年

JDK 1.2

1999年2月

J2EE 1.2

2000年

JDK1.3

2001年9月

J2EE 1.3

2002年

JDK1.4

2003年11月

J2EE 1.4

2004年

JDK 5.0 (1.5)

2006年5月

JavaEE 5.0

2006年12月 JDK 6.0 (1.6)

2009年12月

JavaEE 6.0

サーバーサイドJava仕様

のデファクト・スタンダード

として確立

さらなる仕様の充実・拡張

Webサービス対応

Ese Of Development

さらなるEse Of Development、

軽量化、拡張性

(6)

JavaEE6のゴールと特長

JavaEE6は、これまでのJavaEE仕様の肥大化や設定の煩雑さなどの課題を解消す

るために、下記をゴールとして仕様策定されています。

Further Ease of Development (さらなる開発容易性)

Flexible & Right sizing (柔軟性と軽量化/最適化)

Enhanced Extensibility (さらなる拡張性)

増大した仕様を全て使うのではなく、必要なもののみ使う「プロファイル」の導入

結果的に軽量化されたコンテナとして利用可能

使用されていない仕様の将来的な削除の検討(プルーニング)

アノテーションを活用したServlet設定やバリデーション、依存性注入

XML設定ファイルへの煩雑な設定を極小化

簡略化されたEJB仕様「EJBLite 」のサポート

機能拡張インターフェースをより多く用意

ライブラリ単位で設定をプラグイン-アウトできる「Webフラグメント」の導入

(7)

[参考] Java EE 6 / Webサービスの主要仕様

JavaEE仕様 Version JSR JavaEE 6.0 316 Web Profile 6.0 316 Managed Beans 1.0 316 Web仕様 Version JSR Servlet 3.0 315 JSP 2.2 245 JSF 2.x 314 JSTL 1.2 52 Expression Language 2.2 245 EJB 3.1 318 Interseptors 1.1 318 JAF 1.1 925 JavaMail 1.4 919 JCA 1.6 1.6 JMS 1.1 1.1 JPA 2.0 2.0 Webサービス仕様 Version JSR JAX-RPC 1.1 101 JAX-WS 2.2 224 JAXB 2.2 222 JAXM 1.3 67 StAX 1.0 173 Web Services 1.3 109

Web Services Metadata 2.1 181

JAX-RS 1.1 311 JAXR 1.0 93 その他の仕様 Version JSR JDBC 4.0 221 JMX 2.0 255 Bean Validation 1.0 303

Context and Dependency Injection 1.0 299 Dependency Injection for Java 1.0 330

Common Annotations 1.1 250

(8)

JavaEE6のプロファイル

JavaEE6では、対応仕様のうち、必要なものだけをピックアップして実装できる「プロフ

ァイル」機構をサポート。

デフォルトでは、全ての機能を実装する「JavaEE Profile」とWebアプリで必要な仕様

だけを実装した「Web Profile」を定義。

任意のプロファイルを定義し、実装してもよい。

JavaEE6 のすべての仕様

すべての仕様

を実装

Webアプリに必要な

仕様のみを実装

Web Profile

JavaEE Profile

JavaEEのすべての仕様

に対応

・Servlet3.0 ・JSP2.2 ・JSF2.0 ・EL2.2 ・JSTL1.2 ・Interceptor1.1 ・Common Annotations 1.1 ・EJBLite3.1 ・JPA2.0 ・JTA1.1 ・CDI1.0 ・DI1.0 ・Bean Validatio1.0 ・Debugging Support for

Other Languages 1.0

任意の仕様を実装

(9)

JavaEE6 各仕様の主要な新機能①

下表は、各仕様の主な新機能の概要をまとめたものです。

機能

概要

Servlet3.0

アノテーションによる

プログラミング

従来、web.xmlへの記述が必要だった構成情報をアノ

テーションで指定することが可能になりました。

Webフラグメント

ライブラリの設定をweb.xmlではなくweb-fragment.xmlというファイルに記載し、ライブラリ自身

で保有しておくことが可能になりました。

非同期プログラミング

サーブレットで非同期処理を行うためのAPIがサポート

されました。

柔軟な初期化処理

コンテナ起動時などにプログラミングでサーブレットの

初期化処理を行うための仕組みがサポートされました。

JSF2.0

Facelet

UIとしてJSPではなくXHTMLがサポートされることで、

JSPからサーブレットへの変換/コンパイルのオーバー

ヘッドを軽減する事が可能になりました。

アノテーションによる

Managed Bean指定

従来、構成ファイルに記述が必要だったManaged

Bean指定をアノテーションで指定する事が可能になり

ました。

Ver.Up

Ver.Up

(10)

JavaEE6各仕様の主要な新機能②

下表は、各仕様の主な新機能の概要をまとめたものです。

機能

概要

EJB3.1

EJBLiteの提供

EJB仕様のサブセットであるEJBLiteによりWeb Profileなど軽量

なコンテナでEJBが利用できるようになりました。

EJB-JARの

オプション化

EJBのクラス群をEJB-JARにまとめず、WebアプリのWAR中に

包含する事が可能になりました。

シングルトン

SessionBean

シングルトンSession Beanがサポートされコンテナ側でシングル

トン(唯一のインスタンス)保証と制御が可能になりました。

JPA2.0

悲観的ロックの

サポート

JPA1.0では楽観的ロックのみサポートしていましたが2.0より悲

観的ロックもサポートされます。

コレクションの

機能強化

エンティティ中のコレクションをエンティティのテーブルの子テーブ

ルとして自動的にマップ・永続化できるようになりました。

Criteria APIの

サポート

エンティティのCRUD操作をQuery 言語だけでなく、Javaのクラ

スのメソッドで実行できるCriteria APIを利用できるようになりまし

た。

キャッシュの

サポート

JPA2.0では、persistence.xmlに柔軟にキャッシュ指定を行う事

が可能になりました。

Ver.Up

Ver.Up

(11)

JavaEE6各仕様の主要な新機能③

下表は、各仕様の主な新機能の概要をまとめたものです。

概要

Context and

Dependency

Injection

JavaEEにおけるDI(Dependency Injection)手法を統一化した

仕様。EJBやWebサービスなどのコンポーネントにかかわらず、

@Named と@InjectアノテーションによりDIが可能になる。

また、インジェクション対象のオブジェクトのスコープ(リクエスト、

セッション、アプリケーション)もアノテーションで指定可能。

Bean Validation

Beanやフィールドにおけるnullチェック、数値範囲チェック、文

字列の長さなどの各種妥当性チェックをアノテーション指定に

より実現できるようにする仕様。

New

(12)

<Insert Picture Here>

(13)

Servlet3.0 : サーブレットでのアノテーション活用

Servlet2.5までは、WebアプリケーションにおいてサーブレットやURLパターンの定義な

どの情報は、web.xmlファイル内にXMLタグで記述する必要がありました。

Servlet3.0では、これらの定義はアノテーションで行うことができ、web.xmlは必須では

なくなりました。

WAR

Servlet1.class

web.xml

WAR

Servlet1.class

@WebServlet(urlPatterns =“/myservlet”)

public class Servlet1 extends HttpServlet

…..

<web-app> <servlet> <servlet-name>MyServlet/<servlet-name> <servlet-class>Servlet1</servlet-class> </servlet> <servletmapping> <servletname>MyServlet</servlet-name> <url-pattern>/myservlet</url-pattern> </servlet-mapping> </web-app>

Servlet2.5まで

Servlet3.0

web.xml

Servlet1.java

(14)

[参考] Servlet3.0の主要なアノテーション

アノテーション

概要

@WebServlet

サーブレットの定義を行う。このアノテーションが付加されたクラスは

javax.servlet.http.HttpServletを拡張している必要がある。

@WebInitParam

サーブレットの初期化パラメータを定義する。

@WebFilter

サーブレットのフィルターの定義を行う。このアノテーションが付加されたクラス

はjavax.servlet.Filterインターフェースを実装している必要がある。

@WebListener

サーブレットのリスナーの定義を行う。このアノテーションが付加されたクラスは、

下記のいずれかのインターフェースを実装する必要がある。

javax.servlet.ServletContextListener

javax.servlet.ServletContextAttributeListener

javax.servlet.ServletRequestListener

javax.servlet.ServletRequestAttributeListener

javax.servlet.http.HttpSessionListener

javax.servlet.http.HttpSessionAttributeListener

@MultipartConfig

サーブレットに対するリクエストのタイプがmime/multipartであることを定義す

る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ

チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易

に作成できる。

(15)

アノテーションの例

下記は、シンプルにサーブレットのURLパターンだけを指定しているアノテーション例です。

@WebServlet( urlPatterns = { "/Servlet1" },

initParams = { @WebInitParam(name = "param1", value = "Hello")}

)

public class Servlet1 extends HttpServlet {

(以下略)

@WebServlet("/Servlet1")

public class Servlet1 extends HttpServlet {

(以下略)

下記は、サーブレットのURLパターンと初期化パラメータを指定しているアノテーション

例です。

(16)

<Insert Picture Here>

(17)

Servlet3.0: 非同期サーブレット

Servlet2.5までは、サーブレット実行のリクエストを受けてレスポンスを返すまでの動作

は一つのスレッドにより同期的に行われていましたが、非同期処理を行う仕組みは提

供されていませんでした。そのため、もしサーブレットが長時間実行されてしまった場合、

その間スレッドが占有されてしまうという課題がありました。

Servlet3.0では、サーブレットから別スレッドによる非同期処理がサポートされるように

なりました。これによりサーブレットを実行するスレッドを効率的に利用できるようになり

ます。

Servlet

リクエスト

レスポンス

Servlet

リクエスト

レスポンス

非同期処理用

クラス

1つの

スレッドを

占有

別の

スレッド

スレッド

解放

Servlet2.5まで

Servlet3.0

(18)

非同期処理の例

下記は、サーブレットとは非同期で実行しているスレッドからレスポンスを返す処理の

例です。

@WebServlet(urlPatterns="/Servlet1", asyncSupported=true) public class Servlet1 extends HttpServlet {

protected void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

final AsyncContext ac = request.startAsync(request,response); ac.start(new AsyncProcess(ac));

} }

public class AsyncProcess implements Runnable { AsyncContext context;

public AsyncProcess(AsyncContext ctx){ context = ctx;

}

@Override

public void run() { try {

PrintWriter out = context.getResponse().getWriter(); out.println(“別スレッドより出力してます");

}

catch (Exception ex) { ex.printStackTrace(); } context.complete();

} }

サーブレット

(19)

<Insert Picture Here>

(20)

WAR

Servlet3.0 : Webフラグメント

Servlet2.5までは、Webアプリケーションでフレームワークのライブラリを利用する場合、

フレームワークが提供するサーブレットやパラメータ等をweb.xmlへ設定することが必

要なケースもあり、web.xmlの肥大化、管理の複雑化を招いていました。

Servlet3.0では、ライブラリ中にweb-fragment.xmlを用意することで、Webアプリケー

ションへのweb.xmlの追加設定を不要にできます。

Servlet3.0

WAR

web.xml Servlet1.class Framework1.jar

Servlet2.5まで

META-INF

web-fragment.xml

Framework1.jar

WEB-INF

classes lib Servlet1.class Framework1.jar

WEB-INF

classes lib

WEB-INF

FW.class classes

(21)

<Insert Picture Here>

(22)

JSF2.0のFacelets

JSF1.2までは、ユーザインターフェースとなるビュー層にJSPを利用するアーキテクチ

ャでしたが、JSPはサーブレットに変換、コンパイルされて実行時にビューを生成するた

めオーバーヘッドが高く、効率的な仕組みとはいえませんでした。

JSF2.0では、Faceletsというコンポーネントを提供しています。Faceletsではビュー層

にXHTMLを利用するアーキテクチャになるため、ビュー生成のオーバーヘッドは低く、

かつテンプレートなどの機能を活用することが可能になっています。

また、faces-config.xmlで複雑な設定を行わずに、アノテーションを使いManaged

Bean等を定義できるようになっています。

テンプレート

ボディ

○○カンパニー

Home 製品 サポート 企業 情報 弊社製品一覧 お問い合わせはこちらに

タイトル/メニュー

製品一覧表示

問合せ先リンク

Facelets

製品詳細説明表示

マニュアル一覧表示

XHTML

生成されるビュー

(23)

[参考] JSF2.0のタグについて

JSF2.0では、従来のJSF CoreタグやJSF HTMLタグに加え、Faceletsの機能を提供

するタグも利用できます。

タグライブラリ

概要

URI

Prefix

JSF

Facelets

Faceletsのテンプ

レートのタグライブ

ラリ

http://java.sun.com/jsf/facelets

ui:

ui:component

ui:insert

JSF HTML

JSFのUIコンポー

ネントのタグライブ

ラリ

http://java.sun.com/jsf/html

h:

h:inputText

h:outputText

JSF Core

JSF Coreのタグラ

イブラリ

http://java.sun.com/jsf/core

f:

f:attribute

JSTL Core

JSTL Coreのタグ

ライブラリ

http://java.sun.com/jsp/jstl/core

c:

c:forEach

c:catch

JSTL

Function

JSTL Functionの

タグライブラリ

http://java.sun.com/jsp/jstl/functions

fn:

fn:toUpperCase

(24)

Faceletsの例

Faceletsの例の前提を説明します。

この例では、XHTMLのテンプレートを用いて入力画面と結果画面を用意します。

この例では、入力画面のForm項目やSubmitボタン選択時の実行メソッドは1つの

ManagedBeanにまとめています。

index.xhtml

result.xhtml

template.xhtml

xxx

Submit

名前を入力

こんにちは、

xxxさん

JSF

Managed Bean

テンプレート

適用

テンプレート

適用

content header footer header footer header footer

(25)

Faceletsの例(Managed Bean)

下記はManaged Beanの例です。

@ManagedBean

public class HelloBean implements Serializable {

private String name;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String say() {

System.out.println("---

入力された値は

" + name);

return "/result";

}

(26)

Faceletsの例(XHTMLテンプレート)

下記はXHTMLテンプレートの例です。

<!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:ui="http://java.sun.com/jsf/facelets"> <head>

<title><ui:insert name="title">Default title</ui:insert></title> </head>

<body>

<div id="header">

<ui:insert name=“header”>JSF2.0 Faceletsの例</ui:insert> </div> <div id="content"> <ui:insert name="content"></ui:insert> </div> <div id="footer"> <ui:insert name="footer">このアプリはWebLogic12c上で動作しています。</ui:insert> </div> </body>

(27)

Faceletsの例(XHTML)

下記はXHTMLの例です。

<!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:ui="http://java.sun.com/jsf/facelets"

xmlns:h=http://java.sun.com/jsf/html xmlns:f="http://java.sun.com/jsf/core"> <f:loadBundle basename="resources.application" var="msg"/>

<head>

<title><h:outputText value="#{msg.welcomeTitle}" /></title> </head>

<ui:composition template="./template.xhtml"> <ui:define name="content">

<h:form>

名前を入力して実行 ボタンを選択してください。

<h:inputText id="userid" value="#{helloBean.name}"/>

<h:commandButton id="submit" action="#{helloBean.say}" value="実行"/>

</h:form> </ui:define> </ui:composition> </html>

<!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:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"> <head>

<meta http-equiv="Content-Type" content="text/html;

charset=windows-31j"/>

<title>Insert title here</title> </head>

<ui:composition template="./template.xhtml"> <ui:define name="content">

こんにちは!<h:outputText id="msg" value="#{helloBean.name}"/>さん </ui:define>

</ui:composition>

index.xhtml

(28)

<Insert Picture Here>

(29)

EJB3.1: パッケージングの簡略化

JavaEE5までは、サーブレットやJSPはWebアプリケーションとしてWARファイルに、

EJBはEJBアプリケーションとしてJARファイルにまとめ、WebアプリケーションからEJB

を利用する場合は、WARファイルとEJBのJARファイルをさらにまとめたEARファイル

を用意するか、事前にEJBをデプロイしてからWebアプリケーションから呼び出す必要

がありました。

JavaEE6では、サーブレットのクラスを配置する場所(WEB-INF/classesなど)にEJBの

クラスを配備できます。またインターフェースを用いず実装クラスだけでEJBとして動作

させることが可能になっています。

EAR

WAR

EJB-JAR

Servlet1.class Hello.class

WAR

EJB-JAR

Servlet1.class Hello.class パッケージング

WAR

Servlet1.class Hello.class 利用 利用

JavaEE5まで

JavaEE6

HelloImpl.class インターフェース 実装クラス 実装クラス

(30)

EJB3.1簡略化パッケージの例

下記はEJB3.1の実装クラスをWebアプリケーションの中にパッケージングしてサーブレ

ットから利用している例です。

@WebServlet(urlPatterns="/Servlet1”) public class Servlet1 extends HttpServlet { @EJB

private Hello hello;

protected void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html; charset=windows-31j"); PrintWriter out = response.getWriter();

String msg = hello.sayHello("WebLogic12c");

out.println("Message = " + msg); } }

@Stateless @LocalBean public class Hello { public Hello() { }

public String sayHello(String name) { return "Hello! " + name;

} }

WARファイル/WEB-INF/classes

(31)

<Insert Picture Here>

(32)

Bean Validation

Bean Validationは、JavaEE6で新たに追加された仕様です。

(Hibernate Validatorベース)

Bean Validationは、Bean(Java Object)やそのフィールドの値に制約を定義し、格納され

ている値の妥当性をチェックする機能を提供します。

JavaEE5では、 Bean単位で値の検証を場合は、そのためのコードを用意する必要があり

ました。(JSFではUIコンポーネント単位で入力値の検証機能は提供していました。)

JavaEE6のBean Validationではアノテーションによりフィールドの制約を定義できます。

これにより、Bean単位でのフィールドの値の存在(null)チェックや数値範囲チェック、桁数

チェックや時間範囲チェックなどを容易に設定・実現する事が可能になっています。

530

Bean

Validation

Bean

大阪

妥当性チェック

エラーの場合は、

そのメッセージを

取得可能

フィールドの制約や制約違反

時のメッセージをアノテーション

で指定

結果

名前 郵便番号 住所 名前が空です。 郵便番号は7桁で入力してください。 登録フォーム 登録

(33)

[参考] Bean Validationのアノテーション

下表はBean Validationであらかじめ用意されているフィールド値を制約する主なアノテ

ーションです。一つのフィールドに対して複数併用することができます。

下表以外にもカスタムのアノテーションを作成する事も可能です。

アノテーション 制約

指定例

@NotNull

値にnullは許容しな

@NotNull(message=“入力必須です”)

String name

@Min

値は指定値以上し

か許容しない

@Min(value=100,message=”100以上を入力して下さい”)

int amount;

@Max

値は指定値以下し

か許容しない

@Max(value=100,message=”100以内で入力して下さい”)

int point;

@Size

値の桁数は指定範

囲しか許容しない

@Size(min=7,max=7,message=“7桁で入力して下さい”)

String zipcode;

@Pattern

値は指定パターンし

か許容しない

@Pattern(regexp=“*@*”)

String email;

(34)

Bean Validationの例

下記はBeanのフィールドに制約を設定している例です。

public class BankTransferBean {

@NotNull

@Size(min=7, max=7,message="口座番号は{min}桁で入力して下さい。") private String koza; //7ケタ

@NotNull

@Max(value=500000,message="1回の振込金額は50万円まで") @Min(value=1,message="振込金額は1円以上で指定してください。") private int kingaku; // 1~500000

@NotNull

@Size(min=1,message="振込人名は入力必須") private String name; // Not Null

public String getKoza() { return koza; } (以下略)

口座番号は必ず7桁の値が必要

振込金額1円以上、50万円以内

振込人名は、入力必須

(35)

Bean Validationの例

下記は、サーブレット内でBeanのフィールド値の妥当性チェックを行っている例です。

BankTransferBean bean = new BankTransferBean(); bean.setKoza(“1234567”); bean.setKingaku(200000); bean.setName(“Oracle”); ValidatorFactory vf = Validation.buildDefaultValidatorFactory(); Validator v = vf.getValidator();

Set<ConstraintViolation<BankTransferBean>> result = v.validate(bean);

String message = "";

for(ConstraintViolation<BankTransferBean> cv : result){

message +=cv.getMessage()+" 入力値:"+ cv.getInvalidValue() + "<br>"; }

if (message.equals("")) {

message = "振込完了しました。"; }

response.setContentType("text/html; charset=windows-31j"); PrintWriter out = response.getWriter();

(36)

<Insert Picture Here>

(37)

Context and Dependency Injection(CDI)

CDIは、JavaEE6においてDI(Dependency Injection)手法を統一化した仕様です。

DIとは、あるJavaオブジェクト内で必要とするJavaオブジェクトの生成をコンテナ側で行

わせることで、オブジェクト間の結合を疎にする手法を指します。

JavaEE5でも一部の仕様で限定的にDI機能を提供していましたが、仕様毎に方法が

異なったり、スコープを制御するには別途コードの用意が必要という課題がありました。

JavaEE6のCDIでは、CDIによりDIの方法が統一化され、さらにスコープ定義をアノテ

ーションで行えるようになっています。

@WebServlet(urlPatterns=“/A")

public class A extends HttpServlet {

@Inject

B b;

protected void doGet

(HttpServletRequest req, HttpServletResponse res) {

b.getXX ();

@Named

public class B {

String XX = “xx”;

public String getXX() {

return XX;

}

}

クラスB

サーブレットA

(38)

<Insert Picture Here>

(39)

WebLogic Server の機能と歴史

WebLogic

8.1

WebLogic

9.x

WebLogic

10.0

WebLogic10g

(10.3)

WebLogic11g

(10.3.1~)

WebLogic12c

(12.1.1.0)

2003年

2005年 2007年

2008年

2009年

2011年

JavaEE J2EE1.3

J2EE1.4 JavaEE5

JavaEE6

JDK

JDK1.4.2

JDK1.5

JDK1.6

主要な 対応仕様 や 新機能 ・Servlet2.3 ・JSP1.2 ・EJB2.0 ・Web Services enhancements ・Servlet2.4 ・JSP2.0 ・EJB2.1 ・JAX-RPC1.1 ・WS-Security ・WS-Reliable Messaging ・Servlet2.5 ・JSP2.1 ・JSF1.2 ・EJB3.0 ・JAX-WS2.0 ・JAC1.5 • Web2.0対応 (HTTP Pub-Sub Server) • Fast Swap ( 追加対応) • JAX-WS 2.1 • JAXB 2.1

・ GridLink for RAC ・ Active Cache ・ WebTier 製品統合 ・Flight Recorder ・CAT ・Exalogic最適化オプショ ン ・Servlet3.0 ・JSP2.2 ・JSF2.0 ・EJB3.1 ・CDI 1.0 ・Bean Validation

Zero DownTime

アーキテクチャ刷新 特徴的新機能の追加 JavaEE5対応 Ese Of Development

JDK1.6対応

性能改善

オラクルブランド

JavaEE6対応

JavaSE7対応

RAC連携強化

オラクル技術との融合

Exalogic最適化

Coherence連携強化

2011年12月、JavaEE6に対応したWebLogic Server 12cを発表

長い歴史と多くの実績をもち、製品としての成熟度・洗練度をさらに向上

(40)

Oracle WebLogic Server 12c

製品コンセプト

Oracle Fusion MiddlewareにおけるJavaEEアプリケーション・サーバー

主要な新機能

JavaEE6完全準拠, JavaSE7対応

Active GridLink for RACの拡張

Web Session Affinity

コネクション・ラベリング

JDBC TLOGストア

WebLogic Mavenプラグインの拡張

データベースのプロキシ認証

(41)

WebLogic Server 12c:JavaEE6完全準拠, JavaSE7対応

Servlet 3.0 JSF 2.0 JSP 2.2 EJB 3.1 CDI 1.0 JTA 1.1 JPA 2.0 Bean Validation JAX-RS JMS JAX-WS JCA JSR 196 JNDI RMI SAAJ JSR 77 JAAS JSR 88 JAX RPC Managed Beans DI for Java Interceptors 1.1 Common Annotations

JavaEE6 完全準拠

Servlet3.0やEJB3.1,CDI,Bean

Validation等のAPIを完全にサポート

開発の容易性にフォーカスし、アノテーショ

ン活用範囲を拡大

JavaEE6対応 IDEの提供

OEPE12.1.1.0

NetNBeans7.1

WebLogic11g(10.3.5)と完全互換

既存アプリケーションを容易に移行可能

JavaSE6(JDK1.6.0_24以降)とJavaSE7に対応

JavaSE7はWebLogic Server 12cとは別に事前

にインストール/設定しておくなど、一部追加手順

が必要

(42)

WebLogic Server 12c 開発ツールについて

Oracle WebLogic Server 12cは標準仕様であるJava EE 6に完全準拠しているため、

Java EE 6のアプリケーションが開発可能な開発ツールを利用できます。

下表はオラクルが提供しているWebLogic Server向け開発ツールです。

ツール名

概要

Oracle Enterprise Pack for

Eclipse (12.1.1.0)

Eclipse Indigoベースの開発ツール。Java EE 6ベースのアプリ開

発が可能。

NetBeans7.1

JavaEE6だけでなく、JavaFXなどJava全般の開発支援機能を提供

できるツール。Glassfishとの親和性も高い。

Oracle JDeveloper 12c

(2011年12月現在、未リリース)

JavaだけでなくDB(表設計、編集、PL/SQL等)開発ツール

12cより WebLogic12cに対応し、Java EE 6ベースのアプリ開発が

可能になる予定。

(43)

Oracle WebLogic Server 12c のアーキテクチャ

Oracle WebLogic Server 12c (12.1.1.0)の基本的なアーキテクチャは、WebLogicの以前ま

でのバージョンと同様。

管理対象

サーバ#2

管理対象

サーバ#3

管理

サーバ

WebLogicドメイン

WebLogicクラスタ

管理対象

サーバ#1

ノード

マネージャ

ノード

マネージャ

マシンA マシンB 管理サーバ 管理ツール (Admin Console/ FMW Control/ /WLSTなど) ドメイン ログ コンフィグ レーション リポジトリ JMX JMX JMX Webサーバ または L/B HTTP/HTTPS リクエスト

(44)

サポート対象のOS/JDK/DB

HW

OS(64bit only ) *1

JDK(64bit only) *1

DB(WLS機能用) *2

x64

RedHat Linux 5.6~

Oracle Linux 5.6~

SLES 10 SP2~

SLES 11

Oracle JDK 1.6.0_29~

JRockit R28.2.0~

Oracle 11.1.0.7~

Oracle RAC 11.1.0.7

Oracle 11.2.0.3~

Oracle RAC 11.2.0.3~

DB2/UDB 9.5~

DB2 9.7~

SQL Server 2008

SQL Server 2008R2

MySQL5.5

Sybase 15.5~

Windows 2008 R2

Solaris 10 U9~

Solaris 11

Oracle JDK 1.6.0_29~

Windows 7 SP1~

SPARC Solaris 10 U9~

Solaris 11

Power

AIX 6.1 TL6~

AIX 7.1 TL0~

IBM JDK 6 SR9 FP2~

*1) 開発環境では32bit OS(MAC、Windows XP/VISTA/7、Linux 5)、32bit JDK(Oracle JDK、JRockit)もサポート http://www.oracle.com/technetwork/developer-tools/eclipse/system-requirements-101778.html *2) アプリケーションデータアクセスのみ用途には一定条件を満たすJDBCドライバならば上記以外のDBもサポート http://www.oracle.com/technetwork/middleware/ias/downloads/wls-1211x-certmatrix-1395408.xls ただし、マルチデータソース、GridLinkデータソースを利用の場合、Oracle RACは11gのみをサポート

※2012年1月23日現在のサポート状況

(45)

<Insert Picture Here>

WebLogic Server12c 新機能

(46)

WebLogicのOracle RAC接続機能

WebLogic Server 11g(10.3.1以降)のバージョンより、Oracle RAC接続機能が拡張

・強化され、下表のように2通りの方法を選択できます。

機能

概要

マルチデータソース

WebLogic Server 10.3までのマルチデータソースと

ほぼ同等機能で、WebLogic Server 11g(10.3.1)か

ら利用することができます。

GridLinkデータソース

Oracle NetとOracle RACのFAN(Fast Application

Notification)によるRAC接続機能をWebLogicでも利

用できるようにしたもので、WebLogic

(47)

マルチデータソース

RACサービス毎にマルチデータソースを構成します。

データソースは、サービス指定を行いRACノード数分用意します。

アプリケーションはRACサービスに対応したマルチデータソースを指定して接続します。

(RACサービス指定接続が可能)

接続要求はRACサービス設定基づき分散されます。

RACのXAトランザクション制限の意識不要です。

データソース1 データソース

2

データソース3

WebLogic Server 11g

アプリケーション

マルチデータソース(サービスA用)

データソース1 データソース2 データソース3

マルチデータソース(サービスB用)

サービスA

サービスB

ACTIVE

ACTIVE

ACTIVE

RACサービス数=マルチデータソース数 マルチデータソースに含まれるデータソースの数 =RACインスタンス数 RACインスタンスの数だけ、データソースを 設定しておく。(インスタンス「RAC3」はFIN サービスが構成されていないため、データソ ースは無効化状態)

(48)

GridLinkデータソース

RACサービス毎にGridLinkデータソースを構成させます。

アプリケーションはRACサービスに対応したGridLinkデータソースを指定して接続します。

接続要求はRACサービス設定基づき分散されます。

RACのXAトランザクション制限に対応するため、XA Affinity機能を利用します。

Oracle Notification Service(ONS)により、RACの死活情報の通知を受け、接続プール中のコネクシ

ョンで、ダウンしているRACノードへのコネクションだけをクリアできます。

(Fast Connection Failover)

さらにRACの負荷情報を通知し、アプリが接続要求時、負荷の軽いノードへの接続を使用させること

も可能です。

(Runtime Connection Load Balancing )

GridLinkデータソースA

WebLogic Server 11g(10.3.4~)

アプリケーション (サービスA用) GridLinkデータソースB (サービスB用)

サービスA

サービスB

ONS ONS

FAN

ONSにより、RACからインスタンスやノード の死活情報の通知を受け、該当するインス タンス、ノードに接続している接続プール中 のコネクションをクリア。 また、RACの負荷情報を通知し、アプリに負 荷の軽いノードへ論理接続させることも可能。

WebLogic Server 11g (10.3.4)より

Oracle RAC

(49)

同一XAトランザクションからの接続要求に対しは同一RACインスタンスから

確保した接続を返す(初回の接続はRCLBにより選択)

コストの高いキャッシュ・フュージョンの発生を抑制(キャッシュヒット率向上)

2フェーズコミットにかかるオーバヘッドを軽減

WebLogic Server

Active GridLinkのトランザクション制御

XAアフィニティ

XA Affinity

RAC Database

Instance1

Instance2

Instance3

EJB1

Data Source

EJB

EJB3

Source Data

EJB2

Data

Source

(50)

Active GridLinkのWebセッション制御

Web セッション・アフィニティ(WLS12.1.1~)

同一HttpSessionからの接続要求に対しは、できるだけ同一RACインスタ

ンスから確保した接続を返す(初回の接続はRCLBにより選択)

コストの高いキャッシュ・フュージョンの発生を抑制(キャッシュヒット率向上)

RAC Database

Instance1

Instance2

Instance3

WebLogic Server

Servlet

Data Source

JSP

Servlet

Data Source

JSP

JSP

HttpSession

(51)

XA、Webセッション・アフィニティの設定

1.

RAC側の設定(RCLBの有効化)

CLBの目標を”SHORT”に、RCLBの目標を”THROUGHPUT”または

”SERVICE_TIME”に設定したサービスを新規作成し、起動

2.

WebLogic側の設定

GridLinkデータソースを作成

手順1で作成したサービス名を宛先に設定

FANを有効化し、ONSの接続先を設定

3.

アプリケーション

アプリケーションコードの変更は不要

GridLinkデータソースから接続を取得するだけでよい

srvctl add service -d orcl -s demosvc -g srvpool1 -j SHORT -B THROUGHPUT

srvctl start service -s demosvc -d orcl

(52)

機能

GridLinkデータソース

マルチデータソース

データソースの構成

RAC側のサービスごとにGridLink

データソースを1つ設定

RAC側のサービス数×ノード数

ぶんの設定が必要

RAC構成変更時の

データソース設定変更

設定変更は不要

設定変更が必要

フェールオーバー

RAC側からの通知による高速接

続フェールオーバー(FCF)

WLS側からの定期的なポーリン

グによる障害検知のため遅延が

発生しやすい

ロードバランシング

DB側の負荷を考慮した実行時接

続ロードバランシング(RCLB)

DB側の負荷を考慮しない静的

ラウンドロビン

接続アフィニティ

複数GridLinkデータソースに跨る

XAアフィニティ、Webセッションア

フィニティ

同一マルチデータソース内での

XAアフィニティのみ

Data Guardサポート

プライマリ側、スタンバイ側に同等

構成のRACを配置できる

プライマリ側のRACは1インスタ

ンスしか利用できない

GridLinkデータソース vs マルチデータソース

(53)

<Insert Picture Here>

(54)

トランザクション・ログ(TLOG)の重要性

2フェーズコミットにおいては、トランザクション・マネージャ(TM)は、

現在のトランザクションの状態を安定したストレージ上のTLOGに保

存しなければならない

TM障害からの回復時に、TMはTLOGを利用してインダウト(後述)

なトランザクションを解決する

1. prepare 6.成功 2.OK 3. prepare 4.OK 5.commit 8.commit 9.成功 7.OK 10.OK TM RM 1 RM 2

TLOG

REDOログ

REDOログ

JDBC TLOG

TLOGは障害

からのトランザ

クションの回

復のための重

要なログ

(55)

インダウト(不明区間)とは

RMがprepareに対するOKを送ってから、TMからのcommitメッセー

ジが届くまでの区間

この区間は、RMはTMからの確定要求が来るまでトランザクションを保持し続ける

。つまり確定要求が来ない限り、自分からは何もしない。

この区間でTM障害が発生すると・・・、データベースのリソースはブロックされ続け

てしまう。TMが長時間回復せず、各リソースマネージャが独断でヒューリスティック

な決定(推定によるコミットorアボート)を行えば、データの不整合が発生しうる。

1. prepare

TM

RM 1

RM 2

4.成功 2.OK 1. prepare 2.OK 3.commit 3.commit 4.成功 5.OK インダウト (不明区間) インダウト (不明区間)

各RMはTMか

らの確定要求

が来るまで、リ

ソースのロック

を保持し続ける

JDBC TLOG

(56)

JDBC TLOG ストア

機能

従来ファイルストア(デフォルト・ストア)のみに格納していたトランザ

クション・ログ(TLOG)を、より信頼性かつ利便性の高いデータベ

ースへ格納できるようにした機能

メリット

整合性: 全てのステートデータ(アプリケーション・データ、JMSメッ

セージ、TLOG)を整合性を保った状態でデータベースへ格納

障害対策: TM障害時も別の正常なマシンでTMを再起動し、デー

タベース上のTLOGへアクセスすることにより、インダウトなトラン

ザクションを迅速に解決し、業務を継続(TLOGのコピーは不要)

災害対策: Data Guardの利用により、災害発生時にもスタンバイ

サイトで、インダウトなトランザクションを解決し、業務を継続

運用性: データベースのほうが共有ファイルシステムやレプリケー

ションソフトよりも管理が容易

JDBC TLOG

(57)

Machine B

JDBC TLOGストアが有効なシナリオ

サーバ自動移行(WLSクラスタの機能)の簡素化

災害対策の簡素化(Data Guardとも連携して)

JDBC TLOG

Machine A

WLS

TLOG

Machine B

WLS

Machine A

WLS

-A

TLOG

WLS

-B

Machine B

Machine A

WLS

-A

TLOG

WLS

-B

Data Guard

Server

Migration

Fail Over

スタンバイサイト

プライマリサイト

(58)

Oracle RAC Web Tier

従来の災害対策アーキテクチャ

ステートの転送に複数の技術を利用するため同期が困難

Active Site Standby Site

Application Data

Local LB Web Tier Local LB

Web Tier Local LB Web Tier Binaries Configuration Middleware Tier WebLogic WebLogic WebLogic Binaries Configuration Oracle RAC Web Tier Application Data Local LB Web Tier Local LB Web Tier Local LB Web Tier Binaries Configuration Middleware Tier WebLogic WebLogic WebLogic Binaries Configuration Global Load Balancer Transaction Logs JMS Messages Transaction Logs JMS Messages

File Replication

Datagard or

GoldenGate

File Replication

Instance Instance Instance Instance Instance Instance JDBC TLOG

(59)

Oracle RAC Web Tier

新しい災害対策アーキテクチャ

全てのステートをDBに格納するため、復旧がシンプル

Active Site Standby Site

Application Data

Local LB Web Tier Local LB

Web Tier Local LB Web Tier Binaries Configuration Middleware Tier WebLogic WebLogic WebLogic Binaries Configuration Oracle RAC Web Tier Application Data Local LB Web Tier Local LB Web Tier Local LB Web Tier Binaries Configuration Middleware Tier WebLogic WebLogic WebLogic Binaries Configuration Global Load Balancer

File Replication

Datagard or

GoldenGate

File Replication

Instance Instance Instance Instance Instance Instance Transaction Logs JMS Messages Transaction Logs JMS Messages JDBC TLOG

(60)

JDBC TLOGストア設定方法

1.

TLOG用JDBCデータソースの作成

non XAドライバを利用し、かつ、「グローバル・

トランザクションのサポート」を非選択に

(TLOG用データソース自身をtransaction-

awareにしてしまうと、トランザクション・アボート時

にTLOGに書かれず、TLOGの役割を果たせない)

2.

トランザクション・ログ・ストア

ドメイン → サーバ

→ 構成 → サービス

→ トランザクション・ログ・ストア

タイプ「JDBC」を選択

手順1で作成したデータソースを選択

3.

再起動後に自動的にTLOG

格納用のテーブルが作成される

JDBC TLOG

(61)

JDBC TLOGストア構成上の注意点

WebLogicよりも前にTLOG格納先のDBを起動すること

TLOG用DBが起動していないと、WebLogicの起動に失敗する

TLOG用のDBは冗長化(RACなど)を推奨

TLOG用DBが停止すると、WebLogicはTM機能を提供できなく

なるので、すべてのグローバルトランザクションは失敗する

JDBC TLOG

(62)

参照

関連したドキュメント

ユーザ情報を 入力してくだ さい。必要に 応じて複数(2 つ目)のメー ルアドレスが 登録できます。.

※ログイン後最初に表示 される申込メニュー画面 の「ユーザ情報変更」ボタ ンより事前にメールアド レスをご登録いただきま

Webカメラ とスピーカー 、若しくはイヤホン

When change occurs in the contact person name, address, telephone number and/or an e-mail address, which were registered when the Reporter ID was obtained, it is necessary to

特に LUNA 、教学 Web

ユーザ情報を 入力してくだ さい。必要に 応じて複数(2 つ目)のメー ルアドレスが 登録できます。.

[r]

教職員用 平均点 保護者用 平均点 生徒用 平均点.