jsr366-experts@javaee-spec.java.net

[jsr366-experts] class-level resource annotations

From: Bill Shannon <bill.shannon_at_oracle.com>
Date: Mon, 08 Dec 2014 15:25:31 -0800

I'd like to clarify some of the requirements around resource annotations.

There's two kinds of resource annotations that can be applied to a class:

1. Resource reference annotations such as @Resource. This is probably
   rarely used (as opposed to injection), but can be useful in cases where
   dynamic lookup of the resource is required.

        @Resource(name = "myDS", lookup = "java:app/application-database")
        public class Something {
            public void someMethod() {
                ...
                InitialContext ic = new InitialContext();
                DataSource ds = (DataSource)ic.lookup("myDS");
            }
        }

2. Resource definition annotations such as @DataSourceDefinition.

        @DataSourceDefinition(
            name = "java:app/applicaiton-database",
            className="org.apache.derby.jdbc.ClientDataSource",
            url="jdbc:derby://localhost:1527/myDB;user=bill",
            databaseName="testDB",
            serverName="luckydog"
        )
        public class SomeOtherClass {
            ...
        }

I have some questions that I'd like each of you to answer:

For Java EE implementors:

    In your implementation, what classes may contain each of these
    types of annotations?

        A. A limited set of container-managed classes.
        B. Any class that also supports injection (table EE-5.1).
        C. Any class in the application package (ear/war/jar file).
        D. Any class in the application package or referenced as an
           external library.
        E. Other. (Explain)


For Java EE developers:

    What classes do you expect may contain each of these types of annotations?

        A. A limited set of container-managed classes.
        B. Any class that also supports injection (table EE-5.1).
        C. Any class in the application package (ear/war/jar file).
        D. Any class in the application package or referenced as an
           external library.
        E. Other. (Explain)



For everyone:

    What classes do you think the Java EE 7 spec requires must be able
    to contain each of these types of annotations?

        A. A limited set of container-managed classes.
        B. Any class that also supports injection (table EE-5.1).
        C. Any class in the application package (ear/war/jar file).
        D. Any class in the application package or referenced as an
           external library.
        E. Other. (Explain)
        F. I don't know.


Thanks.