[
https://issues.jboss.org/browse/AS7-5062?page=com.atlassian.jira.plugin.s...
]
Craig Ringer commented on AS7-5062:
-----------------------------------
It looks like JBoss AS 7 is non-compliant with the spec. I've closed the EclipseLink
bug as AS7 isn't giving EclipseLink what the spec says it should.
Here's an example of the persistenceUnitRootUrl provided during persistence unit
creation in an Arquillian test:
vfs:/content/8744d775-9837-4a5f-b1ab-22259f7e19b6.war/WEB-INF/classes/
It's a URL object, but the scheme isn't something EclipseLink will be able to
do anything with without help.
AS7 can provide a custom archive factory to allow EclipseLink to cope with such
URLs, and that's what the new support code is doing. What AS7 is doing would
seem questionable in standards terms though. The spec says the URL must be a
file: schema URL, or must be some other URL resolvable to a jar. This is
neither; it's a vfs:/ url to (in this case) the class-root of an exploded jar.
The URL object has an assigned handler of type
org.jboss.vfs.protocol.VirtualFileURLStreamHandler
AS7 will need to provide EclipseLink with an archive factory, assigned via system
properties, to allow EclipseLink to cope with such archives. One has already been
implemented by Rich DiCroce. I'll get his OK to submit it for inclusion in AS7
in-tree.
Patch pending.
PersistenceUnitRootURL for JPA providers may not be spec compliant
------------------------------------------------------------------
Key: AS7-5062
URL:
https://issues.jboss.org/browse/AS7-5062
Project: Application Server 7
Issue Type: Bug
Components: JPA / Hibernate
Affects Versions: 7.1.1.Final
Environment: $ java -version
java version "1.7.0_03-icedtea"
OpenJDK Runtime Environment (fedora-2.2.1.fc17.8-x86_64)
OpenJDK 64-Bit Server VM (build 23.0-b21, mixed mode)
$ uname -a
Linux ayaki.localdomain 3.4.2-4.fc17.x86_64 #1 SMP Thu Jun 14 22:22:05 UTC 2012 x86_64
x86_64 x86_64 GNU/Linux
Reporter: Craig Ringer
Assignee: Scott Marlow
Labels: compatibility, eclipselink, jpa, spec
Discussion on the EclipseLink bug
https://bugs.eclipse.org/bugs/show_bug.cgi?id=383200
("On JBoss AS 7, EclipseLink doesn't find entity classes unless they're
explicitly listed in persistence.xml") suggests that JBoss AS 7 may not be providing
a spec-compliant PersistenceUnitRootURL or contents.
EclipseLink can't scan the contents of a deployment for @Entity annotated classes, so
it doesn't find any entities unless they're explicitly named in persistence.xml .
http://docs.oracle.com/javaee/6/api/javax/persistence/spi/PersistenceUnit...
states:
{quote}
java.net.URL getPersistenceUnitRootUrl()
Returns the URL for the jar file or directory that is the root of the persistence unit.
(If the persistence unit is rooted in the WEB-INF/classes directory, this will be the URL
of that directory.) The URL will either be a file: URL referring to a jar file or
referring to a directory that contains an exploded jar file, or some other URL from which
an InputStream in jar format can be obtained.
*Returns*: a URL referring to a jar file or directory
{quote}
... and that's what EclipseLink expects. However, for EclipseLink class scanning to
function correctly an adapter class must be provided, such as the classes provided here:
https://community.jboss.org/wiki/HowToUseEclipseLinkWithAS7
to integrate EclipseLink with JBoss's VFS.
It may be worth investigating why this is necessary and whether the current behavior is
standards compliant.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira