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
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という標準の上で移植性を保ったまま開発することができるということです。
POファイルの統計情報
Seam 2.2.0GAの翻訳を開始するに際し、Seam 2.1.0.GAとの差分を調べてみることにしました。POファイルの統計情報がmsgfmtコマンドで取れることが分かったので簡単なシェルスクリプトを書きました。
#!/bin/sh # # postat.sh # usage: ./postat.sh > postat.txt 2>&1 # LANG=C for p in *.po do echo -n $p echo -n ": " msgfmt --statistics $p done
Annotations.po: 283 translated messages, 6 fuzzy translations. Author_Group.po: 29 translated messages, 1 fuzzy translation. Book_Info.po: 2 translated messages. Cache.po: 49 translated messages, 4 fuzzy translations. ClusteringAndEJBPassivation.po: 0 translated messages, 76 untranslated messages. Components.po: 286 translated messages, 6 fuzzy translations, 7 untranslated messages. Concepts.po: 198 translated messages, 8 fuzzy translations, 2 untranslated messages. Configuration.po: 169 translated messages, 23 fuzzy translations, 27 untranslated messages. Controls.po: 187 translated messages, 15 fuzzy translations, 18 untranslated messages. Conversations.po: 178 translated messages, 19 fuzzy translations, 11 untranslated messages. Dependencies.po: 131 translated messages, 9 fuzzy translations. Drools.po: 27 translated messages, 7 fuzzy translations, 7 untranslated messages. Elenhancements.po: 51 translated messages. Events.po: 177 translated messages, 35 fuzzy translations, 5 untranslated messages. Excel.po: 251 translated messages, 138 fuzzy translations, 7 untranslated messages. Feedback.po: 2 translated messages. Framework.po: 77 translated messages, 3 fuzzy translations. Getting_Started_With_JBoss_Tools.po: 66 translated messages, 3 fuzzy translations, 1 untranslated message. Gettingstarted.po: 74 translated messages, 8 fuzzy translations. Glassfish.po: 85 translated messages, 23 fuzzy translations, 2 untranslated messages. Groovy.po: 34 translated messages. Guice.po: 0 translated messages, 21 untranslated messages. Gwt.po: 30 translated messages, 1 untranslated message. Hsearch.po: 18 translated messages, 3 fuzzy translations, 9 untranslated messages. I18n.po: 85 translated messages, 1 fuzzy translation, 1 untranslated message. Itext.po: 267 translated messages, 59 fuzzy translations, 4 untranslated messages. Jbpm.po: 124 translated messages, 3 fuzzy translations, 1 untranslated message. Jms.po: 60 translated messages, 10 fuzzy translations, 7 untranslated messages. Mail.po: 121 translated messages, 8 fuzzy translations. Oc4j.po: 174 translated messages. Performance.po: 0 translated messages, 7 untranslated messages. Persistence.po: 94 translated messages, 3 fuzzy translations. Preface.po: 38 translated messages, 3 fuzzy translations. Remoting.po: 168 translated messages, 2 fuzzy translations, 10 untranslated messages. Revision_History.po: 2 translated messages. Rss.po: 22 translated messages, 15 fuzzy translations. Seam_Reference_Guide.po: 0 translated messages. Security.po: 653 translated messages, 11 fuzzy translations, 25 untranslated messages. Spring.po: 87 translated messages, 3 fuzzy translations. Testing.po: 86 translated messages, 8 fuzzy translations, 1 untranslated message. Text.po: 39 translated messages, 6 untranslated messages. Tools.po: 7 translated messages, 1 fuzzy translation. Tutorial.po: 324 translated messages, 43 fuzzy translations, 2 untranslated messages. Validation.po: 30 translated messages, 1 fuzzy translation. Version_Info.po: 0 translated messages. Weblogic.po: 223 translated messages, 2 fuzzy translations. Webservices.po: 50 translated messages, 14 fuzzy translations, 27 untranslated messages. Websphere.po: 117 translated messages, 57 fuzzy translations, 7 untranslated messages. Wicket.po: 37 translated messages, 3 fuzzy translations, 25 untranslated messages. Xml.po: 95 translated messages, 8 fuzzy translations. master.po: 0 translated messages.
Jim Webber on "Guerilla SOA"
そもそもゲリラSOAのインタビューですが、中盤で良いことが書いてあります。
SOAで重要なのはサービスとメッセージ。オペレーションはビジネスの観点からは見えない。
So you mentioned services and messages as two abstractions? What about operations?
Operations are an abstraction which I do not believe exists in a service oriented architecture. They may well exist in your implementation of a service but that is nothing that I want to share with you. This is a technical detail which is my business inside my implementation.
タイプやオペレーションを意識した連携は密結合につながるということです。このことは、もっともっと強調されてよいと思います。SOAではWebサービスは実装手段であって、それはサービスという観点からはどうでもよいことです。