如何将javax.script.CompiledScript放入Oracle Coherence分布式缓存中?

时间:2014-05-12 21:19:30

标签: java distributed-caching oracle-coherence

我有一个模型对象,它将javax.script.CompiledScript作为成员变量。我试图将模型对象放在Oracle Coherence分布式缓存中,并且我正处于异常

之下
(Wrapped) java.io.NotSerializableException: com.sun.script.javascript.RhinoCompiledScript
     at com.tangosol.util.ExternalizableHelper.toBinary(ExternalizableHelper.java:210)
     at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.DistributedCache$ConverterValueToBinary.convert(DistributedCache.CDB:3)
     at com.tangosol.util.ConverterCollections$ConverterCacheMap.put(ConverterCollections.java:2433)
     at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.DistributedCache$ViewMap.put(DistributedCache.CDB:1)
     at com.tangosol.coherence.component.util.SafeNamedCache.put(SafeNamedCache.CDB:1)
     at com.tangosol.net.cache.CachingMap.put(CachingMap.java:939)
     at com.tangosol.net.cache.CachingMap.put(CachingMap.java:898)
     at com.tangosol.net.cache.CachingMap.put(CachingMap.java:810)
     at com.coname.caching.CoherenceCacheProvider.putAll(CoherenceCacheProvider.java:98)
     at com.coname.caching.CacheService.putAll(CacheService.java:91)
     at com.coname.model.modelname.configuration.MetadataConfigurationService.loadTheCache(MetadataConfigurationService.java:32)

我看到其他一些建议使用可移植对象格式(POF)序列化的问题。但我不知道com.sun.script.javascript.RhinoCompiledScript的内部对象表示,所以我不知道如何实现PofSerializer接口。如何将javax.script.CompiledScript放到Oracle Coherence分布式缓存中?

2 个答案:

答案 0 :(得分:0)

我找到了Alexey Ragozin的gridkit,它有ReflectionPofSerializer https://code.google.com/p/gridkit/wiki/ReflectionPofSerializer但是使用它得到了java.lang.StackOverflowError。尝试了AutoPofSerializer并获得了StackOverflowError。记录缺陷https://code.google.com/p/gridkit/issues/detail?id=24&colspec=ID%20Type%20Status%20Priority%20Component%20Milestone%20Owner%20Summary以获得Alexey的帮助。

答案 1 :(得分:-1)

看一下应该有效的https://github.com/aseovic/coherence-tools项目。

在com.seovic.core.expression.ScriptExpression类中查看具有脚本支持的核心模块。查看单元测试以及如何使用它的示例。

我目前正在使用该项目中的一些模块,并且经过了良好的测试和强大。我目前没有使用表达支持,所以我很想知道你的经验。

阿比纳夫