javaee / javaee-spec

Java EE Platform Specification
https://javaee.github.io/javaee-spec
Other
389 stars 69 forks source link

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

Open glassfishrobot opened 11 years ago

glassfishrobot commented 11 years ago

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 commented 11 years ago

Reported by lincolnbaxter

glassfishrobot commented 11 years ago

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 commented 11 years ago

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 commented 10 years ago

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 tt>@DataSourceDefinition</tt 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 commented 10 years ago

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

glassfishrobot commented 10 years ago

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 commented 10 years ago

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 commented 8 years ago

arjan_t said: @ldemichiel

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

glassfishrobot commented 7 years ago

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

arjantijms commented 6 years ago

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.