[jboss-jira] [JBoss JIRA] (WFLY-7367) add per PU cache of the new temp classloader returned from PersistenceUnitMetadataImpl.getNewTempClassLoader()
Stuart Douglas (JIRA)
issues at jboss.org
Mon Oct 24 18:17:00 EDT 2016
[ https://issues.jboss.org/browse/WFLY-7367?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13311106#comment-13311106 ]
Stuart Douglas commented on WFLY-7367:
--------------------------------------
I don't think undeploy time is the right time to clear this. As I understand it these resources are only really used during deployment time (and are basically a way for the JPA provider to examine the class path without forcing classes to actually be loaded). If these were cached till undeploy then these deployment time resources will be held for much longer than what is required.
If this is going to be cached IMHO the correct time to clear the cache is after PU service start.
> add per PU cache of the new temp classloader returned from PersistenceUnitMetadataImpl.getNewTempClassLoader()
> --------------------------------------------------------------------------------------------------------------
>
> Key: WFLY-7367
> URL: https://issues.jboss.org/browse/WFLY-7367
> Project: WildFly
> Issue Type: Enhancement
> Components: JPA / Hibernate
> Reporter: Scott Marlow
> Assignee: Scott Marlow
>
> The new temporary classloader returned by the WildFly PersistenceUnitInfo.getNewTempClassLoader() is currently created on every call.
> Ensure that the cached temp classloader reference is cleared at undeploy time, which is when the org.jboss.as.jpa.hibernate4.HibernateAnnotationScanner#CLASSES_IN_JAR_CACHE are also cleared.
> Javadoc description from [http://docs.oracle.com/javaee/7/api/javax/persistence/spi/PersistenceUnitInfo.html#getNewTempClassLoader--]
> {quote}
> ClassLoader getNewTempClassLoader()
> Return a new instance of a ClassLoader that the provider may use to temporarily load any classes, resources, or open URLs. The scope and classpath of this loader is exactly the same as that of the loader returned by getClassLoader(). None of the classes loaded by this class loader will be visible to application components. The provider may only use this ClassLoader within the scope of the PersistenceProvider.createContainerEntityManagerFactory(javax.persistence.spi.PersistenceUnitInfo, java.util.Map) call.
> Returns:
> temporary ClassLoader with same visibility as current loader
> {quote}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
More information about the jboss-jira
mailing list