2013-04-29 82 views
2

我已经创建了一个appengine,它运行正常,并以调试模式从Google云SQL数据库返回记录。当我部署appegine并运行端点时,会出现错误。而我在appengine日志中得到的错误是:为什么在部署appengine时出现Persistence.createEntityManagerFactory(“transactions-optional”)错误

引起:org.datanucleus.exceptions.NucleusUserException:没有可用的类型为“jdbc”的StoreManager。确保你已经将相关的DataNucleus商店插件放入CLASSPATH中,并且如果通过JNDI或DataSource定义了连接,则还需要提供持久性属性“datanucleus.storeManagerType”。

这里是一个列表,或在战争\ WEB-INF \ lib目录罐子:

  • 的AppEngine-API-1.0-SDK-1.7.6
  • 的AppEngine-API实验室
  • 的AppEngine -endpoints
  • 的AppEngine-jsr107cache-1.7.6
  • ASM-4.0
  • com.sun.tools.xjc_2.2.0
  • COM .sun.xml.bind_2.2.0.v201004141950
  • DataNucleus将-API-JDO-3.1.3
  • DataNucleus将-API的JP-A-3.1.3
  • DataNucleus将-的AppEngine-2.1.2
  • DataNucleus将核-3.1.3
  • 的EclipseLink
  • 的EclipseLink-JPA-modelgen_2.4.1.v20121003-ad44345
  • GCM-服务器
  • Geronimo的jpa_2.0_spec-1.0
  • javax.act ivation_1.1.0.v201108011116
  • javax.mail_1.4.0.v201005080615
  • javax.persistence_2.0.4.v201112161009
  • javax.xml.bind_2.2.0.v201105210648
  • javax.xml.stream_1.0.1.v201004272200
  • JDO-API-3.0.1
  • json_simple-1.1
  • jsr107cache-1.1
  • JTA-1.1
  • org.eclipse.persisten ce.jpars_2.4.1.v20121003-ad44345

这里是我的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

要下定决心这JPA你使用供应商...云SQL(不AppEngine上,所以你并不需要 “DataNucleus将-AppEngine上”,也不需要“DataNucleus将-API JDO “”或者FWIW)。你有DataNucleus JPA(实际上是版本3,但由于某种原因省略了datanucleus-rdbms jar,但CloudSQL需要它),并且你还有EclipseLink。然后你不要设置持久性提供者在persistence.xml因此,让它一切尝试给你一个机会......它尝试DataNucleus JPA,但你还没有包括这样的jar包:datanucleus-rdbms jar没有这些,你不能坚持RDBMS。

+0

感谢DataNucleus的帮助。我已经做出了您所建议的更改。当我在调试模式下运行appengine时,它现在会出现以下错误:“Catalog \”\“Schema \”\“中的javax.persistence.PersistenceException:缺少表格:\”MYTABLE' \“。DataNucleus要求此表格执行它的持久化操作,或者你的MetaData不正确,或者你需要启用\“datanucleus.autoCreateTables \”“。我需要做什么来解决这个问题?我有一个类似的错误,我在实体类中使用了@Table注解,但现在不能工作。 – 2013-04-29 20:47:27

+0

它告诉你该怎么做,添加该持久性属性 – DataNucleus 2013-04-30 02:40:20

+0

感谢DataNucleus的工作:) – 2013-05-02 19:32:11

相关问题