2012-03-10 92 views
0

我试着在GAE上运行Tapestry。过了一段时间,我能够解决最后的错误,至少显示一个简单的页面。但是,说实话,某种数据存储会很好。 我试图使用tapestry-jdo,但是有我的问题:我无法使用JDO的任何部分,并且我已经尝试了几天。挂毯+ JDO + GAE

我会发布我的pom.xml文件,我已经工作了。我尝试了很多版本号的组合,但主要是测试JDO的actionlink失败,因为找不到org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory。 剩下的时间,我从tapestry得到一个未捕获的异常,这是由另一个缺少的JDO类引起的,但是这次不是在构建JDOEntityManagerSource的时候,而是在更深的地方。

我没有学过编程,我自己教过,所以我的知识面很有限。 此pom.xml可能包含针头条目。

如果我用maven构建它,在某些情况下我得到Could not transfer metadata asm:asm/maven-metadata.xml from/to local.repository (file:../../local.repository/trunk): No connector available to access repository local.repository

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.example</groupId> 
    <artifactId>Example</artifactId> 
    <version>0.1</version> 
    <packaging>war</packaging> 
    <name>Example</name> 
    <dependencies> 
     <dependency> 
      <groupId>org.apache.tapestry</groupId> 
      <artifactId>tapestry-core</artifactId> 
      <version>${tapestry-release-version}</version> 
     </dependency> 


     <dependency> 
      <groupId>com.google.appengine</groupId> 
      <artifactId>appengine-api-labs</artifactId> 
      <version>${gae.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>com.google.appengine</groupId> 
      <artifactId>appengine-api-1.0-sdk</artifactId> 
      <version>${gae.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>com.google.appengine</groupId> 
      <artifactId>appengine-java-sdk</artifactId> 
      <version>${gae.version}</version> 
      <type>pom</type> 
     </dependency> 

     <dependency> 
      <groupId>javax.jdo</groupId> 
      <artifactId>jdo2-api</artifactId> 
      <version>2.3-eb</version> 
     </dependency> 

     <dependency> 
      <groupId>com.google.appengine.orm</groupId> 
      <artifactId>datanucleus-appengine</artifactId> 
      <version>2.0.0-RC3</version> 
     </dependency> 


     <dependency> 
      <groupId>org.datanucleus</groupId> 
      <artifactId>datanucleus-rdbms</artifactId> 
      <version>${datanucleus.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.datanucleus</groupId> 
      <artifactId>datanucleus-core</artifactId> 
      <version>${datanucleus.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.tynamo</groupId> 
      <artifactId>tapestry-jdo</artifactId> 
      <version>0.0.1</version> 
     </dependency> 

     <!-- Provided by the servlet container, but sometimes referenced in the application code. --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
      <scope>provided</scope> 
     </dependency> 

    </dependencies> 
    <build> 
     <finalName>Example</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.2</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
        <optimize>true</optimize> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>net.kindleit</groupId> 
       <artifactId>maven-gae-plugin</artifactId> 
       <version>0.6.0</version> 
       <configuration> 
        <serverId>appengine.google.com</serverId> 
       </configuration> 
      </plugin> 

      <!-- 
         This plug-in "enhances" your domain model objects (i.e. 
         makes them persistent for datanucleus) 
        --> 
      <plugin> 
       <groupId>org.datanucleus</groupId> 
       <artifactId>maven-datanucleus-plugin</artifactId> 
       <version>1.1.4</version> 

       <configuration> 
        <mappingIncludes>**/entities/*.class</mappingIncludes><!--*/ just to stop formatig the rest of the code as comment--> 
        <verbose>true</verbose> 
        <enhancerName>ASM</enhancerName> 
        <api>JDO</api> 

       </configuration> 
       <executions> 
        <execution> 
         <phase>compile</phase> 
         <goals> 
          <goal>enhance</goal> 
         </goals> 
        </execution> 
       </executions> 
       <dependencies> 
        <dependency> 
         <groupId>org.datanucleus</groupId> 
         <artifactId>datanucleus-core</artifactId> 
         <version>${datanucleus.version}</version> 
         <exclusions> 
          <exclusion> 
           <groupId>javax.transaction</groupId> 
           <artifactId>transaction-api</artifactId> 
          </exclusion> 
         </exclusions> 
        </dependency> 
        <dependency> 
         <groupId>org.datanucleus</groupId> 
         <artifactId>datanucleus-rdbms</artifactId> 
         <version>${datanucleus.version}</version> 
        </dependency> 
        <dependency> 
         <groupId>org.datanucleus</groupId> 
         <artifactId>datanucleus-enhancer</artifactId> 
         <version>1.1.4</version> 
        </dependency> 
       </dependencies> 
      </plugin> 
     </plugins> 
    </build> 


    <repositories> 
     <repository> 
      <id>tapestry-snapshots</id> 
      <url>http://repository.apache.org/snapshots/</url> 
     </repository> 

     <repository> 
      <id>codehaus.snapshots</id> 
      <url>http://snapshots.repository.codehaus.org</url> 
     </repository> 

     <repository> 
      <id>maven-gae-plugin-repo</id> 
      <name>Maven Google App Engine Repository</name> 
      <url>http://maven-gae-plugin.googlecode.com/svn/repository/</url> 
     </repository> 

     <repository> 
      <id>data-nucleus</id> 
      <url>http://www.datanucleus.org/downloads/maven2/</url> 
     </repository> 
    </repositories> 

    <pluginRepositories> 
     <pluginRepository> 
      <id>tapestry-snapshots</id> 
      <url>http://repository.apache.org/snapshots/</url> 
     </pluginRepository> 
     <pluginRepository> 
      <id>maven-gae-plugin-repo</id> 
      <name>maven-gae-plugin repository</name> 
      <url>http://maven-gae-plugin.googlecode.com/svn/repository</url> 
     </pluginRepository> 

    </pluginRepositories> 

    <properties> 
     <tapestry-release-version>5.3.2</tapestry-release-version> 
     <gae.version>1.6.3</gae.version> 
     <datanucleus.version>1.1.5</datanucleus.version> 
    </properties> 
</project> 

回答

1

的DataNucleus将-的AppEngine插件V2应该通过DataNucleus罐V3.0使用。*与javax.jdo JDO-API V3.0.1 ......在 http://code.google.com/p/datanucleus-appengine/wiki/UpgradingToVersionTwo

按照该文档为GAE
+0

我想这就是解决方法,虐待它尽快尝试。你的链接说我应该使用org.datanucleus.api.jdo.JDOPersistenceManagerFactory,但官方文档仍然包含org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory – Quurks 2012-03-11 12:41:49