用于本地数据库的Appengine jdoconfig.xml

时间:2010-01-11 10:00:37

标签: google-app-engine postgresql jdo datanucleus

有没有人成功配置JDO datanucleus默认为谷歌应用引擎才能在本地数据库上工作?

为什么在指定属性“datanucleus.storeManagerType”且值为“rdbms”时,我总是在jdoconfig.xml中收到错误。在最后部分。

我尝试使用谷歌搜索,但似乎没有运气。

引起:org.datanucleus.exceptions.NucleusUserException:没有类型为“rdbms”的可用StoreManager。请确保您已正确指定“datanucleus.storeManagerType”并且所有相关插件都在CLASSPATH中

<persistence-manager-factory name="postgresql"> 
<property name="datanucleus.mapping.Schema" value="jdo"/>
<property name="javax.jdo.PersistenceManagerFactoryClass" value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/> 
<property name="datanucleus.ConnectionDriverName" value="org.postgresql.Driver"/> 
<property name="datanucleus.ConnectionURL" value="jdbc:postgresql://localhost:5432/jdo"/> 
<property name="datanucleus.ConnectionUserName" value="jdo"/> 
<property name="datanucleus.ConnectionPassword" value="jdo"/> 
<property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/> 
<property name="datanucleus.autoStartMechanism" value="None"/> 
<property name="datanucleus.autoCreateSchema" value="true"/> 
<property name="datanucleus.validateTables" value="true"/> 
<property name="datanucleus.validateConstraints" value="true"/> 
<property name="datanucleus.validateColumns" value="true"/> 
<property name="datanucleus.DetachAllOnCommit" value="true"/> 
<property name="datanucleus.maxFetchDepth" value="1"/> 
<property name="datanucleus.storeManagerType" value="rdbms"/>

PMF.java的代码

private static final PersistenceManagerFactory pmfInstance =
JDOHelper.getPersistenceManagerFactory("postgresql");

2 个答案:

答案 0 :(得分:4)

我记得通过在我的WEB-INF / lib中包含datanucleus-rdbms-X.Y.Z.jar来解决这个问题

答案 1 :(得分:2)

当使用除默认app-engine sdk的“transaction-optional”数据存储区之外的其他数据存储区时,您需要使用另一个Web应用程序容器,例如apache-tomcat或jetty,以便使用rdbms驱动程序类(即postgresql.jar) -org.postgresql.Driver,mysql.jar com.mysql.jdbc.Driver)工作,因为谷歌应用引擎禁止你的应用程序使用数据库驱动程序使用的java.net.socket。*