如何使用Datanucleus + PostgreSQL配置Google Web Toolkit应用程序

时间:2010-08-14 15:22:35

标签: postgresql gwt google-cloud-datastore datanucleus

我使用GWT创建了一个应用程序,并支持Google数据存储,但现在我正在尝试将我的应用程序移动到我自己的服务器上,而且我还试图将我的应用程序从Google App Engine和Datastore中分离出来。

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

拜托,有人可以帮助我吗?

非常感谢! =)

1 个答案:

答案 0 :(得分:2)

我已经发现了如何做到这一点虽然我认为它应该更容易eheheh 在这里:

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

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

3)由于我们必须增强我们的域类以供datanucleus和JDO使用,我们有多个选项可以做到这一点。我使用了Apache Ant任务(来自Google App Engine SDK)。如果我们这样做,我们可以使用app引擎中的好部件(简单的类增强),但我们的应用程序不会受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驱动程序;

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

6)将这些罐子添加到Project Classpath;

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