jboss as7 rev3

43

Upload: nekop

Post on 18-Jan-2015

1.112 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: JBoss AS7 rev3
Page 2: JBoss AS7 rev3

JBoss AS7#@*%ing fast.

Red HatSenior Software Maintenance Engineer

Takayoshi Kimura

Page 3: JBoss AS7 rev3

JBoss AS 7

• 歴史• 概要• デモ• JBoss Modules

• スタンドアロンとドメイン• まとめ

Page 4: JBoss AS7 rev3

History

• JBoss AS7– 2011-07

• JBoss AS 6.0– 2010-12-28

• JBoss AS 5.1– 2009-05-23

• JBoss AS 5.0– 2008-12-05

• JBoss AS 4.2– 2007-05-11

• JBoss AS 4.0– 2004-09-20

• JBoss AS 3.2– 2003-06-02

• JBoss AS 3.0– 2002-05-29

Page 5: JBoss AS7 rev3

History

• 1999 年 JBoss 始動• 2001 年 JBoss Group 設立• 2006 年初め、 Oracle による買収

– 失敗。 Oracle は 2008 年に BEA 買収• 2006 年 4 月 10 日 Red Hat による買収

– 成立

Page 6: JBoss AS7 rev3

JBoss AS7 の概要

• Java EE 6 アプリケーションサーバ– Web プロファイルサポート– 7.1 で Full プロファイルサポート予定– Full はあまり需要 / 人気が高くはないので

後回し

Page 7: JBoss AS7 rev3

JBoss AS7 の概要

• 開発アプローチ変更– 既存の資産である AS6 を一旦考慮から外

して要件やユーザストーリーを洗い出し• そしてメジャーリライト

– 「こんなこといいな♪できたらいいな♪」を全て実現するために

– AS6 とは異なる新しいカーネルの開発

Page 8: JBoss AS7 rev3

JBoss AS7 の 3 つの特徴

Page 9: JBoss AS7 rev3

超高速

Page 10: JBoss AS7 rev3

超高速 - 起動時間の比較

• JBoss AS7– 1.6 秒

• JBoss AS6– 12.0 秒

• JBoss AS 5.1– 19.0 秒

• JBoss AS 4.2– 6.2 秒

• JBoss EAP 5.1– 15.0 秒– 起動ではなくラ

ンタイムの速度に最適化

• Glassfish 3.1– 3 秒– JBoss AS7 出現

までは最速

Page 11: JBoss AS7 rev3

超高速 - 起動時間の比較

• 計測に用いたラップトップのスペック– Dell Latitude E6320– Intel(R) Core(TM) i7-2620M CPU @

2.70GHz / 8GB mem / 7200rpm HDD– Fedora 15 (Lovelock) 64-bit– OpenJDK (IcedTea6 1.10.2) (fedora-

58.1.10.2.fc15-x86_64)

Page 12: JBoss AS7 rev3

超軽量

Page 13: JBoss AS7 rev3

超軽量

• 起動に必要なメモリは 12M– 64bit 上での実績– 32bit だともう少し低いかも

• Tomcat 7.0.14 は 8M で起動する– 機能セットの大きさがかなり違うので妥当

• Glassfish 3.1 は 32M では起動しない– OutOfMemoryError

Page 14: JBoss AS7 rev3

かんたん

Page 15: JBoss AS7 rev3

管理容易性の向上

• 豊富で洗練されたマネジメントインタフェース– シンプルな単一の設定ファイル– Java API– Web API– GUI Web 管理コンソール– CUI

Page 16: JBoss AS7 rev3

ドキュメントの刷新と拡充

• スタートガイド• アプリケーション開発スタートガイド• 管理ガイド• 開発者ガイド• Java EE 6 チュートリアル• 高可用性ガイド• AS7 拡張ガイド

Page 17: JBoss AS7 rev3

デモ

• 起動• トップページ• 管理 GUI• 管理 CUI

• 設定ファイル

Page 18: JBoss AS7 rev3

JBoss Modules

Page 19: JBoss AS7 rev3

JBoss Modules

• モジュール?– 一般的な単語– 外見上は jar

Page 20: JBoss AS7 rev3

JBoss Modules

• モジュールベースクラスローディング環境

• 特定のモジュールの Main クラスとして指定されているクラスの main メソッドの呼び出しを行う

• シンプル、かんたん• 超高速スレッドセーフなクラスローダ

実装を提供

Page 21: JBoss AS7 rev3

階層型クラスローダの問題

• 複数のクラスローダでクラス共有– 共通の親クラスローダ上に配置しかない– 「配置」という行為が問題の種となる

• 移譲モデル– 階層をどのように利用するか– parent-first と child-first– 混ぜると簡単にデッドロックする– もっと複雑な移譲モデルも

Page 22: JBoss AS7 rev3

モジュールベースクラスローダ

• 階層型ではなくグラフ型

Page 23: JBoss AS7 rev3

モジュールベースクラスローダ

• マニフェストで import, export といった移譲関係を定義– import: モジュール環境のこのパッケージ

を使います– export: 自分はこのパッケージをモジュー

ル環境へ提供します• 階層型では移譲関係は「配置」と「ク

ラスローダの移譲モデル」という二つの要素により決定されていた

Page 24: JBoss AS7 rev3

なにがうれしいの?

• 見えるべきクラスが見える• 見えないべきクラスが見えないように

– コンテナの依存ライブラリなど• ライブラリの競合問題を大幅に改善

Page 25: JBoss AS7 rev3

JBoss Modules と OSGi

• モジュールベースクラスローディングモデルについては OSGi も同じ

• OSGi は「サービス」やより上位のいろいろな機能を定義するなど、もっとリッチ ( 言い方を変えると複雑 ) な環境を定義したもの

• OSGi はバンドル

Page 26: JBoss AS7 rev3

JBoss Modules と OSGi

• JBoss OSGi ?– JBoss Modules 上に OSGi の機能を提供し

、 OSGi バンドルのデプロイを可能に– JBoss AS が OSGi 環境で動いているわけ

ではない• Java 8 のモジュール環境は?

– JSR-297 Improved Modularity Support– まだまだリリースされません– OSGi と同じく JBoss Modules 上で動く

Page 27: JBoss AS7 rev3

モジュール時代のお約束

• スレッドコンテキストクラスローダからのクラスロードを最初に試行するのはダメ– Thread.currentThread().getContextClassLo

ader()

• なぜ?– 大抵単に間違ってる。本当に必要?– モジュールクラスローディングを壊す

Page 28: JBoss AS7 rev3

JBoss MSC

• JBoss Modular Service Container

• AS7 の新しいカーネル– AS5, 6: JBoss Microcontainer (POJO)– AS3, 4: JBoss Microkernel (JMX)

• 軽量であり、サービスの組み立てはMicrocontainer より 15 倍くらい速い– Microcontainer は AOP などなんでもでき

る機能豊富コンテナだった

Page 29: JBoss AS7 rev3

スタンドアロンとドメイン

Page 30: JBoss AS7 rev3

スタンドアロンとドメイン

• スタンドアロン– ふつう

• ドメイン– 複数 VM 、複数 JBoss インスタンスをま

とめて管理

Page 31: JBoss AS7 rev3

ドメイン

Page 32: JBoss AS7 rev3

起動されるモジュール

• スタンドアロン– org.jboss.standalone.server

• org.jboss.as.server.Main

Page 33: JBoss AS7 rev3

起動されるモジュール

• ドメイン– org.jboss.as.process-conroller

• org.jboss.as.process.Main

– org.jboss.as.host-controller• org.jboss.as.host.controller.Main

– org.jboss.as.server• org.jboss.as.server.DomainServerMain

Page 34: JBoss AS7 rev3

ドメイン用語

• ドメイン– 複数のホストおよびサーバを管理するた

めの枠組み• ドメインコントローラ

– ホストやサーバのマネージャ

Page 35: JBoss AS7 rev3

ドメイン用語

• プロセスコントローラ– プロセス起動停止を行う Java プロセス– ホストコントローラを起動する

• ホストコントローラ– ホスト = 物理、もしくは仮想マシン– 単一のホストを管理するプロセス– ドメインコントローラを兼務

Page 36: JBoss AS7 rev3

ドメイン用語

• サーバグループ– 同じ設定 / アプリを持つべきサーバのグル

ープ• サーバ

– 単一の JBoss AS インスタンス– ドメイン管理モデルではサーバは設定を

ほとんど持たない

Page 37: JBoss AS7 rev3

テスト容易性

Page 38: JBoss AS7 rev3

テスト容易性

• Java EE はテストサポートが貧弱• Java EE はコンテナが重い

Page 39: JBoss AS7 rev3
Page 40: JBoss AS7 rev3

Arquillian

• Java EE テスティングフレームワーク• JBoss AS 7 はコンテナが超軽量

Page 41: JBoss AS7 rev3

JBoss AS 7 まとめ

• Java EE 6

• 超高速• 超軽量• 管理容易性• テスト容易性

Page 42: JBoss AS7 rev3

References

• AS7 管理ガイド– https://docs.jboss.org/author/display/AS7/Admin+Guide

• JBoss World 2011– http://www.redhat.com/summit/2011/presentations/jbossworld/

• JUDCon 2011– http://www.jboss.org/events/JUDCon/presentations.html

Page 43: JBoss AS7 rev3