glass fishv3 detail

37
<Insert Picture Here> 先進的アプリケーションサーバ GlassFish v3 のご紹介 日本オラクル株式会社 Fusion Middleware事業統括本部 シニアセールスコンサルタント 寺田 佳央 20100805

Upload: oracle-fusion-middleware

Post on 30-Jun-2015

1.402 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Glass Fishv3 Detail

ltInsert Picture Heregt

先進的アプリケーションサーバ GlassFish v3 のご紹介

日本オラクル株式会社 Fusion Middleware事業統括本部シニアセールスコンサルタント 寺田 佳央2010年08月05日

Copyrightcopy 2010 Oracle All rights reserved 2

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

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

Copyrightcopy 2010 Oracle All rights reserved

Agenda

bull Oracle GlassFish Server v3xの概要

bull Oracle GlassFish Server v3xの詳細

bull GlassFish の今後

bull まとめ

3

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の概要

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 新機能概要

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTfulの管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

5

Copyrightcopy 2010 Oracle All rights reserved

Java EE 6 の仕様に完全準拠

bull Java EE 6 の主要な技術bull Servlet 30

bull JSP 22

bull JSF 20

bull EJB 31

bull JTA 11

bull JPA 20

bull JAX-WS 22

bull JAXB 22

bull JAX-RS 11

bull DI 10CDI 10

bull Bean Validation 10

6

bull JMS 11

bull JavaMail 14

bull EL 22

bull Common Annotations 11

bull Managed Bean 10

bull Interceptors 11

bull JACC 14

bull その他

さらに進んだかんたん開発

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server の入手

bull Full Platform プロファイルbull 完全な Java EE API を利用する場合に使用

bull Web プロファイルbull Full Platform に含まれるライブラリの内 Web 技術に特化した開発運用を行う場合に使用

bull Web プロファイルから更新ツールを利用しFull Platform へアップグレード可能

7

bull 各プロファイルの入手先bull httpwwworaclecomtechnetworkmiddlewareglassfishindexhtml

Copyrightcopy 2010 Oracle All rights reserved

オープンソース版と製品版の違い

bull オープンソース版bull 無償利用可能コミュニティドリブン

bull 製品版bull Oracleによる正式サポートを提供

bull 製品のアドオン追加管理機能等を提供

8

Cyenglassfishv3yenbingt asadmin version --verbose

バージョン = Oracle GlassFish Server 301 (build 22)JRE バージョン 160_21

コマンド version は正常に実行されました

Cyenglassfishv3yenbingt asadmin version --verbose

バージョン = GlassFish Server Open Source Edition 301 (build 22)

JRE バージョン 160_21

コマンド version は正常に実行されました

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

9

bull インストールディレクトリbull IPS パッケージディレクトリ

bull 共通ユーティリティコマンドへのリンク

bull GlassFish の本体

bull 実行可能コマンド(asadmin等)

bull インストール全般の設定

bull ドキュメント

bull ドメイン管理用ディレクトリ

bull デフォルトで作成されるドメイン

bull デプロイされたアプリケーション配備

bull オートデプロイ用ディレクトリ

bull 空ディレクトリ(削除予定startservの削除により不要)

bull ドメイン固有の設定

bull デフォルトのドキュメントルート

bull ドメイン固有のライブラリ

bull ドメインのログファイル

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

10

bull アイコンファイル

bull 法務上必要なファイル(ライセンスコピーライト)

bull GlassFish 全般で使用するライブラリ( dtdxsd 等)

bull モジュール(各機能の jar 等)

bull OSGi フレームワークのファイル

bull サンプルアプリケーション

bull インストール時使用ファイル

bull 内蔵 JavaDB の本体

bull 内蔵 OpenMQ の本体

bull IPS コマンドツール

bull 更新ツール GUI ツールデ

bull インストール時使用

OSGi 対応により GlassFish v2x から大幅に変更

GlassFish v31 より nodeagent ディレクトリが追加予定

Copyrightcopy 2010 Oracle All rights reserved

GlassFish のドメイン

11

bull GlassFish の管理構成単位bull デフォルトで作成されるドメインdomain1

bull 複数のドメインを作成可能 (domain2 domain3 等)

bull ドメイン毎に管理者を設定

bull 各ドメイン間は独立して管理

bull 設定変更は他のドメインに影響を及ぼさない

bull 管理者は管理コンソール等を通じてドメインを管理

bull Web 管理コンソール

bull コマンドライン管理コンソール

bull RESTful 管理チャネル

bull JMXAMX 管理チャネルdomain1

domain2

domain3

domains管理者

Copyrightcopy 2010 Oracle All rights reserved

Web 管理コンソール

bull Web ベースの管理コンソールbull httpIP_ADDRESSPORT

bull デフォルトのポート番号4848

bull 管理者のパスワード

bull パスワード無し

bull インストール時に指定

bull 管理コンソールアクセス時にロード

bull 管理コンソールとサービス提供ポート番号は独立

bull セキュアな管理が可能

bull ウィザードベースの簡単操作

12

httpIP_ADDRESS4848

Copyrightcopy 2010 Oracle All rights reserved

コマンドライン管理コンソール

bull GlassFish 管理用コマンドを提供bull $GLASSFISH_INSTALLbinasadmin

bull gt asadmin [オプション] コマンド名 [[--パラメータ 値]]

bull シェルスクリプトを記載し管理の自動化も可能

bull コマンドラインからのみ実施可能な操作bull ドメインの作成削除

bull ドメインのバックアップリストア

13

asadmin コマンドオプション

--host ドメイン管理サーバが稼働するホスト名

--port ドメイン管理サーバが稼働するポート番号

--user 管理者のユーザ名

--password 管理者のパスワード

gtasadmin create-domain ndash- help

asadmin Utility Subcommands create-domain(1)

NAME

create-domain - creates a domain

SYNOPSIS

create-domain [--help]

[--adminport adminport]

[--instanceport instanceport]

hellip

Copyrightcopy 2010 Oracle All rights reserved

RESTful 管理チャネルGlassFish v30から追加された新しい管理機能

bull RESTful による管理監視bull GlassFish v3 から追加された追加管理機能

bull HTML JSON XML フォーマットによる出力が可能

bull HTTP ヘッダ

bull Accept applicationhtml

bull Accept applicationjson

bull Accept applicationxml

bull JAX-RS アプリケーションから管理監視

bull GET メソッドで設定参照

bull POST メソッドで設定更新

14

httpIP_ADDRESS4848managementdomain

Copyrightcopy 2010 Oracle All rights reserved

RESTful管理チャネルの例

15

gt curl -u adminadminadmin -X GET -H Accept applicationjson httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

HttpListener1port8080 enabledtrue protocolhttp-listener-1

transporttcp address0000 namehttp-listener-1 jk-enabled

false thread-poolhttp-thread-pool

hellip中略

gt curl -u adminadminadmin -X POST -d port=18080 -H Accept applicationjsonhttplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1 updated successfully

bull 設定情報の取得例

bull 設定情報の更新例

Copyrightcopy 2010 Oracle All rights reserved

JMXAMXベース管理チャネル

bull JMX API を実装した Java アプリケーションで管理bull JMX リスナーポート8686

bull 管理者パスワードは CLIGUIと同じ

bull 独自管理機能の作成が可能

bull JMX コンソールを利用bull JConsole(JDK に付属)

bull MC4J

16

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 2: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved 2

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

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

Copyrightcopy 2010 Oracle All rights reserved

Agenda

bull Oracle GlassFish Server v3xの概要

bull Oracle GlassFish Server v3xの詳細

bull GlassFish の今後

bull まとめ

3

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の概要

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 新機能概要

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTfulの管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

5

Copyrightcopy 2010 Oracle All rights reserved

Java EE 6 の仕様に完全準拠

bull Java EE 6 の主要な技術bull Servlet 30

bull JSP 22

bull JSF 20

bull EJB 31

bull JTA 11

bull JPA 20

bull JAX-WS 22

bull JAXB 22

bull JAX-RS 11

bull DI 10CDI 10

bull Bean Validation 10

6

bull JMS 11

bull JavaMail 14

bull EL 22

bull Common Annotations 11

bull Managed Bean 10

bull Interceptors 11

bull JACC 14

bull その他

さらに進んだかんたん開発

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server の入手

bull Full Platform プロファイルbull 完全な Java EE API を利用する場合に使用

bull Web プロファイルbull Full Platform に含まれるライブラリの内 Web 技術に特化した開発運用を行う場合に使用

bull Web プロファイルから更新ツールを利用しFull Platform へアップグレード可能

7

bull 各プロファイルの入手先bull httpwwworaclecomtechnetworkmiddlewareglassfishindexhtml

Copyrightcopy 2010 Oracle All rights reserved

オープンソース版と製品版の違い

bull オープンソース版bull 無償利用可能コミュニティドリブン

bull 製品版bull Oracleによる正式サポートを提供

bull 製品のアドオン追加管理機能等を提供

8

Cyenglassfishv3yenbingt asadmin version --verbose

バージョン = Oracle GlassFish Server 301 (build 22)JRE バージョン 160_21

コマンド version は正常に実行されました

Cyenglassfishv3yenbingt asadmin version --verbose

バージョン = GlassFish Server Open Source Edition 301 (build 22)

JRE バージョン 160_21

コマンド version は正常に実行されました

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

9

bull インストールディレクトリbull IPS パッケージディレクトリ

bull 共通ユーティリティコマンドへのリンク

bull GlassFish の本体

bull 実行可能コマンド(asadmin等)

bull インストール全般の設定

bull ドキュメント

bull ドメイン管理用ディレクトリ

bull デフォルトで作成されるドメイン

bull デプロイされたアプリケーション配備

bull オートデプロイ用ディレクトリ

bull 空ディレクトリ(削除予定startservの削除により不要)

bull ドメイン固有の設定

bull デフォルトのドキュメントルート

bull ドメイン固有のライブラリ

bull ドメインのログファイル

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

10

bull アイコンファイル

bull 法務上必要なファイル(ライセンスコピーライト)

bull GlassFish 全般で使用するライブラリ( dtdxsd 等)

bull モジュール(各機能の jar 等)

bull OSGi フレームワークのファイル

bull サンプルアプリケーション

bull インストール時使用ファイル

bull 内蔵 JavaDB の本体

bull 内蔵 OpenMQ の本体

bull IPS コマンドツール

bull 更新ツール GUI ツールデ

bull インストール時使用

OSGi 対応により GlassFish v2x から大幅に変更

GlassFish v31 より nodeagent ディレクトリが追加予定

Copyrightcopy 2010 Oracle All rights reserved

GlassFish のドメイン

11

bull GlassFish の管理構成単位bull デフォルトで作成されるドメインdomain1

bull 複数のドメインを作成可能 (domain2 domain3 等)

bull ドメイン毎に管理者を設定

bull 各ドメイン間は独立して管理

bull 設定変更は他のドメインに影響を及ぼさない

bull 管理者は管理コンソール等を通じてドメインを管理

bull Web 管理コンソール

bull コマンドライン管理コンソール

bull RESTful 管理チャネル

bull JMXAMX 管理チャネルdomain1

domain2

domain3

domains管理者

Copyrightcopy 2010 Oracle All rights reserved

Web 管理コンソール

bull Web ベースの管理コンソールbull httpIP_ADDRESSPORT

bull デフォルトのポート番号4848

bull 管理者のパスワード

bull パスワード無し

bull インストール時に指定

bull 管理コンソールアクセス時にロード

bull 管理コンソールとサービス提供ポート番号は独立

bull セキュアな管理が可能

bull ウィザードベースの簡単操作

12

httpIP_ADDRESS4848

Copyrightcopy 2010 Oracle All rights reserved

コマンドライン管理コンソール

bull GlassFish 管理用コマンドを提供bull $GLASSFISH_INSTALLbinasadmin

bull gt asadmin [オプション] コマンド名 [[--パラメータ 値]]

bull シェルスクリプトを記載し管理の自動化も可能

bull コマンドラインからのみ実施可能な操作bull ドメインの作成削除

bull ドメインのバックアップリストア

13

asadmin コマンドオプション

--host ドメイン管理サーバが稼働するホスト名

--port ドメイン管理サーバが稼働するポート番号

--user 管理者のユーザ名

--password 管理者のパスワード

gtasadmin create-domain ndash- help

asadmin Utility Subcommands create-domain(1)

NAME

create-domain - creates a domain

SYNOPSIS

create-domain [--help]

[--adminport adminport]

[--instanceport instanceport]

hellip

Copyrightcopy 2010 Oracle All rights reserved

RESTful 管理チャネルGlassFish v30から追加された新しい管理機能

bull RESTful による管理監視bull GlassFish v3 から追加された追加管理機能

bull HTML JSON XML フォーマットによる出力が可能

bull HTTP ヘッダ

bull Accept applicationhtml

bull Accept applicationjson

bull Accept applicationxml

bull JAX-RS アプリケーションから管理監視

bull GET メソッドで設定参照

bull POST メソッドで設定更新

14

httpIP_ADDRESS4848managementdomain

Copyrightcopy 2010 Oracle All rights reserved

RESTful管理チャネルの例

15

gt curl -u adminadminadmin -X GET -H Accept applicationjson httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

HttpListener1port8080 enabledtrue protocolhttp-listener-1

transporttcp address0000 namehttp-listener-1 jk-enabled

false thread-poolhttp-thread-pool

hellip中略

gt curl -u adminadminadmin -X POST -d port=18080 -H Accept applicationjsonhttplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1 updated successfully

bull 設定情報の取得例

bull 設定情報の更新例

Copyrightcopy 2010 Oracle All rights reserved

JMXAMXベース管理チャネル

bull JMX API を実装した Java アプリケーションで管理bull JMX リスナーポート8686

bull 管理者パスワードは CLIGUIと同じ

bull 独自管理機能の作成が可能

bull JMX コンソールを利用bull JConsole(JDK に付属)

bull MC4J

16

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 3: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

Agenda

bull Oracle GlassFish Server v3xの概要

bull Oracle GlassFish Server v3xの詳細

bull GlassFish の今後

bull まとめ

3

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の概要

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 新機能概要

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTfulの管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

5

Copyrightcopy 2010 Oracle All rights reserved

Java EE 6 の仕様に完全準拠

bull Java EE 6 の主要な技術bull Servlet 30

bull JSP 22

bull JSF 20

bull EJB 31

bull JTA 11

bull JPA 20

bull JAX-WS 22

bull JAXB 22

bull JAX-RS 11

bull DI 10CDI 10

bull Bean Validation 10

6

bull JMS 11

bull JavaMail 14

bull EL 22

bull Common Annotations 11

bull Managed Bean 10

bull Interceptors 11

bull JACC 14

bull その他

さらに進んだかんたん開発

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server の入手

bull Full Platform プロファイルbull 完全な Java EE API を利用する場合に使用

bull Web プロファイルbull Full Platform に含まれるライブラリの内 Web 技術に特化した開発運用を行う場合に使用

bull Web プロファイルから更新ツールを利用しFull Platform へアップグレード可能

7

bull 各プロファイルの入手先bull httpwwworaclecomtechnetworkmiddlewareglassfishindexhtml

Copyrightcopy 2010 Oracle All rights reserved

オープンソース版と製品版の違い

bull オープンソース版bull 無償利用可能コミュニティドリブン

bull 製品版bull Oracleによる正式サポートを提供

bull 製品のアドオン追加管理機能等を提供

8

Cyenglassfishv3yenbingt asadmin version --verbose

バージョン = Oracle GlassFish Server 301 (build 22)JRE バージョン 160_21

コマンド version は正常に実行されました

Cyenglassfishv3yenbingt asadmin version --verbose

バージョン = GlassFish Server Open Source Edition 301 (build 22)

JRE バージョン 160_21

コマンド version は正常に実行されました

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

9

bull インストールディレクトリbull IPS パッケージディレクトリ

bull 共通ユーティリティコマンドへのリンク

bull GlassFish の本体

bull 実行可能コマンド(asadmin等)

bull インストール全般の設定

bull ドキュメント

bull ドメイン管理用ディレクトリ

bull デフォルトで作成されるドメイン

bull デプロイされたアプリケーション配備

bull オートデプロイ用ディレクトリ

bull 空ディレクトリ(削除予定startservの削除により不要)

bull ドメイン固有の設定

bull デフォルトのドキュメントルート

bull ドメイン固有のライブラリ

bull ドメインのログファイル

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

10

bull アイコンファイル

bull 法務上必要なファイル(ライセンスコピーライト)

bull GlassFish 全般で使用するライブラリ( dtdxsd 等)

bull モジュール(各機能の jar 等)

bull OSGi フレームワークのファイル

bull サンプルアプリケーション

bull インストール時使用ファイル

bull 内蔵 JavaDB の本体

bull 内蔵 OpenMQ の本体

bull IPS コマンドツール

bull 更新ツール GUI ツールデ

bull インストール時使用

OSGi 対応により GlassFish v2x から大幅に変更

GlassFish v31 より nodeagent ディレクトリが追加予定

Copyrightcopy 2010 Oracle All rights reserved

GlassFish のドメイン

11

bull GlassFish の管理構成単位bull デフォルトで作成されるドメインdomain1

bull 複数のドメインを作成可能 (domain2 domain3 等)

bull ドメイン毎に管理者を設定

bull 各ドメイン間は独立して管理

bull 設定変更は他のドメインに影響を及ぼさない

bull 管理者は管理コンソール等を通じてドメインを管理

bull Web 管理コンソール

bull コマンドライン管理コンソール

bull RESTful 管理チャネル

bull JMXAMX 管理チャネルdomain1

domain2

domain3

domains管理者

Copyrightcopy 2010 Oracle All rights reserved

Web 管理コンソール

bull Web ベースの管理コンソールbull httpIP_ADDRESSPORT

bull デフォルトのポート番号4848

bull 管理者のパスワード

bull パスワード無し

bull インストール時に指定

bull 管理コンソールアクセス時にロード

bull 管理コンソールとサービス提供ポート番号は独立

bull セキュアな管理が可能

bull ウィザードベースの簡単操作

12

httpIP_ADDRESS4848

Copyrightcopy 2010 Oracle All rights reserved

コマンドライン管理コンソール

bull GlassFish 管理用コマンドを提供bull $GLASSFISH_INSTALLbinasadmin

bull gt asadmin [オプション] コマンド名 [[--パラメータ 値]]

bull シェルスクリプトを記載し管理の自動化も可能

bull コマンドラインからのみ実施可能な操作bull ドメインの作成削除

bull ドメインのバックアップリストア

13

asadmin コマンドオプション

--host ドメイン管理サーバが稼働するホスト名

--port ドメイン管理サーバが稼働するポート番号

--user 管理者のユーザ名

--password 管理者のパスワード

gtasadmin create-domain ndash- help

asadmin Utility Subcommands create-domain(1)

NAME

create-domain - creates a domain

SYNOPSIS

create-domain [--help]

[--adminport adminport]

[--instanceport instanceport]

hellip

Copyrightcopy 2010 Oracle All rights reserved

RESTful 管理チャネルGlassFish v30から追加された新しい管理機能

bull RESTful による管理監視bull GlassFish v3 から追加された追加管理機能

bull HTML JSON XML フォーマットによる出力が可能

bull HTTP ヘッダ

bull Accept applicationhtml

bull Accept applicationjson

bull Accept applicationxml

bull JAX-RS アプリケーションから管理監視

bull GET メソッドで設定参照

bull POST メソッドで設定更新

14

httpIP_ADDRESS4848managementdomain

Copyrightcopy 2010 Oracle All rights reserved

RESTful管理チャネルの例

15

gt curl -u adminadminadmin -X GET -H Accept applicationjson httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

HttpListener1port8080 enabledtrue protocolhttp-listener-1

transporttcp address0000 namehttp-listener-1 jk-enabled

false thread-poolhttp-thread-pool

hellip中略

gt curl -u adminadminadmin -X POST -d port=18080 -H Accept applicationjsonhttplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1 updated successfully

bull 設定情報の取得例

bull 設定情報の更新例

Copyrightcopy 2010 Oracle All rights reserved

JMXAMXベース管理チャネル

bull JMX API を実装した Java アプリケーションで管理bull JMX リスナーポート8686

bull 管理者パスワードは CLIGUIと同じ

bull 独自管理機能の作成が可能

bull JMX コンソールを利用bull JConsole(JDK に付属)

bull MC4J

16

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 4: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の概要

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 新機能概要

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTfulの管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

5

Copyrightcopy 2010 Oracle All rights reserved

Java EE 6 の仕様に完全準拠

bull Java EE 6 の主要な技術bull Servlet 30

bull JSP 22

bull JSF 20

bull EJB 31

bull JTA 11

bull JPA 20

bull JAX-WS 22

bull JAXB 22

bull JAX-RS 11

bull DI 10CDI 10

bull Bean Validation 10

6

bull JMS 11

bull JavaMail 14

bull EL 22

bull Common Annotations 11

bull Managed Bean 10

bull Interceptors 11

bull JACC 14

bull その他

さらに進んだかんたん開発

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server の入手

bull Full Platform プロファイルbull 完全な Java EE API を利用する場合に使用

bull Web プロファイルbull Full Platform に含まれるライブラリの内 Web 技術に特化した開発運用を行う場合に使用

bull Web プロファイルから更新ツールを利用しFull Platform へアップグレード可能

7

bull 各プロファイルの入手先bull httpwwworaclecomtechnetworkmiddlewareglassfishindexhtml

Copyrightcopy 2010 Oracle All rights reserved

オープンソース版と製品版の違い

bull オープンソース版bull 無償利用可能コミュニティドリブン

bull 製品版bull Oracleによる正式サポートを提供

bull 製品のアドオン追加管理機能等を提供

8

Cyenglassfishv3yenbingt asadmin version --verbose

バージョン = Oracle GlassFish Server 301 (build 22)JRE バージョン 160_21

コマンド version は正常に実行されました

Cyenglassfishv3yenbingt asadmin version --verbose

バージョン = GlassFish Server Open Source Edition 301 (build 22)

JRE バージョン 160_21

コマンド version は正常に実行されました

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

9

bull インストールディレクトリbull IPS パッケージディレクトリ

bull 共通ユーティリティコマンドへのリンク

bull GlassFish の本体

bull 実行可能コマンド(asadmin等)

bull インストール全般の設定

bull ドキュメント

bull ドメイン管理用ディレクトリ

bull デフォルトで作成されるドメイン

bull デプロイされたアプリケーション配備

bull オートデプロイ用ディレクトリ

bull 空ディレクトリ(削除予定startservの削除により不要)

bull ドメイン固有の設定

bull デフォルトのドキュメントルート

bull ドメイン固有のライブラリ

bull ドメインのログファイル

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

10

bull アイコンファイル

bull 法務上必要なファイル(ライセンスコピーライト)

bull GlassFish 全般で使用するライブラリ( dtdxsd 等)

bull モジュール(各機能の jar 等)

bull OSGi フレームワークのファイル

bull サンプルアプリケーション

bull インストール時使用ファイル

bull 内蔵 JavaDB の本体

bull 内蔵 OpenMQ の本体

bull IPS コマンドツール

bull 更新ツール GUI ツールデ

bull インストール時使用

OSGi 対応により GlassFish v2x から大幅に変更

GlassFish v31 より nodeagent ディレクトリが追加予定

Copyrightcopy 2010 Oracle All rights reserved

GlassFish のドメイン

11

bull GlassFish の管理構成単位bull デフォルトで作成されるドメインdomain1

bull 複数のドメインを作成可能 (domain2 domain3 等)

bull ドメイン毎に管理者を設定

bull 各ドメイン間は独立して管理

bull 設定変更は他のドメインに影響を及ぼさない

bull 管理者は管理コンソール等を通じてドメインを管理

bull Web 管理コンソール

bull コマンドライン管理コンソール

bull RESTful 管理チャネル

bull JMXAMX 管理チャネルdomain1

domain2

domain3

domains管理者

Copyrightcopy 2010 Oracle All rights reserved

Web 管理コンソール

bull Web ベースの管理コンソールbull httpIP_ADDRESSPORT

bull デフォルトのポート番号4848

bull 管理者のパスワード

bull パスワード無し

bull インストール時に指定

bull 管理コンソールアクセス時にロード

bull 管理コンソールとサービス提供ポート番号は独立

bull セキュアな管理が可能

bull ウィザードベースの簡単操作

12

httpIP_ADDRESS4848

Copyrightcopy 2010 Oracle All rights reserved

コマンドライン管理コンソール

bull GlassFish 管理用コマンドを提供bull $GLASSFISH_INSTALLbinasadmin

bull gt asadmin [オプション] コマンド名 [[--パラメータ 値]]

bull シェルスクリプトを記載し管理の自動化も可能

bull コマンドラインからのみ実施可能な操作bull ドメインの作成削除

bull ドメインのバックアップリストア

13

asadmin コマンドオプション

--host ドメイン管理サーバが稼働するホスト名

--port ドメイン管理サーバが稼働するポート番号

--user 管理者のユーザ名

--password 管理者のパスワード

gtasadmin create-domain ndash- help

asadmin Utility Subcommands create-domain(1)

NAME

create-domain - creates a domain

SYNOPSIS

create-domain [--help]

[--adminport adminport]

[--instanceport instanceport]

hellip

Copyrightcopy 2010 Oracle All rights reserved

RESTful 管理チャネルGlassFish v30から追加された新しい管理機能

bull RESTful による管理監視bull GlassFish v3 から追加された追加管理機能

bull HTML JSON XML フォーマットによる出力が可能

bull HTTP ヘッダ

bull Accept applicationhtml

bull Accept applicationjson

bull Accept applicationxml

bull JAX-RS アプリケーションから管理監視

bull GET メソッドで設定参照

bull POST メソッドで設定更新

14

httpIP_ADDRESS4848managementdomain

Copyrightcopy 2010 Oracle All rights reserved

RESTful管理チャネルの例

15

gt curl -u adminadminadmin -X GET -H Accept applicationjson httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

HttpListener1port8080 enabledtrue protocolhttp-listener-1

transporttcp address0000 namehttp-listener-1 jk-enabled

false thread-poolhttp-thread-pool

hellip中略

gt curl -u adminadminadmin -X POST -d port=18080 -H Accept applicationjsonhttplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1 updated successfully

bull 設定情報の取得例

bull 設定情報の更新例

Copyrightcopy 2010 Oracle All rights reserved

JMXAMXベース管理チャネル

bull JMX API を実装した Java アプリケーションで管理bull JMX リスナーポート8686

bull 管理者パスワードは CLIGUIと同じ

bull 独自管理機能の作成が可能

bull JMX コンソールを利用bull JConsole(JDK に付属)

bull MC4J

16

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 5: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 新機能概要

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTfulの管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

5

Copyrightcopy 2010 Oracle All rights reserved

Java EE 6 の仕様に完全準拠

bull Java EE 6 の主要な技術bull Servlet 30

bull JSP 22

bull JSF 20

bull EJB 31

bull JTA 11

bull JPA 20

bull JAX-WS 22

bull JAXB 22

bull JAX-RS 11

bull DI 10CDI 10

bull Bean Validation 10

6

bull JMS 11

bull JavaMail 14

bull EL 22

bull Common Annotations 11

bull Managed Bean 10

bull Interceptors 11

bull JACC 14

bull その他

さらに進んだかんたん開発

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server の入手

bull Full Platform プロファイルbull 完全な Java EE API を利用する場合に使用

bull Web プロファイルbull Full Platform に含まれるライブラリの内 Web 技術に特化した開発運用を行う場合に使用

bull Web プロファイルから更新ツールを利用しFull Platform へアップグレード可能

7

bull 各プロファイルの入手先bull httpwwworaclecomtechnetworkmiddlewareglassfishindexhtml

Copyrightcopy 2010 Oracle All rights reserved

オープンソース版と製品版の違い

bull オープンソース版bull 無償利用可能コミュニティドリブン

bull 製品版bull Oracleによる正式サポートを提供

bull 製品のアドオン追加管理機能等を提供

8

Cyenglassfishv3yenbingt asadmin version --verbose

バージョン = Oracle GlassFish Server 301 (build 22)JRE バージョン 160_21

コマンド version は正常に実行されました

Cyenglassfishv3yenbingt asadmin version --verbose

バージョン = GlassFish Server Open Source Edition 301 (build 22)

JRE バージョン 160_21

コマンド version は正常に実行されました

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

9

bull インストールディレクトリbull IPS パッケージディレクトリ

bull 共通ユーティリティコマンドへのリンク

bull GlassFish の本体

bull 実行可能コマンド(asadmin等)

bull インストール全般の設定

bull ドキュメント

bull ドメイン管理用ディレクトリ

bull デフォルトで作成されるドメイン

bull デプロイされたアプリケーション配備

bull オートデプロイ用ディレクトリ

bull 空ディレクトリ(削除予定startservの削除により不要)

bull ドメイン固有の設定

bull デフォルトのドキュメントルート

bull ドメイン固有のライブラリ

bull ドメインのログファイル

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

10

bull アイコンファイル

bull 法務上必要なファイル(ライセンスコピーライト)

bull GlassFish 全般で使用するライブラリ( dtdxsd 等)

bull モジュール(各機能の jar 等)

bull OSGi フレームワークのファイル

bull サンプルアプリケーション

bull インストール時使用ファイル

bull 内蔵 JavaDB の本体

bull 内蔵 OpenMQ の本体

bull IPS コマンドツール

bull 更新ツール GUI ツールデ

bull インストール時使用

OSGi 対応により GlassFish v2x から大幅に変更

GlassFish v31 より nodeagent ディレクトリが追加予定

Copyrightcopy 2010 Oracle All rights reserved

GlassFish のドメイン

11

bull GlassFish の管理構成単位bull デフォルトで作成されるドメインdomain1

bull 複数のドメインを作成可能 (domain2 domain3 等)

bull ドメイン毎に管理者を設定

bull 各ドメイン間は独立して管理

bull 設定変更は他のドメインに影響を及ぼさない

bull 管理者は管理コンソール等を通じてドメインを管理

bull Web 管理コンソール

bull コマンドライン管理コンソール

bull RESTful 管理チャネル

bull JMXAMX 管理チャネルdomain1

domain2

domain3

domains管理者

Copyrightcopy 2010 Oracle All rights reserved

Web 管理コンソール

bull Web ベースの管理コンソールbull httpIP_ADDRESSPORT

bull デフォルトのポート番号4848

bull 管理者のパスワード

bull パスワード無し

bull インストール時に指定

bull 管理コンソールアクセス時にロード

bull 管理コンソールとサービス提供ポート番号は独立

bull セキュアな管理が可能

bull ウィザードベースの簡単操作

12

httpIP_ADDRESS4848

Copyrightcopy 2010 Oracle All rights reserved

コマンドライン管理コンソール

bull GlassFish 管理用コマンドを提供bull $GLASSFISH_INSTALLbinasadmin

bull gt asadmin [オプション] コマンド名 [[--パラメータ 値]]

bull シェルスクリプトを記載し管理の自動化も可能

bull コマンドラインからのみ実施可能な操作bull ドメインの作成削除

bull ドメインのバックアップリストア

13

asadmin コマンドオプション

--host ドメイン管理サーバが稼働するホスト名

--port ドメイン管理サーバが稼働するポート番号

--user 管理者のユーザ名

--password 管理者のパスワード

gtasadmin create-domain ndash- help

asadmin Utility Subcommands create-domain(1)

NAME

create-domain - creates a domain

SYNOPSIS

create-domain [--help]

[--adminport adminport]

[--instanceport instanceport]

hellip

Copyrightcopy 2010 Oracle All rights reserved

RESTful 管理チャネルGlassFish v30から追加された新しい管理機能

bull RESTful による管理監視bull GlassFish v3 から追加された追加管理機能

bull HTML JSON XML フォーマットによる出力が可能

bull HTTP ヘッダ

bull Accept applicationhtml

bull Accept applicationjson

bull Accept applicationxml

bull JAX-RS アプリケーションから管理監視

bull GET メソッドで設定参照

bull POST メソッドで設定更新

14

httpIP_ADDRESS4848managementdomain

Copyrightcopy 2010 Oracle All rights reserved

RESTful管理チャネルの例

15

gt curl -u adminadminadmin -X GET -H Accept applicationjson httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

HttpListener1port8080 enabledtrue protocolhttp-listener-1

transporttcp address0000 namehttp-listener-1 jk-enabled

false thread-poolhttp-thread-pool

hellip中略

gt curl -u adminadminadmin -X POST -d port=18080 -H Accept applicationjsonhttplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1 updated successfully

bull 設定情報の取得例

bull 設定情報の更新例

Copyrightcopy 2010 Oracle All rights reserved

JMXAMXベース管理チャネル

bull JMX API を実装した Java アプリケーションで管理bull JMX リスナーポート8686

bull 管理者パスワードは CLIGUIと同じ

bull 独自管理機能の作成が可能

bull JMX コンソールを利用bull JConsole(JDK に付属)

bull MC4J

16

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 6: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

Java EE 6 の仕様に完全準拠

bull Java EE 6 の主要な技術bull Servlet 30

bull JSP 22

bull JSF 20

bull EJB 31

bull JTA 11

bull JPA 20

bull JAX-WS 22

bull JAXB 22

bull JAX-RS 11

bull DI 10CDI 10

bull Bean Validation 10

6

bull JMS 11

bull JavaMail 14

bull EL 22

bull Common Annotations 11

bull Managed Bean 10

bull Interceptors 11

bull JACC 14

bull その他

さらに進んだかんたん開発

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server の入手

bull Full Platform プロファイルbull 完全な Java EE API を利用する場合に使用

bull Web プロファイルbull Full Platform に含まれるライブラリの内 Web 技術に特化した開発運用を行う場合に使用

bull Web プロファイルから更新ツールを利用しFull Platform へアップグレード可能

7

bull 各プロファイルの入手先bull httpwwworaclecomtechnetworkmiddlewareglassfishindexhtml

Copyrightcopy 2010 Oracle All rights reserved

オープンソース版と製品版の違い

bull オープンソース版bull 無償利用可能コミュニティドリブン

bull 製品版bull Oracleによる正式サポートを提供

bull 製品のアドオン追加管理機能等を提供

8

Cyenglassfishv3yenbingt asadmin version --verbose

バージョン = Oracle GlassFish Server 301 (build 22)JRE バージョン 160_21

コマンド version は正常に実行されました

Cyenglassfishv3yenbingt asadmin version --verbose

バージョン = GlassFish Server Open Source Edition 301 (build 22)

JRE バージョン 160_21

コマンド version は正常に実行されました

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

9

bull インストールディレクトリbull IPS パッケージディレクトリ

bull 共通ユーティリティコマンドへのリンク

bull GlassFish の本体

bull 実行可能コマンド(asadmin等)

bull インストール全般の設定

bull ドキュメント

bull ドメイン管理用ディレクトリ

bull デフォルトで作成されるドメイン

bull デプロイされたアプリケーション配備

bull オートデプロイ用ディレクトリ

bull 空ディレクトリ(削除予定startservの削除により不要)

bull ドメイン固有の設定

bull デフォルトのドキュメントルート

bull ドメイン固有のライブラリ

bull ドメインのログファイル

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

10

bull アイコンファイル

bull 法務上必要なファイル(ライセンスコピーライト)

bull GlassFish 全般で使用するライブラリ( dtdxsd 等)

bull モジュール(各機能の jar 等)

bull OSGi フレームワークのファイル

bull サンプルアプリケーション

bull インストール時使用ファイル

bull 内蔵 JavaDB の本体

bull 内蔵 OpenMQ の本体

bull IPS コマンドツール

bull 更新ツール GUI ツールデ

bull インストール時使用

OSGi 対応により GlassFish v2x から大幅に変更

GlassFish v31 より nodeagent ディレクトリが追加予定

Copyrightcopy 2010 Oracle All rights reserved

GlassFish のドメイン

11

bull GlassFish の管理構成単位bull デフォルトで作成されるドメインdomain1

bull 複数のドメインを作成可能 (domain2 domain3 等)

bull ドメイン毎に管理者を設定

bull 各ドメイン間は独立して管理

bull 設定変更は他のドメインに影響を及ぼさない

bull 管理者は管理コンソール等を通じてドメインを管理

bull Web 管理コンソール

bull コマンドライン管理コンソール

bull RESTful 管理チャネル

bull JMXAMX 管理チャネルdomain1

domain2

domain3

domains管理者

Copyrightcopy 2010 Oracle All rights reserved

Web 管理コンソール

bull Web ベースの管理コンソールbull httpIP_ADDRESSPORT

bull デフォルトのポート番号4848

bull 管理者のパスワード

bull パスワード無し

bull インストール時に指定

bull 管理コンソールアクセス時にロード

bull 管理コンソールとサービス提供ポート番号は独立

bull セキュアな管理が可能

bull ウィザードベースの簡単操作

12

httpIP_ADDRESS4848

Copyrightcopy 2010 Oracle All rights reserved

コマンドライン管理コンソール

bull GlassFish 管理用コマンドを提供bull $GLASSFISH_INSTALLbinasadmin

bull gt asadmin [オプション] コマンド名 [[--パラメータ 値]]

bull シェルスクリプトを記載し管理の自動化も可能

bull コマンドラインからのみ実施可能な操作bull ドメインの作成削除

bull ドメインのバックアップリストア

13

asadmin コマンドオプション

--host ドメイン管理サーバが稼働するホスト名

--port ドメイン管理サーバが稼働するポート番号

--user 管理者のユーザ名

--password 管理者のパスワード

gtasadmin create-domain ndash- help

asadmin Utility Subcommands create-domain(1)

NAME

create-domain - creates a domain

SYNOPSIS

create-domain [--help]

[--adminport adminport]

[--instanceport instanceport]

hellip

Copyrightcopy 2010 Oracle All rights reserved

RESTful 管理チャネルGlassFish v30から追加された新しい管理機能

bull RESTful による管理監視bull GlassFish v3 から追加された追加管理機能

bull HTML JSON XML フォーマットによる出力が可能

bull HTTP ヘッダ

bull Accept applicationhtml

bull Accept applicationjson

bull Accept applicationxml

bull JAX-RS アプリケーションから管理監視

bull GET メソッドで設定参照

bull POST メソッドで設定更新

14

httpIP_ADDRESS4848managementdomain

Copyrightcopy 2010 Oracle All rights reserved

RESTful管理チャネルの例

15

gt curl -u adminadminadmin -X GET -H Accept applicationjson httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

HttpListener1port8080 enabledtrue protocolhttp-listener-1

transporttcp address0000 namehttp-listener-1 jk-enabled

false thread-poolhttp-thread-pool

hellip中略

gt curl -u adminadminadmin -X POST -d port=18080 -H Accept applicationjsonhttplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1 updated successfully

bull 設定情報の取得例

bull 設定情報の更新例

Copyrightcopy 2010 Oracle All rights reserved

JMXAMXベース管理チャネル

bull JMX API を実装した Java アプリケーションで管理bull JMX リスナーポート8686

bull 管理者パスワードは CLIGUIと同じ

bull 独自管理機能の作成が可能

bull JMX コンソールを利用bull JConsole(JDK に付属)

bull MC4J

16

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 7: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server の入手

bull Full Platform プロファイルbull 完全な Java EE API を利用する場合に使用

bull Web プロファイルbull Full Platform に含まれるライブラリの内 Web 技術に特化した開発運用を行う場合に使用

bull Web プロファイルから更新ツールを利用しFull Platform へアップグレード可能

7

bull 各プロファイルの入手先bull httpwwworaclecomtechnetworkmiddlewareglassfishindexhtml

Copyrightcopy 2010 Oracle All rights reserved

オープンソース版と製品版の違い

bull オープンソース版bull 無償利用可能コミュニティドリブン

bull 製品版bull Oracleによる正式サポートを提供

bull 製品のアドオン追加管理機能等を提供

8

Cyenglassfishv3yenbingt asadmin version --verbose

バージョン = Oracle GlassFish Server 301 (build 22)JRE バージョン 160_21

コマンド version は正常に実行されました

Cyenglassfishv3yenbingt asadmin version --verbose

バージョン = GlassFish Server Open Source Edition 301 (build 22)

JRE バージョン 160_21

コマンド version は正常に実行されました

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

9

bull インストールディレクトリbull IPS パッケージディレクトリ

bull 共通ユーティリティコマンドへのリンク

bull GlassFish の本体

bull 実行可能コマンド(asadmin等)

bull インストール全般の設定

bull ドキュメント

bull ドメイン管理用ディレクトリ

bull デフォルトで作成されるドメイン

bull デプロイされたアプリケーション配備

bull オートデプロイ用ディレクトリ

bull 空ディレクトリ(削除予定startservの削除により不要)

bull ドメイン固有の設定

bull デフォルトのドキュメントルート

bull ドメイン固有のライブラリ

bull ドメインのログファイル

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

10

bull アイコンファイル

bull 法務上必要なファイル(ライセンスコピーライト)

bull GlassFish 全般で使用するライブラリ( dtdxsd 等)

bull モジュール(各機能の jar 等)

bull OSGi フレームワークのファイル

bull サンプルアプリケーション

bull インストール時使用ファイル

bull 内蔵 JavaDB の本体

bull 内蔵 OpenMQ の本体

bull IPS コマンドツール

bull 更新ツール GUI ツールデ

bull インストール時使用

OSGi 対応により GlassFish v2x から大幅に変更

GlassFish v31 より nodeagent ディレクトリが追加予定

Copyrightcopy 2010 Oracle All rights reserved

GlassFish のドメイン

11

bull GlassFish の管理構成単位bull デフォルトで作成されるドメインdomain1

bull 複数のドメインを作成可能 (domain2 domain3 等)

bull ドメイン毎に管理者を設定

bull 各ドメイン間は独立して管理

bull 設定変更は他のドメインに影響を及ぼさない

bull 管理者は管理コンソール等を通じてドメインを管理

bull Web 管理コンソール

bull コマンドライン管理コンソール

bull RESTful 管理チャネル

bull JMXAMX 管理チャネルdomain1

domain2

domain3

domains管理者

Copyrightcopy 2010 Oracle All rights reserved

Web 管理コンソール

bull Web ベースの管理コンソールbull httpIP_ADDRESSPORT

bull デフォルトのポート番号4848

bull 管理者のパスワード

bull パスワード無し

bull インストール時に指定

bull 管理コンソールアクセス時にロード

bull 管理コンソールとサービス提供ポート番号は独立

bull セキュアな管理が可能

bull ウィザードベースの簡単操作

12

httpIP_ADDRESS4848

Copyrightcopy 2010 Oracle All rights reserved

コマンドライン管理コンソール

bull GlassFish 管理用コマンドを提供bull $GLASSFISH_INSTALLbinasadmin

bull gt asadmin [オプション] コマンド名 [[--パラメータ 値]]

bull シェルスクリプトを記載し管理の自動化も可能

bull コマンドラインからのみ実施可能な操作bull ドメインの作成削除

bull ドメインのバックアップリストア

13

asadmin コマンドオプション

--host ドメイン管理サーバが稼働するホスト名

--port ドメイン管理サーバが稼働するポート番号

--user 管理者のユーザ名

--password 管理者のパスワード

gtasadmin create-domain ndash- help

asadmin Utility Subcommands create-domain(1)

NAME

create-domain - creates a domain

SYNOPSIS

create-domain [--help]

[--adminport adminport]

[--instanceport instanceport]

hellip

Copyrightcopy 2010 Oracle All rights reserved

RESTful 管理チャネルGlassFish v30から追加された新しい管理機能

bull RESTful による管理監視bull GlassFish v3 から追加された追加管理機能

bull HTML JSON XML フォーマットによる出力が可能

bull HTTP ヘッダ

bull Accept applicationhtml

bull Accept applicationjson

bull Accept applicationxml

bull JAX-RS アプリケーションから管理監視

bull GET メソッドで設定参照

bull POST メソッドで設定更新

14

httpIP_ADDRESS4848managementdomain

Copyrightcopy 2010 Oracle All rights reserved

RESTful管理チャネルの例

15

gt curl -u adminadminadmin -X GET -H Accept applicationjson httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

HttpListener1port8080 enabledtrue protocolhttp-listener-1

transporttcp address0000 namehttp-listener-1 jk-enabled

false thread-poolhttp-thread-pool

hellip中略

gt curl -u adminadminadmin -X POST -d port=18080 -H Accept applicationjsonhttplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1 updated successfully

bull 設定情報の取得例

bull 設定情報の更新例

Copyrightcopy 2010 Oracle All rights reserved

JMXAMXベース管理チャネル

bull JMX API を実装した Java アプリケーションで管理bull JMX リスナーポート8686

bull 管理者パスワードは CLIGUIと同じ

bull 独自管理機能の作成が可能

bull JMX コンソールを利用bull JConsole(JDK に付属)

bull MC4J

16

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 8: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

オープンソース版と製品版の違い

bull オープンソース版bull 無償利用可能コミュニティドリブン

bull 製品版bull Oracleによる正式サポートを提供

bull 製品のアドオン追加管理機能等を提供

8

Cyenglassfishv3yenbingt asadmin version --verbose

バージョン = Oracle GlassFish Server 301 (build 22)JRE バージョン 160_21

コマンド version は正常に実行されました

Cyenglassfishv3yenbingt asadmin version --verbose

バージョン = GlassFish Server Open Source Edition 301 (build 22)

JRE バージョン 160_21

コマンド version は正常に実行されました

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

9

bull インストールディレクトリbull IPS パッケージディレクトリ

bull 共通ユーティリティコマンドへのリンク

bull GlassFish の本体

bull 実行可能コマンド(asadmin等)

bull インストール全般の設定

bull ドキュメント

bull ドメイン管理用ディレクトリ

bull デフォルトで作成されるドメイン

bull デプロイされたアプリケーション配備

bull オートデプロイ用ディレクトリ

bull 空ディレクトリ(削除予定startservの削除により不要)

bull ドメイン固有の設定

bull デフォルトのドキュメントルート

bull ドメイン固有のライブラリ

bull ドメインのログファイル

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

10

bull アイコンファイル

bull 法務上必要なファイル(ライセンスコピーライト)

bull GlassFish 全般で使用するライブラリ( dtdxsd 等)

bull モジュール(各機能の jar 等)

bull OSGi フレームワークのファイル

bull サンプルアプリケーション

bull インストール時使用ファイル

bull 内蔵 JavaDB の本体

bull 内蔵 OpenMQ の本体

bull IPS コマンドツール

bull 更新ツール GUI ツールデ

bull インストール時使用

OSGi 対応により GlassFish v2x から大幅に変更

GlassFish v31 より nodeagent ディレクトリが追加予定

Copyrightcopy 2010 Oracle All rights reserved

GlassFish のドメイン

11

bull GlassFish の管理構成単位bull デフォルトで作成されるドメインdomain1

bull 複数のドメインを作成可能 (domain2 domain3 等)

bull ドメイン毎に管理者を設定

bull 各ドメイン間は独立して管理

bull 設定変更は他のドメインに影響を及ぼさない

bull 管理者は管理コンソール等を通じてドメインを管理

bull Web 管理コンソール

bull コマンドライン管理コンソール

bull RESTful 管理チャネル

bull JMXAMX 管理チャネルdomain1

domain2

domain3

domains管理者

Copyrightcopy 2010 Oracle All rights reserved

Web 管理コンソール

bull Web ベースの管理コンソールbull httpIP_ADDRESSPORT

bull デフォルトのポート番号4848

bull 管理者のパスワード

bull パスワード無し

bull インストール時に指定

bull 管理コンソールアクセス時にロード

bull 管理コンソールとサービス提供ポート番号は独立

bull セキュアな管理が可能

bull ウィザードベースの簡単操作

12

httpIP_ADDRESS4848

Copyrightcopy 2010 Oracle All rights reserved

コマンドライン管理コンソール

bull GlassFish 管理用コマンドを提供bull $GLASSFISH_INSTALLbinasadmin

bull gt asadmin [オプション] コマンド名 [[--パラメータ 値]]

bull シェルスクリプトを記載し管理の自動化も可能

bull コマンドラインからのみ実施可能な操作bull ドメインの作成削除

bull ドメインのバックアップリストア

13

asadmin コマンドオプション

--host ドメイン管理サーバが稼働するホスト名

--port ドメイン管理サーバが稼働するポート番号

--user 管理者のユーザ名

--password 管理者のパスワード

gtasadmin create-domain ndash- help

asadmin Utility Subcommands create-domain(1)

NAME

create-domain - creates a domain

SYNOPSIS

create-domain [--help]

[--adminport adminport]

[--instanceport instanceport]

hellip

Copyrightcopy 2010 Oracle All rights reserved

RESTful 管理チャネルGlassFish v30から追加された新しい管理機能

bull RESTful による管理監視bull GlassFish v3 から追加された追加管理機能

bull HTML JSON XML フォーマットによる出力が可能

bull HTTP ヘッダ

bull Accept applicationhtml

bull Accept applicationjson

bull Accept applicationxml

bull JAX-RS アプリケーションから管理監視

bull GET メソッドで設定参照

bull POST メソッドで設定更新

14

httpIP_ADDRESS4848managementdomain

Copyrightcopy 2010 Oracle All rights reserved

RESTful管理チャネルの例

15

gt curl -u adminadminadmin -X GET -H Accept applicationjson httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

HttpListener1port8080 enabledtrue protocolhttp-listener-1

transporttcp address0000 namehttp-listener-1 jk-enabled

false thread-poolhttp-thread-pool

hellip中略

gt curl -u adminadminadmin -X POST -d port=18080 -H Accept applicationjsonhttplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1 updated successfully

bull 設定情報の取得例

bull 設定情報の更新例

Copyrightcopy 2010 Oracle All rights reserved

JMXAMXベース管理チャネル

bull JMX API を実装した Java アプリケーションで管理bull JMX リスナーポート8686

bull 管理者パスワードは CLIGUIと同じ

bull 独自管理機能の作成が可能

bull JMX コンソールを利用bull JConsole(JDK に付属)

bull MC4J

16

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 9: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

9

bull インストールディレクトリbull IPS パッケージディレクトリ

bull 共通ユーティリティコマンドへのリンク

bull GlassFish の本体

bull 実行可能コマンド(asadmin等)

bull インストール全般の設定

bull ドキュメント

bull ドメイン管理用ディレクトリ

bull デフォルトで作成されるドメイン

bull デプロイされたアプリケーション配備

bull オートデプロイ用ディレクトリ

bull 空ディレクトリ(削除予定startservの削除により不要)

bull ドメイン固有の設定

bull デフォルトのドキュメントルート

bull ドメイン固有のライブラリ

bull ドメインのログファイル

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

10

bull アイコンファイル

bull 法務上必要なファイル(ライセンスコピーライト)

bull GlassFish 全般で使用するライブラリ( dtdxsd 等)

bull モジュール(各機能の jar 等)

bull OSGi フレームワークのファイル

bull サンプルアプリケーション

bull インストール時使用ファイル

bull 内蔵 JavaDB の本体

bull 内蔵 OpenMQ の本体

bull IPS コマンドツール

bull 更新ツール GUI ツールデ

bull インストール時使用

OSGi 対応により GlassFish v2x から大幅に変更

GlassFish v31 より nodeagent ディレクトリが追加予定

Copyrightcopy 2010 Oracle All rights reserved

GlassFish のドメイン

11

bull GlassFish の管理構成単位bull デフォルトで作成されるドメインdomain1

bull 複数のドメインを作成可能 (domain2 domain3 等)

bull ドメイン毎に管理者を設定

bull 各ドメイン間は独立して管理

bull 設定変更は他のドメインに影響を及ぼさない

bull 管理者は管理コンソール等を通じてドメインを管理

bull Web 管理コンソール

bull コマンドライン管理コンソール

bull RESTful 管理チャネル

bull JMXAMX 管理チャネルdomain1

domain2

domain3

domains管理者

Copyrightcopy 2010 Oracle All rights reserved

Web 管理コンソール

bull Web ベースの管理コンソールbull httpIP_ADDRESSPORT

bull デフォルトのポート番号4848

bull 管理者のパスワード

bull パスワード無し

bull インストール時に指定

bull 管理コンソールアクセス時にロード

bull 管理コンソールとサービス提供ポート番号は独立

bull セキュアな管理が可能

bull ウィザードベースの簡単操作

12

httpIP_ADDRESS4848

Copyrightcopy 2010 Oracle All rights reserved

コマンドライン管理コンソール

bull GlassFish 管理用コマンドを提供bull $GLASSFISH_INSTALLbinasadmin

bull gt asadmin [オプション] コマンド名 [[--パラメータ 値]]

bull シェルスクリプトを記載し管理の自動化も可能

bull コマンドラインからのみ実施可能な操作bull ドメインの作成削除

bull ドメインのバックアップリストア

13

asadmin コマンドオプション

--host ドメイン管理サーバが稼働するホスト名

--port ドメイン管理サーバが稼働するポート番号

--user 管理者のユーザ名

--password 管理者のパスワード

gtasadmin create-domain ndash- help

asadmin Utility Subcommands create-domain(1)

NAME

create-domain - creates a domain

SYNOPSIS

create-domain [--help]

[--adminport adminport]

[--instanceport instanceport]

hellip

Copyrightcopy 2010 Oracle All rights reserved

RESTful 管理チャネルGlassFish v30から追加された新しい管理機能

bull RESTful による管理監視bull GlassFish v3 から追加された追加管理機能

bull HTML JSON XML フォーマットによる出力が可能

bull HTTP ヘッダ

bull Accept applicationhtml

bull Accept applicationjson

bull Accept applicationxml

bull JAX-RS アプリケーションから管理監視

bull GET メソッドで設定参照

bull POST メソッドで設定更新

14

httpIP_ADDRESS4848managementdomain

Copyrightcopy 2010 Oracle All rights reserved

RESTful管理チャネルの例

15

gt curl -u adminadminadmin -X GET -H Accept applicationjson httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

HttpListener1port8080 enabledtrue protocolhttp-listener-1

transporttcp address0000 namehttp-listener-1 jk-enabled

false thread-poolhttp-thread-pool

hellip中略

gt curl -u adminadminadmin -X POST -d port=18080 -H Accept applicationjsonhttplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1 updated successfully

bull 設定情報の取得例

bull 設定情報の更新例

Copyrightcopy 2010 Oracle All rights reserved

JMXAMXベース管理チャネル

bull JMX API を実装した Java アプリケーションで管理bull JMX リスナーポート8686

bull 管理者パスワードは CLIGUIと同じ

bull 独自管理機能の作成が可能

bull JMX コンソールを利用bull JConsole(JDK に付属)

bull MC4J

16

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 10: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のディレクトリ構造

10

bull アイコンファイル

bull 法務上必要なファイル(ライセンスコピーライト)

bull GlassFish 全般で使用するライブラリ( dtdxsd 等)

bull モジュール(各機能の jar 等)

bull OSGi フレームワークのファイル

bull サンプルアプリケーション

bull インストール時使用ファイル

bull 内蔵 JavaDB の本体

bull 内蔵 OpenMQ の本体

bull IPS コマンドツール

bull 更新ツール GUI ツールデ

bull インストール時使用

OSGi 対応により GlassFish v2x から大幅に変更

GlassFish v31 より nodeagent ディレクトリが追加予定

Copyrightcopy 2010 Oracle All rights reserved

GlassFish のドメイン

11

bull GlassFish の管理構成単位bull デフォルトで作成されるドメインdomain1

bull 複数のドメインを作成可能 (domain2 domain3 等)

bull ドメイン毎に管理者を設定

bull 各ドメイン間は独立して管理

bull 設定変更は他のドメインに影響を及ぼさない

bull 管理者は管理コンソール等を通じてドメインを管理

bull Web 管理コンソール

bull コマンドライン管理コンソール

bull RESTful 管理チャネル

bull JMXAMX 管理チャネルdomain1

domain2

domain3

domains管理者

Copyrightcopy 2010 Oracle All rights reserved

Web 管理コンソール

bull Web ベースの管理コンソールbull httpIP_ADDRESSPORT

bull デフォルトのポート番号4848

bull 管理者のパスワード

bull パスワード無し

bull インストール時に指定

bull 管理コンソールアクセス時にロード

bull 管理コンソールとサービス提供ポート番号は独立

bull セキュアな管理が可能

bull ウィザードベースの簡単操作

12

httpIP_ADDRESS4848

Copyrightcopy 2010 Oracle All rights reserved

コマンドライン管理コンソール

bull GlassFish 管理用コマンドを提供bull $GLASSFISH_INSTALLbinasadmin

bull gt asadmin [オプション] コマンド名 [[--パラメータ 値]]

bull シェルスクリプトを記載し管理の自動化も可能

bull コマンドラインからのみ実施可能な操作bull ドメインの作成削除

bull ドメインのバックアップリストア

13

asadmin コマンドオプション

--host ドメイン管理サーバが稼働するホスト名

--port ドメイン管理サーバが稼働するポート番号

--user 管理者のユーザ名

--password 管理者のパスワード

gtasadmin create-domain ndash- help

asadmin Utility Subcommands create-domain(1)

NAME

create-domain - creates a domain

SYNOPSIS

create-domain [--help]

[--adminport adminport]

[--instanceport instanceport]

hellip

Copyrightcopy 2010 Oracle All rights reserved

RESTful 管理チャネルGlassFish v30から追加された新しい管理機能

bull RESTful による管理監視bull GlassFish v3 から追加された追加管理機能

bull HTML JSON XML フォーマットによる出力が可能

bull HTTP ヘッダ

bull Accept applicationhtml

bull Accept applicationjson

bull Accept applicationxml

bull JAX-RS アプリケーションから管理監視

bull GET メソッドで設定参照

bull POST メソッドで設定更新

14

httpIP_ADDRESS4848managementdomain

Copyrightcopy 2010 Oracle All rights reserved

RESTful管理チャネルの例

15

gt curl -u adminadminadmin -X GET -H Accept applicationjson httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

HttpListener1port8080 enabledtrue protocolhttp-listener-1

transporttcp address0000 namehttp-listener-1 jk-enabled

false thread-poolhttp-thread-pool

hellip中略

gt curl -u adminadminadmin -X POST -d port=18080 -H Accept applicationjsonhttplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1 updated successfully

bull 設定情報の取得例

bull 設定情報の更新例

Copyrightcopy 2010 Oracle All rights reserved

JMXAMXベース管理チャネル

bull JMX API を実装した Java アプリケーションで管理bull JMX リスナーポート8686

bull 管理者パスワードは CLIGUIと同じ

bull 独自管理機能の作成が可能

bull JMX コンソールを利用bull JConsole(JDK に付属)

bull MC4J

16

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 11: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

GlassFish のドメイン

11

bull GlassFish の管理構成単位bull デフォルトで作成されるドメインdomain1

bull 複数のドメインを作成可能 (domain2 domain3 等)

bull ドメイン毎に管理者を設定

bull 各ドメイン間は独立して管理

bull 設定変更は他のドメインに影響を及ぼさない

bull 管理者は管理コンソール等を通じてドメインを管理

bull Web 管理コンソール

bull コマンドライン管理コンソール

bull RESTful 管理チャネル

bull JMXAMX 管理チャネルdomain1

domain2

domain3

domains管理者

Copyrightcopy 2010 Oracle All rights reserved

Web 管理コンソール

bull Web ベースの管理コンソールbull httpIP_ADDRESSPORT

bull デフォルトのポート番号4848

bull 管理者のパスワード

bull パスワード無し

bull インストール時に指定

bull 管理コンソールアクセス時にロード

bull 管理コンソールとサービス提供ポート番号は独立

bull セキュアな管理が可能

bull ウィザードベースの簡単操作

12

httpIP_ADDRESS4848

Copyrightcopy 2010 Oracle All rights reserved

コマンドライン管理コンソール

bull GlassFish 管理用コマンドを提供bull $GLASSFISH_INSTALLbinasadmin

bull gt asadmin [オプション] コマンド名 [[--パラメータ 値]]

bull シェルスクリプトを記載し管理の自動化も可能

bull コマンドラインからのみ実施可能な操作bull ドメインの作成削除

bull ドメインのバックアップリストア

13

asadmin コマンドオプション

--host ドメイン管理サーバが稼働するホスト名

--port ドメイン管理サーバが稼働するポート番号

--user 管理者のユーザ名

--password 管理者のパスワード

gtasadmin create-domain ndash- help

asadmin Utility Subcommands create-domain(1)

NAME

create-domain - creates a domain

SYNOPSIS

create-domain [--help]

[--adminport adminport]

[--instanceport instanceport]

hellip

Copyrightcopy 2010 Oracle All rights reserved

RESTful 管理チャネルGlassFish v30から追加された新しい管理機能

bull RESTful による管理監視bull GlassFish v3 から追加された追加管理機能

bull HTML JSON XML フォーマットによる出力が可能

bull HTTP ヘッダ

bull Accept applicationhtml

bull Accept applicationjson

bull Accept applicationxml

bull JAX-RS アプリケーションから管理監視

bull GET メソッドで設定参照

bull POST メソッドで設定更新

14

httpIP_ADDRESS4848managementdomain

Copyrightcopy 2010 Oracle All rights reserved

RESTful管理チャネルの例

15

gt curl -u adminadminadmin -X GET -H Accept applicationjson httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

HttpListener1port8080 enabledtrue protocolhttp-listener-1

transporttcp address0000 namehttp-listener-1 jk-enabled

false thread-poolhttp-thread-pool

hellip中略

gt curl -u adminadminadmin -X POST -d port=18080 -H Accept applicationjsonhttplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1 updated successfully

bull 設定情報の取得例

bull 設定情報の更新例

Copyrightcopy 2010 Oracle All rights reserved

JMXAMXベース管理チャネル

bull JMX API を実装した Java アプリケーションで管理bull JMX リスナーポート8686

bull 管理者パスワードは CLIGUIと同じ

bull 独自管理機能の作成が可能

bull JMX コンソールを利用bull JConsole(JDK に付属)

bull MC4J

16

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 12: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

Web 管理コンソール

bull Web ベースの管理コンソールbull httpIP_ADDRESSPORT

bull デフォルトのポート番号4848

bull 管理者のパスワード

bull パスワード無し

bull インストール時に指定

bull 管理コンソールアクセス時にロード

bull 管理コンソールとサービス提供ポート番号は独立

bull セキュアな管理が可能

bull ウィザードベースの簡単操作

12

httpIP_ADDRESS4848

Copyrightcopy 2010 Oracle All rights reserved

コマンドライン管理コンソール

bull GlassFish 管理用コマンドを提供bull $GLASSFISH_INSTALLbinasadmin

bull gt asadmin [オプション] コマンド名 [[--パラメータ 値]]

bull シェルスクリプトを記載し管理の自動化も可能

bull コマンドラインからのみ実施可能な操作bull ドメインの作成削除

bull ドメインのバックアップリストア

13

asadmin コマンドオプション

--host ドメイン管理サーバが稼働するホスト名

--port ドメイン管理サーバが稼働するポート番号

--user 管理者のユーザ名

--password 管理者のパスワード

gtasadmin create-domain ndash- help

asadmin Utility Subcommands create-domain(1)

NAME

create-domain - creates a domain

SYNOPSIS

create-domain [--help]

[--adminport adminport]

[--instanceport instanceport]

hellip

Copyrightcopy 2010 Oracle All rights reserved

RESTful 管理チャネルGlassFish v30から追加された新しい管理機能

bull RESTful による管理監視bull GlassFish v3 から追加された追加管理機能

bull HTML JSON XML フォーマットによる出力が可能

bull HTTP ヘッダ

bull Accept applicationhtml

bull Accept applicationjson

bull Accept applicationxml

bull JAX-RS アプリケーションから管理監視

bull GET メソッドで設定参照

bull POST メソッドで設定更新

14

httpIP_ADDRESS4848managementdomain

Copyrightcopy 2010 Oracle All rights reserved

RESTful管理チャネルの例

15

gt curl -u adminadminadmin -X GET -H Accept applicationjson httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

HttpListener1port8080 enabledtrue protocolhttp-listener-1

transporttcp address0000 namehttp-listener-1 jk-enabled

false thread-poolhttp-thread-pool

hellip中略

gt curl -u adminadminadmin -X POST -d port=18080 -H Accept applicationjsonhttplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1 updated successfully

bull 設定情報の取得例

bull 設定情報の更新例

Copyrightcopy 2010 Oracle All rights reserved

JMXAMXベース管理チャネル

bull JMX API を実装した Java アプリケーションで管理bull JMX リスナーポート8686

bull 管理者パスワードは CLIGUIと同じ

bull 独自管理機能の作成が可能

bull JMX コンソールを利用bull JConsole(JDK に付属)

bull MC4J

16

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 13: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

コマンドライン管理コンソール

bull GlassFish 管理用コマンドを提供bull $GLASSFISH_INSTALLbinasadmin

bull gt asadmin [オプション] コマンド名 [[--パラメータ 値]]

bull シェルスクリプトを記載し管理の自動化も可能

bull コマンドラインからのみ実施可能な操作bull ドメインの作成削除

bull ドメインのバックアップリストア

13

asadmin コマンドオプション

--host ドメイン管理サーバが稼働するホスト名

--port ドメイン管理サーバが稼働するポート番号

--user 管理者のユーザ名

--password 管理者のパスワード

gtasadmin create-domain ndash- help

asadmin Utility Subcommands create-domain(1)

NAME

create-domain - creates a domain

SYNOPSIS

create-domain [--help]

[--adminport adminport]

[--instanceport instanceport]

hellip

Copyrightcopy 2010 Oracle All rights reserved

RESTful 管理チャネルGlassFish v30から追加された新しい管理機能

bull RESTful による管理監視bull GlassFish v3 から追加された追加管理機能

bull HTML JSON XML フォーマットによる出力が可能

bull HTTP ヘッダ

bull Accept applicationhtml

bull Accept applicationjson

bull Accept applicationxml

bull JAX-RS アプリケーションから管理監視

bull GET メソッドで設定参照

bull POST メソッドで設定更新

14

httpIP_ADDRESS4848managementdomain

Copyrightcopy 2010 Oracle All rights reserved

RESTful管理チャネルの例

15

gt curl -u adminadminadmin -X GET -H Accept applicationjson httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

HttpListener1port8080 enabledtrue protocolhttp-listener-1

transporttcp address0000 namehttp-listener-1 jk-enabled

false thread-poolhttp-thread-pool

hellip中略

gt curl -u adminadminadmin -X POST -d port=18080 -H Accept applicationjsonhttplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1 updated successfully

bull 設定情報の取得例

bull 設定情報の更新例

Copyrightcopy 2010 Oracle All rights reserved

JMXAMXベース管理チャネル

bull JMX API を実装した Java アプリケーションで管理bull JMX リスナーポート8686

bull 管理者パスワードは CLIGUIと同じ

bull 独自管理機能の作成が可能

bull JMX コンソールを利用bull JConsole(JDK に付属)

bull MC4J

16

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 14: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

RESTful 管理チャネルGlassFish v30から追加された新しい管理機能

bull RESTful による管理監視bull GlassFish v3 から追加された追加管理機能

bull HTML JSON XML フォーマットによる出力が可能

bull HTTP ヘッダ

bull Accept applicationhtml

bull Accept applicationjson

bull Accept applicationxml

bull JAX-RS アプリケーションから管理監視

bull GET メソッドで設定参照

bull POST メソッドで設定更新

14

httpIP_ADDRESS4848managementdomain

Copyrightcopy 2010 Oracle All rights reserved

RESTful管理チャネルの例

15

gt curl -u adminadminadmin -X GET -H Accept applicationjson httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

HttpListener1port8080 enabledtrue protocolhttp-listener-1

transporttcp address0000 namehttp-listener-1 jk-enabled

false thread-poolhttp-thread-pool

hellip中略

gt curl -u adminadminadmin -X POST -d port=18080 -H Accept applicationjsonhttplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1 updated successfully

bull 設定情報の取得例

bull 設定情報の更新例

Copyrightcopy 2010 Oracle All rights reserved

JMXAMXベース管理チャネル

bull JMX API を実装した Java アプリケーションで管理bull JMX リスナーポート8686

bull 管理者パスワードは CLIGUIと同じ

bull 独自管理機能の作成が可能

bull JMX コンソールを利用bull JConsole(JDK に付属)

bull MC4J

16

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 15: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

RESTful管理チャネルの例

15

gt curl -u adminadminadmin -X GET -H Accept applicationjson httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

HttpListener1port8080 enabledtrue protocolhttp-listener-1

transporttcp address0000 namehttp-listener-1 jk-enabled

false thread-poolhttp-thread-pool

hellip中略

gt curl -u adminadminadmin -X POST -d port=18080 -H Accept applicationjsonhttplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1

httplocalhost4848managementdomainconfigsconfigserver-confignetwork-confignetwork-listenersnetwork-listenerhttp-listener-1 updated successfully

bull 設定情報の取得例

bull 設定情報の更新例

Copyrightcopy 2010 Oracle All rights reserved

JMXAMXベース管理チャネル

bull JMX API を実装した Java アプリケーションで管理bull JMX リスナーポート8686

bull 管理者パスワードは CLIGUIと同じ

bull 独自管理機能の作成が可能

bull JMX コンソールを利用bull JConsole(JDK に付属)

bull MC4J

16

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 16: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

JMXAMXベース管理チャネル

bull JMX API を実装した Java アプリケーションで管理bull JMX リスナーポート8686

bull 管理者パスワードは CLIGUIと同じ

bull 独自管理機能の作成が可能

bull JMX コンソールを利用bull JConsole(JDK に付属)

bull MC4J

16

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 17: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

Oracle GlassFish Server v3x の詳細

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 18: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のアーキテクチャOSGi ランタイム上で稼働

18

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 19: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

OSGi モジュールサブシステムの概要

bull モジュール層bull モジュール=OSGi バンドル

bull 拡張メタデータを持つ jar ファイル

bull モジュールのロード

bull 自身のクラスのロード

bull 外部パッケージのインポート等

bull ライフサイクル層bull インストールアンインストール起動停止等の処理を担当

bull サービス層bull サービスは一般的な Java オブジェクト

bull サービスレジストリへ登録解除

bull サービスレジストリから取得破棄

19

Java SE

モジュール層

ライフサイクル層

サービス層

OSGi

バンドル

クラスロード

起動停止

登録解除

取得破棄

管理

インストールアンインストール

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 20: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 とモジュールサブシステム

bull 2 つのモジュールサブシステムを採用bull GlassFish OSGi ランタイム

bull OSGi Release 4 に準拠したランタイムを利用可能

bull 組み込まれているランタイムは Apache Felix

bull Knopflerfish Equinox 等も利用可能

bull OSGi ランタイム無しでも動作可能 (static mode)

bull 別途 OSGi の管理ツール(CLIGUI)も利用可能

bull GlassFish Kernel (HK2 Hundred-Kilobyte Kernel)

bull JSR-277 ベースのモジュールサブシステム

bull Java SE 7 へ組み込まれる予定だったため Java SE 7 対応として HK2 を実装rarr(Java SE 7 でJSR-277は不採用)

bull OSGi 対応前は全ての機能は HK2 のモジュールとして作成

bull OSGi ランタイムだけでは補えないモジュール管理機能を担当

20

Java SE

OSGi

HK2

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 21: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

GlassFish における OSGi と HK2 の役割

bull OSGi ランタイムbull デフォルト Apache Felix を使用

bull 他のOSGi ランタイムも動作可能

bull OSGi と HK2bull モジュール層ライフサイクル層に

OSGi ランタイムを使用

bull サービス層に HK2 を使用し任意の OSGi バンドルと相互運用可能

bull GlassFish のモジュールbull 全ての GlassFish モジュールは

HK2 API を使って実装されたOSGi バンドル

bull 任意の OSGi バンドルと連携可能

bull Resource で DI が可能

21

HK2

サービス層

GlassFish機能OSGi バンドルとして実装されたHK2 モジュール

モジュール層

ライフサイクル層

サービス層

任意の

OSGi バンドル

OSGi

ランタイム

Java SE

Service

Mapper

Web Container

EJB Container

Web Console

CLI

Web Console

CLI

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 22: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

OSGi の採用によるメリット

GlassFish の拡張可能ポイント

コマンドライン 独自 CLI 管理コマンドの作成(独自追加コンテナの起動停止等)

Web 管理コンソール Web 管理コンソールの追加 (独自の監視画面等)

監視 独自監視項目に対する整形フォーマットでの出力等

コンテナ 独自コンテナの追加(スクリプト言語用のコンテナ追加等)

22

bull 動的なモジュールの追加削除が可能bull 再起動は不要

bull 拡張可能なアプリケーションサーバbull 独自モジュールを作成し管理機能に組み込み可能

bull 任意の OSGi バンドルを利用可能bull Spring DM(OSGi) と Java EE の連携も可能

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 23: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v3 のパッケージ管理

bull IPS (Image Packaging System pkg (5)) の採用

23

bull OpenSolaris の成果を利用bull Pythonを使用

bull Zipファイルとして管理

bull GlassFish の更新が容易bull インストール済み

bull 入手可能なアドオン

bull 入手可能なアップデート

bull OSGi と IPSbull IPS はネットワーク越しの分散パッケージ管理が可能

bull IPSはバージョン管理が容易Swing の GUI ツールとコマンドベース ツール

$ GLASSFISH_INSTALLpkgbinpkg list

NAME (PUBLISHER) VERSION STATE UFIX

ant (contribglassfishorg) 171-06 installed ----

felix 202-0 installed u---

glassfish-appclient 30-742 installed u---

glassfish-branding 30-742 installed u---

glassfish-branding-gui 30-742 installed u---

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 24: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

GlassFish と Grizzly

bull Grizzly とはbull ネットワークサーバアプリケーションのオープンソースプロジェクト

bull Java NIO を採用し Java NIO の複雑なコーディングを隠蔽

bull GlassFish の HTTP サーバ実装プロジェクトとして 2004年開始

bull TCPUDPSSL 等マルチプロトコルに対応しハイパフォーマンス

bull ハイパフォーマンスなバッファの使用とバッファ管理を実施

bull Direct Byte BufferHeap Byte BufferView Byte Buffer

bull ハイパフォーマンスなスレッドプールを選択可能

bull GlassFish にバンドルされる Grizzly のバージョン

bull GlassFish v21x = Grizzly 10x

bull GlassFish v3x = Grizzly 1918 or later

bull GlassFish v3 より OSGi モジュールとして実装

bull GlassFish v21(Grizzly 10x) の実装からアーキテクチャを大幅に変更

24

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 25: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

Grizzly-Kernelネットワークサービスの内部実装bull GrizzlyServicesbull 起動時 HK2 からServiceで呼び出し

bull domainxml の lthttp-servicegt から設定

bull GrizzlyProxybull GrizzlyServicesから生成

bull HTTP リスナー毎に1つ生成

bull ContainerMapperbull コンテキストへのリクエストに対する適切なコンテナの選択

bull jsp -gt CoyoteAdapter

bull 4848 -gt AdminAdapter

bull GrizzlyProbePipelinebull 監視可能なスレッドプール

25

HK2 Grizzly-Kernel

domainxml

NIO Framework

Grizzly HTTP

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 26: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

Grizzly のリクエスト処理動作

bull リクエスト受信時bull RequestResponse オブジェクトの生成

bull ContainerMapperservice(reqres)の実行

bull 処理内容bull リクエスト内容(バイト)のデコード

bull (XSSの予防DoS攻撃の予防)

bull デコードされたリクエストに対して適切な Adapter へディスパッチ

bull Adapterservice() へ処理を移譲

26

ContainerMapper

Admin (CLIGUI)

Rail Container

Web Container

CoyoteAdapter

JRubyAdapter

AdminAdapter

bull ContainerMapper 導入メリットbull 単一の HTTP リスナに対してアクセスされるコンテキスト毎に適切なコンテナ(WebJRubyGrailsその他)をディスパッチ可能

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 27: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

27

リクエストキュー

Request 4

Request 5

同期 IO (Blocking)

Thread-1

Thread-2

Thread-3

リクエストキュー

1処理に1スレッドを占有 スレッド内で複数の処理を分割

Thread-1

Thread-2

Thread-3

B B

B

B

B

B

非同期 IO (Non Blocking)

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 28: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

Non Blocking IO(Java New IO)対応

bull Comet アプリケーションbull 適用例株価情報配信オークションチャット等

28

従来のWebアプリケーション

切断

切断

リクエスト レスポンス

Comet アプリケーション

リクエスト

streaming

Event

Event

Event

Event

レスポンス

Event

非同期 IO は Comet や DB 等の長時間処理が必要な場合に有効

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 29: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

GlassFish 組み込み可能コンテナ

bull GlassFish Embedded Server APIを提供bull EJB 31 Embeddable API

bull Java SEプログラム内からGlassFishを起動

bull Maven Plug-inの提供bull Apache Mavenとの連携

bull JUnit による容易なテスト

bull デスクトップアプリケーションでEJB 機能を利用可能

29

Java SE

Transaction

Manager

Security

System

Messaging

Engine

Embedded Container

組み込み可能コンテナの概念

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 30: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

GlassFishの今後

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 31: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

今後のロードマップ

bull GlassFish v31 ndash 2010bull クラスタ中央集中管理機能

bull 高可用性セッションリプリケーション

bull Coherenceのサポート等

bull GlassFish v32 ndash 2011bull クラスタ機能の改良

bull 仮想化サポート

bull Java EE 7のEarly Access 機能を提供

bull GlassFish v4bull Java EE 7対応

31

2010年末

Ver 31

2011年

Ver 32

未定

Ver 4

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 32: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31の新機能

bull クラスタ機能bull クラスタ対応

bull SSH プロビジョニング(Node Agentの廃止)

bull アプリケーションのバージョニング対応

bull ローリングアップグレード機能の提供

bull ドメイン管理サーバの高可用性

bull HTML5 WebSocket 対応

bull 管理監視機能の強化bull DTraceを使用したモニタ

bull WebLogic との互換性を提供bull WebLogicのデプロイメント記述子をサポート

32

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 33: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v211のクラスタ機能

bull ノードエージェント方式bull 各物理ノードにGlassFishをインストール

bull 各物理ノードにノードエージェントを作成

bull ノードエージェントの起動停止は各マシン上で実施

bull ドメイン管理サーバからで各ノードエージェントのインスタンスを管理

33

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 34: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

GlassFish v31のクラスタ新機能

bull SSH プロビジョニング方式bull ドメイン管理サーバ内に SSH

Client ライブラリを統合

bull Hudson(Trilead-ssh2)の成果物を利用

bull 各物理ノードでsshdを起動

bull システムの初期化とドメイン管理サーバへの登録

bull GlassFish v31 M3 より EA 提供

34

SSH Client

sshd sshd

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 35: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

まとめ

bull Java EE 6 の参照実装bull Java EE 6 の仕様に完全準拠

bull 軽量高速起動

bull かんたん開発かんたん管理

bull プロファイルに対応

bull Webプロファイル版Full Platform プロファイル版を提供

bull 先進的アプリケーションサーバbull RESTful の管理インタフェースを提供

bull OSGiモジュールサブシステム対応

bull 進化した非同期 IO サーバ

bull かんたんな操作bull unzipによるインストール(Tomcatと同様)

bull Oracle JRockit VM 正式対応

35

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 36: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved

Copyrightcopy 2010 Oracle All rights reserved 37

Page 37: Glass Fishv3 Detail

Copyrightcopy 2010 Oracle All rights reserved 37