我正在处理热身请求以最大限度地减少我的请求延迟: https ://developers.google.com/appengine/docs/java/config/appconfig#Warmup_Requests
在初始化期间,我执行:
PersistenceManager pm = PMF.get().getPersistenceManager();
..但从日志中我看到它没有解析存储类元数据的所有 .jdo 文件。它们仅在我第一次调用此函数“getObjectById”时才被解析(例如)..
是否可以强制 datanucleus 完全读取所有元数据以便在第一个 getObjectById 命中 PersistenceManager 时完全准备好?
谢谢你,米歇尔
==================================================== ============================= 更新:我尝试了这个persistence.xml文件:
<persistence-unit name="my-transaction">
<mapping-file><path-to-first-jdo-file></mapping-file>
<mapping-file><path-to-second-jdo-file></mapping-file>
<mapping-file><path-to-third-jdo-file></mapping-file>
<properties>
<property name="datanucleus.NontransactionalRead" value="true"/>
<property name="datanucleus.NontransactionalWrite" value="true"/>
<property name="datanucleus.ConnectionURL" value="appengine"/>
</properties>
</persistence-unit>
与 jdoconfig.xml 相关的:
<persistence-manager-factory name="my-transaction">
<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" />
<property name="datanucleus.appengine.allowMultipleRelationsOfSameType" value="true" />
<property name="datanucleus.appengine.datastoreReadConsistency" value="STRONG" />
<property name="datanucleus.appengine.ignorableMetaDataBehavior" value="ERROR" />
<property name="javax.jdo.option.Multithreaded" value="true"/>
<property name="javax.jdo.option.Optimistic" value="false" />
</persistence-manager-factory>
..但我继续在日志中看到以前的行为。在加载请求期间:
org.datanucleus.store.types.TypeManager addJavaType: Adding support for Java type <class>
.. 在第一个真正需要类映射的请求期间(例如 getObjectById):
org.datanucleus.metadata.xml.MetaDataParser parseMetaDataStream: Parsing MetaData file <class>.jdo
所以第一个检索对象的请求比后面的请求要长,因为它需要解析 XML 文件。怎么了?
我正在使用数据核 1.1.5
谢谢