use*_*656 3 google-app-engine persistence jdo vaadin google-cloud-datastore
我正在尝试使用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();
}
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
(...)引起:javax.jdo.JDOFatalUserException:必须指定名为javax.jdo.PersistenceManagerFactoryClass的属性,或者带有META-INF/services/javax.jdo.PersistenceManagerFactory条目的jar文件必须位于类路径中,或者必须指定名为javax.jdo.option.PersistenceUnitName的属性.NestedThrowables:javax.jdo.JDOUserException:您已为此PMF指定使用"transactions-optional"的"持久性单元"(但这不存在!)或您使用"transactions-optional"调用JDOHelper.getPersistenceManagerFactory作为位于javax.jdo.JDOHelper的javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:856)javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:1092)中属性文件的名称(并且不存在于CLASSPATH中) .appPersistenceManagerFactory(JDOHelper.java:914)at myapp.PMF.(PMF.java:8)... 43更多引起:javax.jdo.JDOUserException:您已指定此PMF使用"持久性单位" "transactions-optional"(但这不存在!)或者您将JDOHelper.getPersistenceManagerFactory称为"transactions-optional"作为属性文件的名称(并且这不存在于CLASSPATH中)(...)
我搜索了谷歌,发现了一些解决这个问题的方法,但没有一个适用于我的应用程序(或者我做错了什么).例如.这不行.哦,我在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>
Run Code Online (Sandbox Code Playgroud)
得到它了!
jdoconfig.xml
文件在
\战争\ META-INF
Eclipse创建的目录.应该在
\战争\ WEB-INF \类\ META-INF
愚蠢的错误......
| 归档时间: |
|
| 查看次数: |
4450 次 |
| 最近记录: |