WebBeansからCDI、そしてSeam 3へ
まず、用語の説明をちょっと。
JSR-299: CDI (Contexts and Dependency Injection 1.0) Weld: CDI 参照実装 Seamn 3: CDI上に構築されるパッケージ集
従来のWeb Beansは仕様書としてはCDIへ、参照実装としてはWeldに改名になりました(Weld 1.0.0はリリース済み)。
Seam 3はCDI実装上で動作するパッケージ集として開発が進められています。このパッケージはCDIで定義されたPortable ExtensionsというCDIの機能を拡張するための仕様の上に作られるので、任意のCDI上で動作するはずです。CDIはフレームワークを統合するための仕様で、Portable Extensionsは外部フレームワークとの統合コードを実現するための標準的なプラグイン仕様という訳です。
Seam 2までは、新しいフレームワークを統合するたびにSeam実装が肥大化していきました。Seam 3ではコアがCDIとして標準化され、その上の統合ライブラリはCDI Portable Extensionsという標準のプラグインモジュールとしてコアからは分離されました。今後はこれらのプラグインモジュールの着脱や用途に応じたスリム化は従来よりも格段に容易になるでしょう。
このようなSeam 3のアーキテクチャが意味することは、Seamを拡張することが従来よりも簡単になるということです。自社フレームワークをSeamのフレームワークで統合したいと思っても、アノテーションを追加するなどのSeamの拡張ではありませんでした。素晴らしいのは、こうして作った自社拡張モジュールがCDIという標準の上で移植性を保ったまま開発することができるということです。
CDI/Weld Resources
CDI (JSR 299: Contexts and Dependency Injection for the Java EE platform)
CDI 1.0 Spec
http://jcp.org/en/jsr/detail?id=299
CDI 1.0 Javadoc
http://docs.jboss.org/cdi/api/1.0/index.html
CDI 1.1 Wishlist
http://www.seamframework.org/Weld/CDIWishlist
CDI Presentations
http://www.seamframework.org/Community/Events
Weld (CDI Reference Implementation)
Weld
http://www.seamframework.org/Weld
Weld Reference Guide
http://docs.jboss.org/weld/reference/1.0.0/en-US/html/
Seam 3
Seam3 Overview
http://www.seamframework.org/Documentation/Seam3Overview
Portable Extensions Package
http://www.seamframework.org/Weld/PortableExtensionsPackage
Portable Extensions
Annotation(sample1), Bean Registration(sample2)
http://relation.to/Bloggers/CDIPortableExtensionExamples
Injection
http://relation.to/Bloggers/AnotherNicePortableExtension
Managed Persistence Context
http://seamframework.org/Community/HowDoIGetAJPAEntityManagerReferenceInWeld
Portable Extensions Guide (See. Chap.26)
http://seamframework.org/Community/UpdatedWeldReferenceWithGuideToPortableExtensions