On Jan 8, 2009, at 5:47 AM, Gavin King wrote:
Everyone, please take a look at section 3.6 of this spec draft,
which
defines a proposal for EE resource injection.
Basically, what I've proposed is that web beans would let you rewrite
the following:
@Resource(mappedName="customerDatabase") Datasource ds;
as:
@CustomerDatabase Datasource ds;
<javaxsql:Datasource>
<Resource>
<mappedName>customerDatabase</mappedName>
</Resource>
<myapp:CustomerDatabase/>
</javaxsql:Datasource>
I'd like to see two changes.
First, this capability should be implemented as a general Bridge
defined in javax.webbeans.spi.Bridge and define the JavaEE
capabilities in terms of the underlying Bridge. (Similar in logic to
Bean but a different point in the configuration lifecycle.) That
would improve modularity and allow an eventual migration of the Bridge
ownership to the individual JavaEE specs in a later version.
The implementation would define ResourceBridgeImpl and EjbBridgeImpl
to recognize the types its responsible for and define config items/
annotations (presumably reusing the current annotations.)
Second, the JavaEE annotation types should be defined in their own
namespace for modularity and consistency, not the WebBeans namespace.
<xsql:DataSource xmlns:xsql="urn:java:javax.sql">
<ann:Resource xmlns:ann="urn:java:javax.annotation">
...
</ann:...>
<my:Foo xmlns:my="urn:java:com.foo.my">
<ejb:EJB xmlns:ejb="urn:java:javax.ejb">
<jms:Queue xmlns:jms="urn:java:javax.jms">
...
etc.
That way, the Resource, EJB, etc. are defined in terms of underlying
WebBeans capabilities, not baked into the spec.
-- Scott
and:
@EJB(ejbLink="somejar#Foo") Foo foo;
as:
@Current Foo foo;
<myapp:Foo>
<EJB>
<ejbLink>somejar#Foo</ejbLink>
</EJB>
</myapp:Foo>
and:
@WebServiceRef(name="barbar", wsdlLocation="barbarbar") Bar bar;
as:
@Current Bar bar;
<myapp:Bar>
<WebServiceRef>
<name>barbar</name>
<wsdlLocation>barbarbar</wsdLocation>
</WebServiceRef>
</myapp:Bar>
So this proposal is just basically an indirection around the
pre-existing semantics of Java EE injection, that gives you all the
nice Web Beans typesafety.
This seems a really nice, easy way to define this stuff, and I love
how the XML looks.
--
Gavin King
gavin.king(a)gmail.com
http://in.relation.to/Bloggers/Gavin
http://hibernate.org
http://seamframework.org
<Web Beans 20090109.pdf>