[ 
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.

Reply via email to