javaee-spec icon indicating copy to clipboard operation
javaee-spec copied to clipboard

JPA persistence.xml should integrate with @DataSourceDefinition and web.xml data-source definition

Open glassfishrobot opened this issue 12 years ago • 10 comments

Datasources defined via @DataSourceDefinition allow @Resource injection of DataSource objects into application code. However, these data-sources are not integrated with the persistence.xml JPA configuration file. And attempted use of the custom defined DataSource in persistence.xml will result in deployment failure. The EE spec allow for interop between these features:

For a datasource definition:

@DataSourceDefinition(
         url = "jdbc:h2:mem:",
         className = "org.h2.jdbcx.JdbcDataSource",
         name = "java:global/jdbc/h2db",
         user = "sa",
         password = "")

The following persistence.xml should be valid:

<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/persistence/persistence_2_1.xsd"> 
   <persistence-unit name="default" transaction-type="JTA">
      <jta-data-source>java:global/jdbc/h2db</jta-data-source>
      <exclude-unlisted-classes>false</exclude-unlisted-classes>
   </persistence-unit>

</persistence>

Environment

EE 6/7+

glassfishrobot avatar Sep 09 '13 19:09 glassfishrobot

Reported by lincolnbaxter

glassfishrobot avatar Sep 09 '13 19:09 glassfishrobot

reza_rahman said: I think this is a bug unrelated to the spec. I have this use case working fine: https://java.net/projects/cargotracker/pages/Home.

glassfishrobot avatar Sep 09 '13 19:09 glassfishrobot

kithouna said: This is definitely a bug with whatever server OP is using.

See http://henk53.wordpress.com/2012/06/30/the-state-of-datasourcedefinition-in-java-ee + http://henk53.wordpress.com/2012/04/15/jsf2-primefaces3-ejb3-jpa2-integration-project/#step10 and http://jdevelopment.nl/open-source/java-ee-kickoff-app for two other working cases.

If the server happens to be Glassfish, remember that due to a big bug in that you have to copy the JDBC driver to some installation directory of Glassfish itself. See GLASSFISH-19451

glassfishrobot avatar Sep 12 '13 09:09 glassfishrobot

arjan_t said: There's is definitely something fishy here. Historically this has failed more often and if I'm not misinterpreting things some vendors at least gave (me) the impression that they thought this didn't needed to be supported.

For the current crop of Java EE 7 servers it again fails. See WildFly issue https://issues.jboss.org/browse/WFLY-2727 and GlassFish issue GLASSFISH-20944

I think the spec should explicitly say that @DataSourceDefinition and web.xml's data-source definition can be used in persistence.xml and add a TCK test that checks that this is indeed possible for a given implementation.

glassfishrobot avatar Jan 08 '14 18:01 glassfishrobot

arjan_t said: For the JPA side of this issue see JPA_SPEC-70

glassfishrobot avatar Jan 09 '14 22:01 glassfishrobot

lincolnbaxter said: When speaking to the various people in charge of JPA integration in these servers, I got the overall impression that they did not believe the spec required this, which is why it does not work on most servers. Thus I moved to file a spec issue that would cause people to do the right thing

glassfishrobot avatar Apr 10 '14 15:04 glassfishrobot

ldemichiel said: The spec does require this. We'll make sure that this is clearer in the future, and add a TCK test for it.

glassfishrobot avatar Apr 15 '14 22:04 glassfishrobot

arjan_t said: @ldemichiel

We're now almost 2 years later and just wondering, has this TCK test already been added?

glassfishrobot avatar Mar 13 '16 12:03 glassfishrobot

This issue was imported from java.net JIRA JAVAEE_SPEC-30

glassfishrobot avatar Apr 25 '17 09:04 glassfishrobot

This time it's more than 2 years later. Maybe if/when the TCK gets transferred we'll finally be able to see if that TCK test was ever added or not.

arjantijms avatar Aug 13 '18 20:08 arjantijms