0

我正在处理热身请求以最大限度地减少我的请求延迟: 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

谢谢

4

1 回答 1

1

指定定义所有类/映射文件的“persistence.xml”。然后在启动时读取/加载。也不支持旧版本的 DataNucleus,因此请使用较新版本的 GAE JPA 插件和 DataNucleus v3.x

于 2012-06-15T15:53:26.667 回答