第19回オープンラボ岡山に参加したので、メモを残しておきます。
色々と抜けてたり、間違いもあると思いますが、参考程度に。
- 昨日までは Tomcat 今日からは GlassFish
GlashFishがすごいらしい。
http://d.hatena.ne.jp/t_yano/20101227
Tomcatだと、色々なフレームワークが必要で、単体では使っていない。
→実は事足りてないんじゃないのか?
→GlashFishだといろんなフレームワーク等も含まれている。
Tomcatだと運用が大変じゃないか?
→1台ずつマシンにログインして設定が必要。
→GlashFishだと、1台のマシン(管理サーバ)にアクセスすれば全て管理可能。
TomcatユーザにおくるGlashFishのすすめ
1. 軽量
2. インストールが簡単(Zipを展開すればOK)
3. IDEとの連携が簡単
Eclipseプラグイン、NetBeansバンドル
GlashFish v3.1 vs Tomcat 7
・2011/01 Tomcat 7 安定版リリース、サポートなし
・2011/02 v3.1 本番向け、サポート有り
・2011/07 v3.1クラウド向け、Java SE 7
オープンソース版を使っても、製品版にアップグレードが可能。
再配備時にセッションを持続させる事ができる。
・オプション-keepSessions=trueに設定
GlashFishにおけるOSGiとHK2の役割
OSGiランタイム
・デフォルトApache Felixを使用(他のランタイムも動作する)
OSGiの採用によるメリット
・動的なモジュールの追加、削除
・拡張可能なアプリケーションサーバ
・任意のOSGiバンドルを利用可能
Grizzly
・ネットワークサーバアプリケーションのOSSプロジェクト
・Java NIOを採用
・サーバエンジンの実装
・Non Blockingの通信に対応(少ないスレッドで多くのリクエストを処理できる)
GlashFishの新機能について
・アプリケーションバージョンニング
→同一アプリケーションの複数配備
→asadminでバージョンの切り替え、有効なバージョンの確認も可能
・自己増殖クラスタ
→対象ノードへのインストールはSSH経由(SSHのデーモンとJDKがあれば可能)
自分自身をZipで固めてインストール
・WebSocketへの対応
→今までのやり方よりも、パフォーマンスが良い。
Java EE 6のベストセラー本もある。
まとめ:
・まずはお試し下さい。
質問:
・製品版GlashFishのサポート料は?
→パートナー経由での販売をしているので、パートナーに問い合せて下さい。
→WebLogicは大規模環境、GlashFishは先進性を求める時に。
JBoss AS7について
・起動が早い。(1.6秒)
・超軽量
・起動に必要なメモリ=12M
・Tomcat7は=8M。(ただし、サーブレットコンテナしか入っていない)
・管理容易性の向上
・設定ファイル(単一)
・API、GUI、CUIを容易
・作り直した理由
・クラウド前提
・Amazon EC2などを使ってみても、遅い。
・スタンドアロン
・ドメイン
・デモ
・2.7秒で起動(alpha3、少し汚れている)
・1.8秒で起動(beta4、スナップショット)
・管理画面はGWTベース
・arquillian(JBoss7から提供されるテストフレームワーク)
・JUnitのテストで簡単に記述が可能になる。
・JBoss Modules
・モジュール=JARを指す
・階層型クラスローダの問題
・上から実行するか、下から実行するか、両方動かすと簡単にデッドロック?
・スレッドコンテキストクラスローダ
・JBoss MSC
・JBoss Moduler Service Container
・AS7の新しいカーネル
質問:
・Amazon EC2での稼働実績などは?
→JBoss AS7のリリースがまだなので、実績はないが、10秒ぐらいでいけるのでは?
Java EE 6の詳細
・今後は本番環境へ
・今までは、お試しレベルだった。
・メインテーマ:開発生産性の向上
・仕様の削減
・古く使われなくなったAPIの整理
・コンポーネントのオプション化
・Java EE7で削除される可能性
・JAX-RPC→JAX-WS
・EJB Entity Beans→JPA
・JAXR
・JSR-88
・統合開発環境…
・Managed Bean 1.0
・@javax.annotation.ManagedBeanを指定
・コンテナによって管理
・他のJava EE コンポーネントのベース
・呼び出し元と同じスレッドで事項
・代表的なアノテーション
・@Resource
・@PostConstruct
・@PreDestroy
・JSR-250を参照
・Interceptors 1.1の使用
・自身のインターセプタクラスの作成
・Servlet 3.0
・web.xmlのオプション化
・アノテーションを使う。
・@WebServlet{name="hello"…}
・拡張性
・設定ファイルによる拡張
・web-fragments.xml
・サードパーティフレームワークの追加が容易
・プログラムによる拡張
・マルチパート対応
・@MultipartConfig
・非同期処理のサポート
・非同期リクエスト処理用のプログラムモデル
・長時間処理が必要なリクエストに有効
・Async用アノテーションを追加
・@WebServlet(asyncSupported=true)
・AsyncContext aCtx = req.startAsync(req, res);
・セキュリティの拡張
・認証/ログイン/ログアウト機能
・JavaServer Faces 2.0
・テンプレート機能
・Ajax対応
・JSFの仕様でJavaScript APIが定義
・<f:ajax execute="productname"…
・1行で対応可能
・ブックマーク可能なURL
・EJB 3.1
・JSR-318
・warファイルにEJBを含める事ができるようになった。
→まとめ方を考える必要がなくなる(EARなのか、WARなのか)
・Lite
・Full
・Lite + …
・標準化された Global JNDI名
・アプリケーションサーバによって、名前が違っていた。
・Java EE 6から
・JNDI名が標準化される。
・組み込み可能なEJBコンテナ
・javax.ejb.jar
・その他
・タイマーサービス
・Singleton Session Bean
・JVMをまたがらない、個々のJVMでのSingletonを保証
・JPA 2.0
・EJBの仕様から独立
・モデリングの強化
・@ElementCollection
・@CollectionTable(name="NICNAMES")
・組み込み可能型コレクション
・MapのCollection
・Criteria API
・クエリの制御をJavaオブジェクトで制御
・CriteriaBuilder
・EntityManager#getCriteriaBuilder()
・Metamodel API
・型チェックが強力
・コンパイル時に属性の有無、型チェックを実施
・JAX-RS 1.1
・Bean Validation 1.0
・アプリケーション中で宣言的なバリデーションが可能
・DI 1.0/CDI 1.0
・beans.xmlを必ず配置する。(デフォルト無効)
・Java EE 7に含まれる技術
・JPA 2.1
・JAX-RS2.0
・JMS 2.0
・JavaServer Faces 2.2
・WebTier
・HTML5
・WebSocket
・JSON API
質問:
・プロファイルの提供で、Webプロファイル以外に何かあるか?
→現時点ではWebプロファイルかFullしかない。
・アノテーションが増えたのは良いが、判別するためには、全クラスを
読み込んでおく必要があるので、遅いのでは?
→アノテーションスキャンは遅いです。
ただし、index化したりして早くする仕組みはあるだろう。
CDIを乗りこなせ
・JSR-299
・参照実装=Weld
・Portable Extension
・implements Extension
・Extensionは中身が空のインターフェイス
・Seam Catch
・例外ハンドリングを提供
・例外が発生したら、メソッドを実行されるようにする。
・Seam Faces
・JSFのフェーズコールバック
・Seam Solder
・はんだづけ
・Expression Languageを提供
・Seam Forge
・シェル環境を提供
・鍛冶場
と、ここで、MacBookProのバッテリーが残り少なくなったので
ここまででメモは終わり。
Desireでテザリングをしながらバッテリー駆動だと4、5時間程度で
残りがやばくなるようです。(だいぶ余裕を持って電源を切ったかもしれない(?))