我创建了一个运行良好的appengine,并以调试模式从我的Google云SQL数据库中返回记录。当我部署appegine并运行端点时,它会出错。我在appengine日志中得到的错误是:
引起:org.datanucleus.exceptions.NucleusUserException:没有类型为“jdbc”的可用StoreManager。确保已将相关的DataNucleus存储插件放在CLASSPATH中,如果通过JNDI或DataSource定义连接,则还需要提供持久性属性“datanucleus.storeManagerType”。
这是一个列表或war \ WEB-INF \ lib目录中的jar:
这是我的persistence.xml:
<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_2_0.xsd" version="2.0">
<persistence-unit name="transactions-optional" transaction-type="RESOURCE_LOCAL">
<provider></provider>
<class>com.example.myapp.Class1</class>
<class>com.example.myapp.Class2</class>
<properties>
<property name="datanucleus.NontransactionalRead" value="true"/>
<property name="datanucleus.NontransactionalWrite" value="true"/>
<property name="javax.persistence.jdbc.driver" value="com.google.appengine.api.rdbms.AppEngineDriver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:google:rdbms://something.com:someproj:someapp/somedb"/>
<property name="javax.persistence.jdbc.user" value=""/>
<property name="javax.persistence.jdbc.password" value=""/>
</properties>
</persistence-unit>
</persistence>
使用: 云sql JPA Datanucleous v2 SDK 1.7.6 Jre7
由于它在调试模式下工作正常,我不明白问题可能是什么,因为我是appengine的新手。如果您需要更多信息,请与我们联系。
谢谢你们。
答案 0 :(得分:0)
请注意您正在使用哪个JPA提供商...用于Cloud SQL(不是AppEngine,因此您不需要“ datanucleus-appengine ”,也不需要“ datanucleus-api-jdo “要么FWIW”。您有DataNucleus JPA(实际上是版本3,但出于某种原因省略了 datanucleus-rdbms jar,但CloudSQL需要它),并且您还拥有EclipseLink。然后,您不要在 persistence.xml 中设置持久性提供程序,因此请尽量将它放在哪一个尝试为您提供...并且它尝试DataNucleus JPA但您没有包含 datanucleus-rdbms jar,这样你就不能坚持使用RDBMS。