I seem to remember seeing this problem a while back where the provided
data-source wasn't found.... and we throw this misleading exception.
Perhaps someone else can chime in with details?

One thing you can do is set :

<property name="openjpa.jdbc.DBDictionary" value="postgres"/>


On Sun, Jun 30, 2013 at 2:59 AM, Pawel Veselov <pawel.vese...@gmail.com>wrote:

> Hi.
>
> Using OpenJPA 2.1.1, I ran into this problem after I switched to custom
> implementation of the data source. I guess what's happening is that
> dictionary can no longer be determined from the class name, so it attempts
> to look at the URL, but the data source object is not yet populated.
> Everything works perfectly if I use original data source. Anything I can
> do? The database is postgres.
>
> persistence.xml:
> <?xml version="1.0" encoding="UTF-8"?>
> <persistence xmlns="http://java.sun.com/xml/ns/persistence"; version="2.0">
> <persistence-unit name="Snap">
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> <non-jta-data-source>snap_db_jpa</non-jta-data-source>
> <!-- entities defined here -->
> <properties>
> <property name="openjpa.Log" value="File=/tmp/jpa.log, DefaultLevel=WARN,
> SQL=TRACE"/>
> <property name="openjpa.jdbc.SynchronizeMappings"
>
> value="refresh(ForeignKeys=true,PrimaryKeys=true,Indexes=true,DropUnusedComponents=true,)"/>
> </properties>
> </persistence-unit>
> </persistence>
>
>
> Exception:
> Caused by: <openjpa-2.2.1-r422266:1396819 fatal user error>
> org.apache.openjpa.persistence.ArgumentException: A JDBC Driver or
> DataSource class name must be specified in the ConnectionDriverName
> property. Available properties in configuration are
> "org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl@f237a66c".
>         at
>
> org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:72)
>         at
>
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:844)
>         at
>
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:602)
>         at
>
> org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1518)
>         at
>
> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:518)
>         at
>
> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:443)
>         at
> org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:104)
>         at
>
> org.apache.openjpa.conf.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68)
>         at
> org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83)
>         at
>
> org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:967)
>         at
>
> org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:958)
>         at
>
> org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:638)
>         at
>
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:203)
>         at
>
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
>         at
>
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
>         at
>
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
>         at
>
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
>         at
> com.excelfore.util.ThreadContext.getEntityManager(ThreadContext.java:215)
>



-- 
*Rick Curtis*

Reply via email to