3

JDOを使用してGAEプラットフォームでVaadinアプリケーションを作成しようとしていますが、このメソッドを呼び出したい場合:

public void createUser(String login, String password, String email) {
    PersistenceManager pm = PMF.get().getPersistenceManager();
    User user = new User(login, password, email);
    try {
        pm.makePersistent(user);
    } finally {
        pm.close();
    }

}

次のエラーが表示されます。

(...)原因: javax.jdo.JDOFatalUserException: javax.jdo.PersistenceManagerFactoryClass という名前のプロパティを指定する必要があります。または、META-INF/services/javax.jdo.PersistenceManagerFactory エントリを含む jar ファイルがクラスパスに存在する必要があります。または、javax.jdo.option.PersistenceUnitName という名前のプロパティを指定する必要があります。NestedThrowables: javax.jdo.JDOUserException: この PMF に「transactions-optional」の「persistence-unit」を使用するように指定したか (まだ存在しません!)、「transactions-optional」を指定して JDOHelper.getPersistenceManagerFactory を呼び出しました。 javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:856) のプロパティー・ファイルの名前 (これは CLASSPATH に存在しません) javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:1092) の javax.jdo.JDOHelper .

Google を検索したところ、この問題の解決策がいくつか見つかりましたが、私のアプリではうまくいきません (または、間違ったことをしています)。たとえば。これはうまくいきません。ああ、META-INF に jdoconfig.xml ファイルがあります。誰かが同様の問題を抱えていて、彼の知恵を共有したいのであれば、私は非常に感謝しています.

編集: jdoconfig ファイル:

<?xml version="1.0" encoding="utf-8"?>
<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig">
    <persistence-manager-factory name="transactions-optional">
        <property name="javax.jdo.PersistenceManagerFactoryClass"
            value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory" />
        <property name="javax.jdo.option.ConnectionURL" value="appengine" />
        <property name="javax.jdo.option.NontransactionalRead" value="true" />
        <property name="javax.jdo.option.NontransactionalWrite"
            value="true" />
        <property name="javax.jdo.option.RetainValues" value="true" />
        <property name="datanucleus.appengine.autoCreateDatastoreTxns"
            value="true" />
    </persistence-manager-factory>
</jdoconfig> 
4

1 に答える 1

6

とった!

jdoconfig.xml

ファイルが入っていた

\war\META-INF

Eclipse が作成したディレクトリ。入っているはず

\war\WEB-INF\classes\META-INF

ばかな間違い...

于 2012-05-02T20:10:18.470 に答える