我有一个模型对象,它将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分布式缓存中?
答案 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类中查看具有脚本支持的核心模块。查看单元测试以及如何使用它的示例。
我目前正在使用该项目中的一些模块,并且经过了良好的测试和强大。我目前没有使用表达支持,所以我很想知道你的经验。
阿比纳夫