【问题标题】:DataNucleus, HBase, JDO: "A property named javax.jdo.PersistenceManagerFactoryClass must be specified"DataNucleus、HBase、JDO:“必须指定名为 javax.jdo.PersistenceManagerFactoryClass 的属性”
【发布时间】:2012-09-17 15:08:11
【问题描述】:

我在尝试遵循 DataNucleus HBase tutorial 时遇到异常(“必须指定名为 javax.jdo.PersistenceManagerFactoryClass 的属性”)。

我的 datanucleus.properties 文件(如下)没有指定这样的属性,但是教程也没有,DataNucleus HBase sample 也没有。

找到 3.1 样本后编辑:

src/main/resources/datanucleus.properties

javax.jdo.option.ConnectionURL=hbase:hx1:60010
javax.jdo.option.Mapping=hbase

datanucleus.metadata.validate=false
datanucleus.autoCreateSchema=true
datanucleus.validateTables=false
datanucleus.validateConstraints=false

src/main/java/hbase-site.xml

<?xml version="1.0"?>

<configuration> 
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>hx1:2181</value>
    <description>The host and port that the HBase master runs at.
    </description>
  </property>
</configuration>

src/main/com.business.model/package-hbase.xml

<?xml version="1.0"?>
<!DOCTYPE orm PUBLIC 
    "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 2.0//EN" 
    "http://java.sun.com/dtd/orm_2_0.dtd">
<orm>
    <package name="com.business.model">
        <class name="Recommendation" table="Recommendations">
            <field name="id" column="ID"/>
            <field name="documents" column="DOCUMENTS"/>
        </class>

        <class name="Document">
            <field name="id" column="ID"/>
            <field name="title" column="TITLE"/>
        </class>
    </package>
</orm>

任何想法我错过了什么?在 JPA 工作了几年后,我是 JDO 的新手。

【问题讨论】:

  • 您指的是已弃用示例的 v3.0 和教程的 v3.1。我会解决的。
  • 我已经复制了 3.1 示例,但仍然出现相同的错误。有什么想法吗?
  • 当我下载 3.1 示例时,取消注释“pom.xml”和“datanucleus.properties”中的 HBase 位并按照教程运行它,它工作正常(您可能需要更新版本hadoop-core、hbase、zookeeper 由于它们的依赖问题而更新到最近的东西)。当您的类路径中有多个 JDO 实现时,您只需要“javax.jdo.PersistenceManagerFactoryClass”(并且通过教程自述文件运行仅引入 DataNucleus),否则它会从 datanucleus-api-jdo.jar 中的服务文件中识别实现
  • 仅供参考,如果datanucleus.properties 文件的路径中有空格,则架构生成失败。
  • 这个例子对我不起作用:java.lang.NoSuchMethodError: org.apache.hadoop.hbase.HColumnDescriptor.setCompressionType。我不明白为什么,根据 POM,HBase 版本是 0.90.4,而我在类路径中看不到任何其他版本?

标签: java hbase jdo datanucleus


【解决方案1】:

我从未尝试过 HBase 教程,但您必须定义 javax.jdo.PersistenceManagerFactoryClass 属性。我的在 persistence.xml 文件(src/main/resources)中定义。属性定义:

<property name="javax.jdo.PersistenceManagerFactoryClass"
            value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory" />

您也可以在创建 PMF 时定义此属性。

更多详情在:http://db.apache.org/jdo/pmf.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    相关资源
    最近更新 更多