Как настроить приложение Google Web Toolkit с помощью Datanucleus + PostgreSQL - PullRequest
2 голосов
/ 14 августа 2010

Я создал приложение, используя GWT и поддержку Google Datastore, но сейчас я пытаюсь переместить свое приложение на свой собственный сервер, а также пытаюсь отсоединить свое приложение от Google App Engine и от Datastore.

Если быть более точным: я хочу прекратить использование Google Datastore и начать использовать JDO и Datanucleus, но с PostgreSQL (или другой реляционной базой данных). Я попытался выполнить поиск в Datanucleus.org, но для меня не было простого учебника.

Пожалуйста, кто-нибудь может мне помочь?

Большое спасибо! =)

1 Ответ

2 голосов
/ 16 августа 2010

Я обнаружил, как это сделать, хотя я думаю, что это должно быть проще, хе-хе.
Вот оно:

1) Сначала мы должны настроить сервер PostgreSQL;

2) Создайте наше веб-приложение с помощью webAppCreator (из GWT SDK);

3) Поскольку мы должны улучшить наши доменные классы, чтобы они могли использоваться datanucleus и JDO, у нас есть несколько вариантов сделать это. Я использовал задачу Apache Ant (из Google App Engine SDK). Если мы сделаем это, мы сможем использовать хорошие части из движка приложения (простое улучшение класса), но наше приложение не будет привязано к ограничениям App Engine.
Дополнения к build.xml, созданные с помощью webAppCreator:

<!-- 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) Загрузите файл datanucleus-rdbms.jar со официальной страницы sourceforge;

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 datanucleusenhance ;

10) Это создаст расширенные классы и соединение с реляционной базой данных, а также сохранит информацию в таблицах PostgreSQL.

11) Если я не ошибаюсь и если я ничего не забыл, вот и все:)





Спасибо, что прочитали вопрос. Пожалуйста, если вы заметили что-то не так, вы можете сказать мне? Это мой первый раз здесь: P

==== Некоторые ссылки ====
http://code.google.com/intl/en/appengine/docs/java/tools/ant.html#Enhancing_JDO_Classes

...