2

GWT と Google Datastore のサポートを使用してアプリケーションを作成しましたが、アプリケーションを独自のサーバーに移動しようとしており、Google App Engine と Datastore からアプリケーションを切り離そうとしています。

より正確に言えば、Google Datastore の使用をやめて、JDO と Datanucleus の使用を開始したいのですが、PostgreSQL (または他のリレーショナル データベース) を使用したいと考えています。Datanucleus.org で検索してみましたが、使用できる簡単なチュートリアルはありませんでした。

誰か助けてくれませんか?

どうもありがとうございました!=)

4

1 に答える 1

2

私はそれを行う方法を発見しましたが、もっと簡単にすべきだと思います。
ここに行きます:

1) まず、PostgreSQL サーバーをセットアップする必要があります。

2) webAppCreator (GWT SDK から) を使用して Web アプリケーションを作成します。

3) データニュークリアスと 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 ドライバーをダウンロードします。

5) sourceforge の公式ページから datanucleus-rdbms.jar ファイルをダウンロードします。

6) これらの jar をプロジェクト クラスパスに追加します。

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

于 2010-08-16T17:22:47.850 に答える