Programmatic CDI

このエントリはJavaEE Advent Calendar 2012 第16日目のエントリです。
昨日は @kokuzawa さんの「Point-to-Point on JMS」でした。
明日は @yumix_h さんの「JAX-RSでファイルアップロード!」です。

今日のテーマはCDI 1.0 (JSR 299: Contexts and Dependency Injection for the Java EE platform)です。特にAPIからCDIを使う方法について書き留めたいと思います。なお、動作検証はMac OS X 10.8.2 + JDK 1.7.0_05 + GlassFish 3.1.2 で行っています。

CDIの基本

まずはCDIの基本的な使い方について、簡単にまとめておきましょう。キーになるのはスコープとインジェクションポイントです。

スコープ

スコープとは、インスタンスの生存期間のことです。それぞれのアノテーションでクラス、あるいはプロデューサフィールド/メソッドをマークすることによって表します。

// Userクラスをセッションスコープとしてマーク
@SessionScoped
public class User implements Serializable {

}

予め用意されているスコープは

  • @ApplicationScoped
  • @SessionScoped
  • @ConversationScoped (with JSF)
  • @RequestScoped

の4種類です。意味は名前からだいたい想像がつくと思いますが、ConversationScopeは少し特殊かもしれませんね。これはJSFと共に使用するもので、ブラウザタブ毎に複数リクエストに渡って維持することのできるスコープです。 続きを読む Programmatic CDI

r53tools-1.0.0を公開

AWSのDNSサービスにAmazon Route 53なるものがあります。最近多数のドメインをそのAmazon Route 53へ設定しなければならないことがあったため、CLIで処理をしたくなりました。

AWSに関するCLIとしては以前s3toolsを書いていたので、割合簡単に書けることも分かっていました。そこで再び自分でCLIを書いてみました。

r53tools: Amazon Route 53 CLI

これを修正BSDライセンスで公開します。動作環境はJavaSE6.0以降です。

機能としては、ゾーンの作成/一覧・レコードの作成/一覧/削除、を備えています。ゾーンの削除はAWSのWebコンソールから実行した方が良いように思ったので、今のところ用意しませんでした。

例によってLinux/Mac用のshスクリプトしか書いていません(Windows用を書いてもテストが・・・)。s3toolsの方も機能追加しようと思いつつ出来てないですが、そのうちやります。

ところで、たいてい私は繰り返しが20程度の数になったら楽をできないか考え始めるのですが、この20って少ないんでしょうかね?

JavaOne 2012 San Francisco レポート(5日目)

ついにベールを脱いだProject Avatar。新しいWebアプリケーションの本命となれるか

2012/10/04(木):5日目でJavaOneは最終日となりました。昨日までとは打って変わって、曇りがちで少し肌寒いほどの涼しさでしたが、朝行われたCommunity KeynoteにはJavaの父、ゴスリンさんが登場! スタンディング・オベーションも出る盛り上がりでした。 続きを読む JavaOne 2012 San Francisco レポート(5日目)

JavaOne 2012 San Francisco レポート(4日目)

Java標準JSON APIがいよいよ登場

Taylor Street Cafe
設営を完了して開催を待つ
Taylor Street Cafe

2012/10/03(水):4日目になると、そろそろ疲れが出てきました。学生の頃は、毎日こんな生活をしていたんですね。今やとても信じられないです・・・。

ところでヒルトンの脇、テイラーストリートにはTaylor Street Cafeが設置されていました。1日目のキーノート後には、ここでイベントも行われていましたが、疲労困憊だった私は早々に退散したのでした。
たまにDukeくんも登場し、空き時間などにはにぎわっていたようです。 続きを読む JavaOne 2012 San Francisco レポート(4日目)

JavaOne 2012 San Francisco レポート(3日目)

JavaSE8のLambda,JavaSE9のJigsaw

2012/10/02(火):3日目は、JavaSEのセッションを中心に参加しました。
JavaOneのセッションは、サンフランシスコ ユニオンスクエアにある3つのホテル、Hilton, Parc55, Nikkoで開かれており、HiltonではJavaSE、Parc55ではJavaEE、NikkoではJavaME関連のセッションが主です。私はMEはさっぱりなのでHiltonとParc55にしか足を踏み入れませんでしたが、Nikkoも少し覗いておけばよかったかなと思っています。

Hilton San Francisco Union Square
主にJavaSE関連のセッションが開かれた
Hilton San Francisco Union Square

続きを読む JavaOne 2012 San Francisco レポート(3日目)

JavaOne 2012 San Francisco レポート(2日目)

JPA2.1でインデックス・外部キーを扱えるように

Taylor street
街のいたるところにJavaOneの文字が

2012年10月1日(月):2日目からは、3つのホテルでセッションが開かれました。だいたい1日あたり6コマくらい参加したのですが、私個人としてはこの2日目は少し外したなというか、選択を誤ったなと思うセッションの多い日でした。

数多くのセッションの中から、自分が本当に聴きたい内容のセッションを選び出すのは、実はかなり根気のいる作業です。
セッションの一覧には予めタイトルと説明が付けられているので、本来はそれらをよく読んだ上で選択すべきなのですが、私はそこを端折って取りあえずセッションのタイトルだけを見て、それらしいものを選定していったのでした。 続きを読む JavaOne 2012 San Francisco レポート(2日目)

JavaOne 2012 San Francisco レポート(1日目)

大きな路線変更は無し。JavaEEはHTML5 + JavaScriptにフォーカス

2012年9月30日(日)から10月4日(木)までの5日間、米国サンフランシスコでJavaOneが開催されました。その様子をレポートしていきます。

私は当日の朝、サンフランシスコ国際空港に到着しました。一旦ホテルに荷物を預けて会場に向かったのですが、日中はとにかく暑かったです。日差しも日本の真夏より強く、サングラス無しでは屋外で眼を開けられないほどでした。

Strategy Keynote / Technical Keynote

Masonic Center San Francisco
メイソニック・センター

2012年9月30日(日):1日目には夕方から2つのキーノートが行われました。会場はサンフランシスコ市街、ノブヒルにあるメイソニック・センターです。

続きを読む JavaOne 2012 San Francisco レポート(1日目)

Java, Moving Forward

前回に引き続き、社内勉強会用に作成した資料を公開します。

今回は「Javaの現在と未来」2回シリーズの2回目です。「Javaの未来」として、Core JavaとEnterprise Javaそれぞれの分野の次の仕様、JavaSE8とJavaEE7について取り上げました。

続きを読む Java, Moving Forward

Java, Up to Date

JavaOne東京2012から2ヶ月が経ちました。そこで聞いてきた話を基に漸く社内勉強会を行いましたので、その資料を公開します。

今回と次回は2回シリーズで「Javaの現在と未来」をテーマにお届けする予定です。

まず1回目の今回は「Javaの現在」です。以下のスライドと、スライド中で示している主なコードは別にPDFも用意しました。PDFの方はSlideShareから直接ダウンロードして頂いた方が見やすいと思います。

続きを読む Java, Up to Date

s3tools-1.0.0を公開

Amazon S3のCLIといえばs3cmdが有名なようですが、API認証の初期設定(–configure)にちょっと違和感を感じます。そこでCLIを自分で書いてみました。これを修正BSDライセンスで公開します。

s3tools: Amazon S3 CLI

動作環境はJavaSE6.0以降です。

まずは最低限必要なコマンドとして、ListとGetとPutの3つだけを用意しました。コマンドもオプションももう少し拡張するつもりです。

それとまだLinux/Mac用のshスクリプトしか書いていませんが、そのうちWindows用のbatファイルも書こうと思っています。

内部実装としても今のところクラス設計がとにかくいい加減なので、今後拡張しやすいように改善していく予定です。