[
https://issues.apache.org/jira/browse/OPENJPA-552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12584710#action_12584710
]
Albert Lee commented on OPENJPA-552:
------------------------------------
The cause of the problem sourced from:
PersistenceProviderImpl.java
private ClassTransformerImpl(ConfigurationProvider cp, String props,
final ClassLoader tmpLoader, OpenJPAConfiguration conf) {
cp.setInto(conf);
// don't allow connections
conf.setConnectionUserName(null); <<<<< Connection Properties are
removed
conf.setConnectionPassword(null); <<<<< Connection Properties are
removed
conf.setConnectionURL(null); <<<<< Connection Properties are removed
conf.setConnectionDriverName(null); <<<<< Connection Properties are
removed
conf.setConnectionFactoryName(null); <<<<< Connection Properties
are removed
// use the tmp loader for everything
conf.setClassResolver(new ClassResolver() {
public ClassLoader getClassLoader(Class context,
ClassLoader env) {
return tmpLoader;
}
});
conf.setReadOnly(Configuration.INIT_STATE_FREEZING);
MetaDataRepository repos = conf.getMetaDataRepositoryInstance();
So even the properties are defined in the configuration, they are removed
before the MetaDataRepository instance is created. Hence no data source can be
found and the described exception is thrown.
This change is introduced in r452141. We assert that these
setConnection*(null) statements are not needed because:
1) If the Connection* properties need to be nulled, why are the Connection2*
properties are not affected.'
2) The pu can override the intention of these setter(null) calls by specifying
the <jta-data-source> and make these operations irrevalent.
Albert Lee.
> Do not recognize Connection* properties in persistence.xml in appl server
> container
> -----------------------------------------------------------------------------------
>
> Key: OPENJPA-552
> URL: https://issues.apache.org/jira/browse/OPENJPA-552
> Project: OpenJPA
> Issue Type: Bug
> Components: jdbc
> Affects Versions: 1.0.2, 1.0.3, 1.1.0
> Reporter: Albert Lee
> Assignee: Albert Lee
> Fix For: 1.0.3, 1.1.0
>
>
> If Connection* properties are specified in a persistence unit and there is no
> <jta-data-source>, <non-jta-data-source> or default data source defined,
> PU name : dweb24
> Root URL :
> file:/D:/dev/jdk/runtimes/base_v7_i7/profiles/AppSrv01/installedApps/kingoftownNode03Cell/dweb24Ear.ear/dweb24.war/WEB-INF/classes/
> Tx Type : JTA
> desc :
> Provider : com.ibm.websphere.persistence.PersistenceProviderImpl
> [WSJPA-1.1.0-SNAPSHOT-r1118:1345, openjpa-1.1.0-SNAPSHOT-r420667:636531]
> JTA DS : <<null>> | null
> nonJTA DS : <<null>> | null
> exclude Cls : false
> file URLs : []
> mappigFNm : []
> managedClasses : [entities.Department,entities.Employee]
> Properties : {openjpa.ConnectionDriverName=com.ibm.db2.jcc.DB2Driver,
> openjpa.ConnectionPassword=db2admin, openjpa.ConnectionUserName=db2admin,
> openjpa.ConnectionURL=jdbc:db2://supermatrix:50000/SAMPLE:retrieveMessagesFromServerOnGetMessage=true;,
> openjpa.jdbc.Schema=ADMINISTRATOR}
> then the following exception will be thrown from
> DataSourceFactory.newDataSource method:
> <openjpa-1.1.0-SNAPSHOT-r420667:636531 fatal user error>
> org.apache.openjpa.util.UserException: A JDBC Driver or DataSource class name
> must be specified in the ConnectionDriverName property.
> at
> org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:72)
> at
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:776)
> at
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:553)
> at
> org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1251)
> at
> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:505)
> at
> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:430)
> This called path is initiated from
> PersistenceProviderImpl.createContainerEntityManagerFactory.
> Consequentially, transformer is not being registered in the appl server
> container and no load time entity enhancement is performed.
> openjpa.Runtime: Warn: An error occurred while registering a ClassTransformer
> with dweb24. The error is logged along with this warning. Load-time class
> transformation will not be available.
> Albert Lee.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.