【问题标题】:OpenJPA: A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName propertyOpenJPA:必须在 ConnectionDriverName 属性中指定 JDBC 驱动程序或数据源类名
【发布时间】:2013-04-24 09:13:05
【问题描述】:

当我尝试使用 openjpa 做一个简单的例子时,我遇到了异常。在这里,我使用了一个自定义持久性提供程序类。以下是我的 persistence.xml 文件。我经历了以前的类似线程,但找不到适合我的配置的解决方案。

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
             version="1.0">
    <persistence-unit name="juddiDatabase" transaction-type="RESOURCE_LOCAL">
        <provider>org.juddi.test.persistance.JUDDIPersistenceProviderImpl</provider>
        <mapping-file>META-INF/orm.xml</mapping-file>
        <!-- entity classes -->
        <class>org.apache.juddi.model.Address</class>
        <class>org.apache.juddi.model.AddressLine</class>
        <class>org.apache.juddi.model.AuthToken</class>
        <class>org.apache.juddi.model.BindingCategoryBag</class>
        <class>org.apache.juddi.model.BindingDescr</class>
        <class>org.apache.juddi.model.BindingTemplate</class>
        <class>org.apache.juddi.model.BusinessCategoryBag</class>
        <class>org.apache.juddi.model.BusinessDescr</class>
        <class>org.apache.juddi.model.BusinessEntity</class>
        <class>org.apache.juddi.model.BusinessIdentifier</class>
        <class>org.apache.juddi.model.BusinessName</class>
        <class>org.apache.juddi.model.BusinessService</class>
        <class>org.apache.juddi.model.CategoryBag</class>
        <class>org.apache.juddi.model.Clerk</class>
        <class>org.apache.juddi.model.ClientSubscriptionInfo</class>
        <class>org.apache.juddi.model.Contact</class>
        <class>org.apache.juddi.model.ContactDescr</class>
        <class>org.apache.juddi.model.DiscoveryUrl</class>
        <class>org.apache.juddi.model.Email</class>
        <class>org.apache.juddi.model.InstanceDetailsDescr</class>
        <class>org.apache.juddi.model.InstanceDetailsDocDescr</class>
        <class>org.apache.juddi.model.KeyedReference</class>
        <class>org.apache.juddi.model.KeyedReferenceGroup</class>
        <class>org.apache.juddi.model.Node</class>
        <class>org.apache.juddi.model.OverviewDoc</class>
        <class>org.apache.juddi.model.OverviewDocDescr</class>
        <class>org.apache.juddi.model.PersonName</class>
        <class>org.apache.juddi.model.Phone</class>
        <class>org.apache.juddi.model.Publisher</class>
        <class>org.apache.juddi.model.PublisherAssertion</class>
        <class>org.apache.juddi.model.PublisherAssertionId</class>
        <class>org.apache.juddi.model.ServiceCategoryBag</class>
        <class>org.apache.juddi.model.ServiceDescr</class>
        <class>org.apache.juddi.model.ServiceName</class>
        <class>org.apache.juddi.model.ServiceProjection</class>
        <class>org.apache.juddi.model.ServiceProjectionId</class>
        <class>org.apache.juddi.model.Subscription</class>
        <class>org.apache.juddi.model.SubscriptionChunkToken</class>
        <class>org.apache.juddi.model.SubscriptionMatch</class>
        <class>org.apache.juddi.model.Tmodel</class>
        <class>org.apache.juddi.model.TmodelCategoryBag</class>
        <class>org.apache.juddi.model.TmodelDescr</class>
        <class>org.apache.juddi.model.TmodelIdentifier</class>
        <class>org.apache.juddi.model.TmodelInstanceInfo</class>
        <class>org.apache.juddi.model.TmodelInstanceInfoDescr</class>
        <class>org.apache.juddi.model.TransferToken</class>
        <class>org.apache.juddi.model.TransferTokenKey</class>
        <class>org.apache.juddi.model.UddiEntity</class>
        <class>org.apache.juddi.model.UddiEntityPublisher</class>

        <properties>
            <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
            <property name="openjpa.Log" value="DefaultLevel=ERROR, Tool=ERROR"/>
            <property name="openjpa.jdbc.UpdateManager" value="operation-order"/>
            <property name="openjpa.RuntimeUnenhancedClasses" value="warn"/>

            <!-- h2 connection properties -->
            <property name="openjpa.ConnectionDriverName" value="org.h2.Driver"/>
            <property name="openjpa.ConnectionURL" value="jdbc:h2:repository/database/juddiv3"/>
            <property name="openjpa.ConnectionUserName" value="test"/>
            <property name="openjpa.ConnectionPassword" value="test"/>

            <!--  mysql connection properties
            <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/juddi"/>
            <property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/>
            <property name="openjpa.ConnectionUserName" value="juddiv3"/>
            <property name="openjpa.ConnectionPassword" value=""/>
            -->
            <property name="openjpa.Compatibility" value="CheckDatabaseForCascadePersistToDetachedEntity=true"/>
        </properties>
    </persistence-unit>
</persistence>

我收到以下错误

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@442ce698".
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:1510)
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:968)
at org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:959)
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 org.apache.juddi.config.PersistenceManager.getEntityManager(PersistenceManager.java:45)
at org.apache.juddi.config.AppConfig.getPersistentConfiguration(AppConfig.java:109)
at org.apache.juddi.config.AppConfig.loadConfiguration(AppConfig.java:95)
at org.apache.juddi.config.AppConfig.<init>(AppConfig.java:62)
at org.apache.juddi.config.AppConfig.getInstance(AppConfig.java:183)
at org.apache.juddi.config.AppConfig.getConfiguration(AppConfig.java:205)
at org.apache.juddi.Registry.start(Registry.java:55)

【问题讨论】:

  • 请,请,请设置 openjpa.RuntimeUnenhancedClasses=warn。该属性被禁用是有充分理由的,您将遇到已知的错误。我建议安装 -javaagent 或 buildtime 增强器。
  • 另外,还有其他您没有显示的连锁原因吗?
  • No..all 被提及..在哪里放置 openjpa.RuntimeUnenhancedClasses =warn ?它有什么用。它会解决我的问题吗?也没有明白“我建议获取 -javaagent 或构建时间增强器设置”是什么意思
  • 顺便说一句,我正在运行 OSGi 环境。还请找到我提供的带有链接的 persistence.xml 文件,在该链接中我已经定义了属性 openjpa.RuntimeUnenhancedClasses=warn。
  • 抱歉,请勿设置该属性...

标签: java hibernate jpa openjpa


【解决方案1】:

在您的 persistence.xml 配置文件中,您有几个数据源描述(MySQL 和 H2)。删除其中一个,然后重试。

【讨论】:

  • MySQL 连接属性被注释掉
  • 是的,它注释掉了。
猜你喜欢
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 2015-06-12
  • 2021-05-17
  • 1970-01-01
  • 2013-08-12
  • 1970-01-01
相关资源
最近更新 更多