【发布时间】:2015-02-18 15:44:33
【问题描述】:
我们有一个现有的应用程序,它使用 Oracle Coherence 集群将 POFable 对象放入/从集群缓存中取出。我正在尝试修改它以使用扩展代理来做同样的事情。到目前为止,我已经能够启动一个单独的代理进程来连接到我们的集群,并且我已经修改了现有应用程序的缓存配置以连接到扩展代理。在启动时,一切看起来都很愉快且相互关联。但是当我尝试将某些内容放入缓存时,这些对象最终的所有字段都未初始化。
在将键/值对放入缓存时,我没有更改任何客户端应用程序代码,因为据我了解,使用扩展应该对客户端是透明的。这是将对象放入缓存的代码:
// Initiliaze POF object from DB; MyObject implements EvolvablePortableObject
MyObject o = new MyObject();
o.setField1(...);
o.setField2(...);
o.setField3(...);
CacheFactory.getCache("cache-name").put(key, o, expireTime);
最终结果是对象最终进入缓存,其所有字段都未初始化(即全为零和空值)。我已经使用调试器确认在客户端内部,对象已完全初始化,并且它的所有字段都按我的预期填充。同样,我使用调试器显示在代理应用程序内部调用 MyObject.writeExternal() 时对象未初始化。所以客户端和代理之间出现了问题,但我不确定是什么。两者都指向相同的 POF 配置文件并具有相同的类路径,因此它们应该看到相同的 POF 方案和 Java 对象。我在客户端和代理上都将日志记录提高到了 9 级,但我没有看到任何不寻常的消息。当我在没有代理的情况下运行时,客户端能够毫无问题地将相同的对象放入缓存中。
【问题讨论】:
标签: oracle-coherence