Discussions
Categories
- 385.5K All Categories
- 5.1K Data
- 2.5K Big Data Appliance
- 2.5K Data Science
- 453.4K Databases
- 223.2K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 47 Multilingual Engine
- 606 MySQL Community Space
- 486 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3.2K ORDS, SODA & JSON in the Database
- 585 SQLcl
- 4K SQL Developer Data Modeler
- 188K SQL & PL/SQL
- 21.5K SQL Developer
- 46 Data Integration
- 46 GoldenGate
- 298.4K Development
- 4 Application Development
- 20 Developer Projects
- 166 Programming Languages
- 295K Development Tools
- 150 DevOps
- 3.1K QA/Testing
- 646.7K Java
- 37 Java Learning Subscription
- 37.1K Database Connectivity
- 201 Java Community Process
- 108 Java 25
- 22.2K Java APIs
- 138.3K Java Development Tools
- 165.4K Java EE (Java Enterprise Edition)
- 22 Java Essentials
- 176 Java 8 Questions
- 86K Java Programming
- 82 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 208 Java User Groups
- 25 JavaScript - Nashorn
- Programs
- 666 LiveLabs
- 41 Workshops
- 10.3K Software
- 6.7K Berkeley DB Family
- 3.6K JHeadstart
- 6K Other Languages
- 2.3K Chinese
- 207 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 474 Portuguese
Common annotation 1.1 on Javaee6

843830
Member Posts: 47,913 Green Ribbon
import javax.annotation.Resource;
I try to use the following code for dependecy injection:
@Resource(lookup = "jms/javaee6/ConnectionFactory")
private static ConnectionFactory connectionFactory;
@Resource(lookup = "jms/javaee6/Queue")
private static Queue queue;
However, when I build with maven. The error message keeps showing
cannot find symbol
symbol : method lookup()
location: @interface javax.annotation.Resource
Anything i can do in order to make it works?
Thanks.
I try to use the following code for dependecy injection:
@Resource(lookup = "jms/javaee6/ConnectionFactory")
private static ConnectionFactory connectionFactory;
@Resource(lookup = "jms/javaee6/Queue")
private static Queue queue;
However, when I build with maven. The error message keeps showing
cannot find symbol
symbol : method lookup()
location: @interface javax.annotation.Resource
Anything i can do in order to make it works?
Thanks.
Comments
-
That's because "lookup" isn't a valid method on javax.annotation.Resource. Try "name".
Nigel -
Thanks. Nigel
-
javax.annotation.Resource does include a "lookup" method as of Java EE 6.
http://download.oracle.com/javaee/6/api/javax/annotation/Resource.html#lookup() -
The problem with building this in Maven is that the JDK also includes a javax.annotation.Resource which does not yet include the "lookup" method -
http://download.oracle.com/javase/6/docs/api/javax/annotation/Resource.html
In order to get it to build with Maven, you will need to add the JAR containing the correct javax.annotation.Resource to an endorsed JAR. This can be done by using the maven-dependency-plugin to copy the JAR to a directory, and then configuring the compiler plugin to reference the endorsed dir: -Djava.endorsed.dirs=${project.build.directory}/endorsed.
The following blog post includes more detailed information -
http://jaitechwriteups.blogspot.com/2011/02/resource-and-new-lookup-attribute-how.html -
You're quite right, of course. @Resource(lookup="foo") is perfectly valid in Java EE 6, with several examples in the spec. Thanks for explaining why it doesn't always compile, even with Java EE 6 in the classpath.
Nigel
This discussion has been closed.