JMS に最初のショットを与えて、注入しようとすると@Resource(lookup="jms/ConnectionFactory")
、次のエラーが発生します。
注釈型 Resource の属性ルックアップは未定義です
Java ee 6 @Resource アノテーションの使用方法を読んだばかりですが、Maven をまだ勉強していないので、Maven を使用するのではなく、他の方法でこの問題を修正できるかどうか疑問に思っていました。
ちなみにEclipseを使っています。
JMS に最初のショットを与えて、注入しようとすると@Resource(lookup="jms/ConnectionFactory")
、次のエラーが発生します。
注釈型 Resource の属性ルックアップは未定義です
Java ee 6 @Resource アノテーションの使用方法を読んだばかりですが、Maven をまだ勉強していないので、Maven を使用するのではなく、他の方法でこの問題を修正できるかどうか疑問に思っていました。
ちなみにEclipseを使っています。
Java EE 6 開発者が遭遇する一般的な問題の 1 つは、JDK 組み込みの @javax.annotation.Resource と競合する @Resource アノテーションの使用です。ここでは、Eclipse と Maven でコンパイルの問題を解決する方法を示します。
Java EE 6 に含まれる @Resource アノテーションを見ると、lookup 属性が含まれています。残念ながら、前述したように、JDK 自体は、この属性を持たない独自のバージョンの @javax.annotation.Resource を出荷しています。これにより、Eclipse または Maven を使用している場合、コンパイルの問題が発生します。
public class MyCache {
@Resource(lookup="java:jboss/infinispan/container/cluster")
private CacheContainer container;
}
[ERROR] symbol : method lookup() [ERROR] location: @interface javax.annotation.Resource Eclipse 環境で問題を解決するのは非常に簡単です: @Resource アノテーションの JBoss EE 6 実装を追加するだけです - AND - JDK ライブラリの前に置く
@resource maven lookup JBoss ライブラリは、AS 7 リリースおよび jboss-annotations-api_1.1_spec-1.0.1 では、jboss-annotations-api_1.1_spec-1.0.0.Final.jar (またはそのようなもの) という名前にする必要があります。 EAP 6 の Final-redhat-2.jar
Maven でコンパイルしている場合、この問題を解決する最も簡単な方法は、注釈 JAR ライブラリを JDK の承認されたディレクトリに追加して、デフォルトの @Resource 実装をオーバーライドすることです。
アノテーション JAR は、JDK ディストリビューションの JAVA_HOME/jre/lib/endorsed にコピーする必要があります。
別の方法として、-Djava.endorsed.dirs を JVM パラメーターに渡すことができます。これは、次の Eclipse からの Maven ビルドに示されています。
mappingName 属性を次のように使用してみてください。
@Resource(mappedName="jms/ConnectionFactory")
また、引き続きルックアップを使用する場合は、使用している javax.annotation.jar を確認してください。Lookup 属性は JavaEE 6 で導入されました。おそらく古いバージョンを使用しています。