@ResourceはJNDI以外で使ってはいけない

アプリケーションサーバーはデプロイ時に@Resourceという部分を見つけるとリソースの準備を始めます。

Spring2.5では@ResourceをJNDIに関係なくSpringのBeanのインジェクトに使用できるのですが、そういう使い方をするとデプロイ時にスタックトレースが大量に出る原因となります。実際Glassfishではでます。

というわけで、Beanのインジェクト専用の@Autowiredを使うようにしましょう。


そもそも@ResourceはJNDI専用に定義されています。似たようなインジェクトの動作をするからといって安易に同じアノテーションを使いまわしするというのは正直考えられませんね。同じ@Resourceを使うにしてもパッケージは変えるべきです。紛らわしいですが、別物にしている分まだましです。

本来の動作が定義されているのにそれを違う意味で扱うというのはやめましょう。例えば今回はJavaEE5/JavaSE6の知識がある人ほどJNDIアクセスしてるんだな、と錯覚するわけですから。