[javaee-spec users] [jsr342-experts] Re: Platform default data source and JMS connection factory

From: Antonio Goncalves <>
Date: Tue, 10 Apr 2012 10:17:29 +0200

Hi all,

If we agree on a standard default naming convention, then why not specify
producer methods. The container could do a bit of work for us and produce
these resources :

public class ResourceProducer {

  @Produces @DefaultResource @Resource(name="myDataSource",
  DataSource myDS;

  @Produces @DefaultResource @Resource(name="myJMSFactory",
  JMSFactory myFactory;

This way the client code could either use :

DataSource myDS;


@Inject @DefaultResource
DataSource myDS;

What do you think ? We already have some utility classes in Java EE (like
PersistenceUtil), the spec could define such a class, no ?


On Thu, Mar 22, 2012 at 23:23, Linda DeMichiel

> In view of the feedback we've received on this issue, our conclusion is
> that we should adopt approach 3.
> To summarize, in the data source case, the following will apply:
> The Java EE Platform requires that a Java EE Product Provider
> provide a database in the operational environment. The Java EE
> Product Provider must also provide a preconfigured, default data
> source for use by the application in accessing this database.
> The Java EE Product Provider must make the default data source
> accessible to the application under the JNDI name
> java:comp/defaultDataSource.
> The Application Component Provider or Deployer may explicitly bind a
> DataSource resource reference to the default data source using the
> lookup element of the Resource annotation or the lookup-name element
> of the resource-ref deployment descriptor element. For example,
> @Resource(name="myDataSource", lookup="java:comp/**defaultDataSource")
> DataSource myDS;
> If a DataSource resource reference is not mapped to a specific data
> source by the Application Component Provider or Deployer, it must be
> mapped by the Java EE Product Provider to a preconfigured data source
> for the Java EE Product Provider's default database. For example, in
> the absence of any action on the part of the developer or deployer,
> the following will map to a preconfigured data source for the
> product's default database:
> @Resource(name="myDataSource")
> DataSource myDS;
> And similarly for default JMS Connection Factory, whose JNDI name is
> java:comp/**defaultJMSConnectionFactory.
> -Linda

Antonio Goncalves
Software architect and Java Champion
Web site <> |
Blog <> |
LinkedIn<>| Paris
JUG <>