自从我今天更新到GAE 1.7.2.1以来,我在所有jdoconfig.xml文件中都在eclipse中遇到验证错误.
我有默认的jdoconfig.xml内容:
[...]
<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">
[...]
Run Code Online (Sandbox Code Playgroud)
并且eclipse验证抛出:
Referenced file contains errors (http://java.sun.com/xml/ns/jdo/jdoconfig).
For more information, right click on the message in the Problems View and
select "Show Details..."
Run Code Online (Sandbox Code Playgroud)
点击细节我可以看到一堆如下的行:
s4s-elt-character: Non-whitespace characters are not allowed in schema elements
other than 'xs:appinfo' and 'xs:documentation'. Saw 'var_U = "undefined";'.
Run Code Online (Sandbox Code Playgroud)
在"Saw ......"中的不同行和不同内容
它发生在我开始使用谷歌插件中的"新建Web应用程序项目..."的每个项目中.
所以有人有这个问题吗?任何修复?
通过appstats,我可以看到我的数据存储区查询大约需要125ms(api和cpu组合),但在执行查询之前通常会有很长的延迟(例如最多12000ms).
我可以看到来自数据存储区的延迟与我的查询无关(例如,相同的查询/数据具有截然不同的延迟),所以我假设它是app引擎的调度问题.
其他人是否也看到同样的问题?
有没有减少延迟(例如管理控制台设置)?
这是appstats的屏幕截图.这个servlet只有很少的cpu处理.它执行getObjectByID,然后执行数据存储区查询.该查询具有OR运算符,因此它被app引擎转换为3个查询.
.如您所见,在第一个getObjectByID执行之前需要6000ms.get操作之前没有处理(除了获取pm).我认为这6000ms的延迟可能是由于实例预热,所以我将我的空闲实例增加到2以防止任何热身.
然后在getObjectByID和查询之间有大约1000ms的第二个延迟.get和查询之间没有代码行.代码只是获取getObjectByID的结果,并将数据用作查询的一部分.
总计是8097ms,但我的数据存储操作(以及99%的servlet)只有514ms(45ms api),尽管每次运行servlet时数字都会改变.这是另一个appstats屏幕截图,它是针对相同数据在同一个servlet上运行的.

这是我的java代码的基础知识.出于安全考虑,我不得不删除一些细节.
user = pm.getObjectById(User.class, userKey);
//build queryBuilder.append(...
final Query query = pm.newQuery(UserAccount.class,queryBuilder.toString());
query.setOrdering("rating descending");
query.executeWithArray(args);
Run Code Online (Sandbox Code Playgroud)
编辑:使用Pingdom,我可以看到GAE延迟从450毫秒到7,399毫秒不等,或差异为1,644%!! 这是两个空闲实例,网站上没有用户.

我正在接近Gwt + Gae世界.
我的基本需求是通过Gwt-Rpc发送我的实体类,而不是将它们复制到DTO中.
Objectify承诺很好地做到这一点.它声称它将隐藏所有"Jdo复杂性".
我从未使用过Jpa或Jdo技术. 所有的复杂性在哪里?
我的意思是,你能否提供一些关于JDO中复杂任务的简单例子,Objectify琐碎了吗?
也许关系?
Google App Engine的大部分文档都是为JDO编写的.只有一页文档专门用于使用JPA.这是因为JDO更适合App Engine,还是有其他理由给予JDO优惠待遇?
Eclipse标记选项卡显示一些xml问题.当我检查这发生dynamic web module在Project Facets.
这是我的项目层次结构:
jdconfig.xml (自动生成):
<?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.api.jdo.JDOPersistenceManagerFactory"/>
<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"/>
<property name="datanucleus.appengine.singletonPMFForName" value="true"/>
</persistence-manager-factory>
</jdoconfig>
Run Code Online (Sandbox Code Playgroud)
标记窗口中显示的错误:
cvc-elt.1: Cannot find the declaration of element 'jdoconfig'.
Run Code Online (Sandbox Code Playgroud)
我收到此错误的原因是什么?
还有,是什么jdoconfig.xml?
我在谷歌应用引擎中有一个工作正常.我意识到我忘记实现的JDO增强对象中的一个等于和hashCode(我需要在一个集合中使用该对象).所以我做了.我没有在这些实现中做任何特别的事情,事实上我只是使用Eclipse来生成它们.像这样:
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String appleId;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((appleId == null) ? 0 : appleId.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (appleId == null) {
if (other.appleId != null) …Run Code Online (Sandbox Code Playgroud) 我正在使用jdo并使用jdoconfig.xml配置持久性管理器
然而,无论在哪里找到有关jdoconfig.xml的文档,它都声明应该使用http://java.sun.com/xml/ns/jdo/jdoconfig进行验证.
<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">
etc
Run Code Online (Sandbox Code Playgroud)
此URL指向不存在的文件,我的xml验证程序报告错误.甚至使用它的目的是什么,我们是否可以相信网址不会改变,我们所有的xml文件都会突然停止验证?
有谁知道新的网址?
我试图链接所有这些技术,但有许多孤立的例子,我没有足够的经验将它们链接在一起
所以我的问题:是否有类似的例子?可以将UIBinder与杜松子酒一起使用吗?有任何建议可以实施吗?
我有一个存储在GAE数据存储区中的持久化类.我已从课程中删除了其中一个属性.此表中的新记录显示<none已删除属性的值>.但有没有办法可以完全放弃这个专栏?
谢谢.
根据moraes的建议添加了以下"迁移"代码,但未达到预期效果:
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
Query q = pm.newQuery(UserLogin.class);
Collection<UserLogin> list = (Collection<UserLogin>) q.execute();
Iterator<UserLogin> iter = list.iterator();
while (iter.hasNext()) {
UserLogin obj = (UserLogin) iter.next();
obj.setLoginDate(obj.getLoginDate());
}
pm.makePersistentAll(list);
} finally {
pm.close();
}
Run Code Online (Sandbox Code Playgroud)