2

我使用 GWT 创建了一个应用程序并支持 Google Datastore,但现在我正试图将我的应用程序移动到我自己的服务器上,并且我还试图将我的应用程序与 Google App Engine 和 Datastore 分离。

更准确地说:我想停止使用 Google Datastore 并开始使用 JDO 和 Datanucleus 但使用 PostgreSQL(或其他关系数据库)。我尝试在 Datanucleus.org 中搜索,但没有可供我使用的简单教程。

请问,有人可以帮我吗?

非常感谢你!=)

4

1 回答 1

2

我已经发现了如何做到这一点,但我认为它应该更容易 eheheh。
它是这样的:

1)首先我们必须设置PostgreSQL服务器;

2) 使用 webAppCreator(来自 GWT SDK)创建我们的 Web 应用程序;

3) 由于我们必须增强我们的域类以供 datanucleus 和 JDO 使用,因此我们有多种选择。我使用了 Apache Ant 任务(来自 Google App Engine SDK)。如果我们这样做,我们可以使用来自 App Engine 的优秀部分(简单的类增强),但我们的应用程序不会受到 App Engine 的限制。
对使用 webAppCreator 创建的 build.xml 的补充:

<!-- this refers to the location of my Google AppEngine SDK -->
<property name="sdk.dir" location="C:/Projects/appengine-java-sdk" />
<import file="${sdk.dir}/config/user/ant-macros.xml" />

<target name="copyjars"
  description="Copies the App Engine JARs to the WAR.">
  <copy
    todir="war/WEB-INF/lib"
    flatten="true">
    <fileset dir="${sdk.dir}/lib/user">
       <include name="**/*.jar" />
    </fileset>
  </copy>
</target>

<target name="compile" depends="copyjars"
  description="Compiles Java source and copies other source files to the WAR.">
  <mkdir dir="war/WEB-INF/classes" />
  <copy todir="war/WEB-INF/classes">
     <fileset dir="src">
        <exclude name="**/*.java" />
     </fileset>
  </copy>
  <javac
     srcdir="src"
     destdir="war/WEB-INF/classes"
     classpathref="project.class.path"
     debug="on" />
</target>

<target name="datanucleusenhance" depends="compile"
        description="Performs JDO enhancement on compiled data classes.">
    <enhance_war war="war" />
</target>

4)从官网下载PostgreSQL JDBC Driver;

5)从官方sourceforge页面下载datanucleus-rdbms.jar文件;

6)将这些罐子添加到项目类路径中;

7)创建一个包含以下内容的文件:

javax.jdo.PersistenceManagerFactoryClass=org.datanucleus.jdo.JDOPersistenceManagerFactory
javax.jdo.option.ConnectionDriverName=org.postgres.jdbc.Driver
javax.jdo.option.ConnectionURL=jdbc:postgres://localhost:5432/myschool
javax.jdo.option.ConnectionUserName=root
javax.jdo.option.ConnectionPassword=rootroot
datanucleus.autoCreateTables=true

8) 像这样创建一个 PersistenceManagerFactory:

File propsFile = new File("Insert the location of the properties file here");
PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory(propsFile);

9) 创建领域类并运行新的 Ant Target datanucleusenhance

10) 这将创建增强的类和与关系数据库的连接,并将信息存储在 PostgreSQL 的表中。

11)如果我没记错的话,如果我没有忘记任何事情,那就是:)





感谢您阅读问题。拜托,如果你发现什么不对劲,你能告诉我吗?这是我第一次来这里:P

==== 一些参考 ====
http://code.google.com/intl/en/appengine/docs/java/tools/ant.html#Enhancing_JDO_Classes

于 2010-08-16T17:22:47.850 回答