users@javaee-spec.java.net

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

From: Antonio Goncalves <antonio.goncalves_at_gmail.com>
Date: Mon, 21 May 2012 10:16:19 +0200

Hi all,

I was thinking about the default datasource... and a default
persistence.xml. With a default datasource, here is what a minimal
persistence.xml could look like in a managed environment :

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_1.xsd"
             version="2.1">

    <persistence-unit name="defaultPU" transaction-type="JTA">
        *<jta-data-source>java:global/defaultDataSource</jta-data-source>*
        <properties>
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
        </properties>
    </persistence-unit>
</persistence>

I don't know what are the plans on the JPA 2.1 expert group, but it would
be great to standardise more properties, like the generation of tables at
deployment. So we could have something like

    <persistence-unit name="defaultPU" transaction-type="JTA">
        <jta-data-source>java:global/defaultDataSource</jta-data-source>
        <properties>
            *<property name="javax.persistence.generateddl"
value="create-drop"/>*
        </properties>
    </persistence-unit>

If we have all the needed configuration by default, then, why not having a
default persistence.xml with a default persistence unit being produced by
the container ? We could just then write (without any extra configuration) :

@Stateless
public class MyService {

    @Inject
    private EntityManager entityManager;
}

Again, that's inreasing the easy of development. Any thoughts ?

Antonio

On Sun, Apr 15, 2012 at 7:13 PM, Adam Bien <abien_at_adam-bien.com> wrote:

>
> On 22.03.2012, at 23:23, Linda DeMichiel wrote:
>
> > 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;
>
> +1 but:
>
> @Inject
> DataSource myDS; should work as well. (I would require a default producer
> to do the job).
> >
> > 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 <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>