users@javaee-spec.java.net

[javaee-spec users] Re: [jsr366-experts] Re: class-level resource annotations

From: arjan tijms <arjan.tijms_at_gmail.com>
Date: Sat, 24 Jan 2015 00:33:02 +0100

Hi,

A little background; as Java EE developer I'm aware of the resource
reference injection, but I've never ever used it. Grepping through a
few Java EE code bases (couple of hundreds of thousands loc together)
that I've been involved with didn't reveal a single usage either. At
least from my perspective it's indeed rarely used. The fact that
@Resource has so many overloaded features doesn't help in making it
popular.

For the select few cases where I used dynamic lookups, I used the
global resource name (java:app/application-database-1,
java:app/application-database-2 etc) directly.

As for @DataSourceDefinition, I use this extensively, but most often
use the XML variant (mostly in application.xml or web.xml).

With regards to the answer to your question, for everyone:

B. Any class that also supports injection (table EE-5.1).

Kind regards,
Arjan Tijms







On Fri, Jan 23, 2015 at 8:51 PM, Bill Shannon <bill.shannon_at_oracle.com> wrote:
> We only got one response to this message. Many of you probably never got
> back to this after the holidays, but now's the time. If we don't hear from
> you we'll assume your position is "we trust you, Oracle, to do what's best".
>
> But really, we'd rather hear from you directly.
>
> Thanks.
>
> Bill Shannon wrote on 12/08/14 15:25:
>> 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.
>