有没有人成功配置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");
答案 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。*