We've discussed this with Pete. There's currently a problem because the
processing of platform-defined annotations occurs at a different level
than the processing of CDI-defined annotations. Thus, at the time the
@DataSourceDefinition annotation is being processed, there's no knowledge
of CDI and in particular of CDI alternatives.
The fix isn't obvious. Do we delegate processing of all platform annotations
to CDI? Do we embed greater knowledge of CDI in the processing of platform
annotations? Either way, it implies a much tighter coupling of CDI with the
rest of the platform. Can CDI remain a "pluggable" technology and still be
that tightly integrated?
Antonio Goncalves wrote on 01/06/12 11:16:
> I will file an issue but the purpose of my email was really to have @Alternative
> on a @DataSourceDefinition (and JMS definitions in the future). Something that
> sounded obvious to me (having several alternatives definitions) is not possible
> in CDI 1.0. Hope it will be in 1.1.
>
> On Fri, Jan 6, 2012 at 19:37, Pete Muir <pmuir_at_bleepbleep.org.uk
> <mailto:pmuir_at_bleepbleep.org.uk>> wrote:
>
> If you file an issue at http://issues.jboss.org/browse/CDITCK we can add
> some tests to the CDI TCK for @DataSourceDefinition.
>
> On 6 Jan 2012, at 18:35, reza_rahman_at_lycos.com
> <mailto:reza_rahman_at_lycos.com> wrote:
>
> > Although, if I recall correctly there was no TCK test for this...
> >
> > Jan 6, 2012 01:32:22 PM, jsr342-experts_at_javaee-spec.java.net
> <mailto:jsr342-experts_at_javaee-spec.java.net> wrote:
> > It's basically a bug I think -- we implemented what you are looking for
> in Resin. I think the Java EE platform spec is pretty clear about
> @DataSourceDefinition on plain managed beans, Servlets, EJB.
> >
> > Jan 6, 2012 03:05:45 AM, jsr342-experts_at_javaee-spec.java.net
> <mailto:jsr342-experts_at_javaee-spec.java.net> wrote:
> > Hi all,
> >
> > I just came accross a limitation (bug) of GlassFish : adding a
> @DataSourceDefinition on a CDI bean doesn't work in an embedded environment
> (http://www.java.net/forum/topic/glassfish/glassfish/invalid-resource-datasource-embedded-mode).
> I had to put it in the EJB to make it work.
> >
> > Why do I use @DataSourceDefinition on a CDI bean instead of an EJB ?
> Because I thought I could use alternatives (i.e. defining several data
> sources depending on the environment). But this doesn't work in CDI 1.0
> (https://issues.jboss.org/browse/CDI-53).
> >
> > Alternatives should work on definitions, don't you think ? In other
> specs, are you aware of other kind of definitions (I know that JMS 2.0 will
> bring similar features with @JMSConnectionFactoryDefinition and
> @JMSDestinationDefinition) ? If yes, we should encourage the spec leads to
> use similar behavior.
> >
> > My 2 cents
> >
> > --
> > Antonio Goncalves
> > Software architect and Java Champion
> >
> > Web site | Twitter | Blog | LinkedIn | Paris JUG
>
>
>
>
> --
> Antonio Goncalves
> Software architect and Java Champion
>
> Web site <http://www.antoniogoncalves.org> | Twitter
> <http://twitter.com/agoncal> | Blog
> <http://feeds.feedburner.com/AntonioGoncalves> | LinkedIn
> <http://www.linkedin.com/in/agoncal> | Paris JUG <http://www.parisjug.org>