2011-11-25 24 views
1

我使用振型2.6.0.I有两种类型的内容:二进制内容和元数据..JCR(振型)二元内容可序列化

二进制保存在JCR:所述CR节点的数据属性。我通过content.getProperty(“jcr:data”)。getBinary()...(其中内容是节点类型)获取内容

项目使用ehcache缓存解决方案。此缓存机制应扩展为我的二进制内容。 为了使它工作,我需要将节点的内容变成实现Serializable的东西。我的第一个目标是二进制,通过使用content.getProperty(“jcr:data”)。getBinary() 但我得到的错误,因为二进制不实现Serializable。

23:44:49,255错误[net.sf.ehcache.store.compound.factories.DiskStorageFactory] ​​7690f9c6-a6f0-412e-ba47-b8e43f77d1af的磁盘写入失败(它将被驱逐)::java.io .NotSerializableException:org.modeshape.jcr.JcrBinary

什么建议吗?

谢谢。

回答

1

找到一种方法来做到这一点...

我建立一个ByteArrayOutputStream对象,布特,在那里我正在写我是从contentNode.getProperty读取字节(“JCR:数据” ).getBinary()。getStream()。 最后,我返回一个对象(我写的实现Serializable的类的实例),它封装了来自bout.toByteArray()的字节[]

如果有更好的方法可以做到,请分享。

谢谢。

+0

这是序列化二进制值内容的最好(也是唯一的)方式。 JCR的二进制接口有意限制其公开的内容,允许实现支持懒惰,代理和/或远程访问存储的内容。 –

+0

很高兴收到你的来信,谢谢! – silverb77