0

我正在尝试配置和测试 Riak for Grails 插件。我通过在 BuildConfig 中删除它的依赖项来删除了 hibernate 插件。注意:我并没有尝试对 GORM 使用它——而只是使用 spring 数据支持进行查询。

我必须添加以下两行以避免在删除休眠后运行时出错;

springConfig.addAlias "persistenceInterceptor", "riakPersistenceInterceptor"
springConfig.addAlias('transactionManager', 'riakTransactionManager')

该项目编译良好,并运行。但是 - 一旦我尝试使用任何 Riak 方法,我通常会得到 404 - Object not found 错误,或者更难以捉摸的东西。

文档建议我可以使用自动接线服务;

import org.springframework.data.keyvalue.riak.core.RiakTemplate

class myClass {

    // Service injection
    def riakTemplate

    def myMethod() {
        riakTemplate.set("myBucket", "myKey", "A String")
    }

}

但这不起作用。我试过了;

RiakTemplate riakTemplate = new riakTemplate("serviceurl", "mapredurl")
riakTemplate.set("myBucket", "myKey", "A String")

我的想法不多了。是否有指南或有助于使其正常工作的东西?

值得注意的是,我在本地主机上运行了 Riak,而且我可以使用 Curl 轻松管理密钥。所以我认为这不是 Riak 的问题。

我可能遗漏了一些明显的东西。:)

我正在运行 Grails 2.1.0。

谢谢!

4

2 回答 2

0

我知道这并不能“回答问题”,但是对于当前的项目,由于类似的问题,我们决定放弃插件,转而在服务类中直接使用 Spring Rest。我认为这种方法也适合您,因为您在顶部提到您没有尝试使用插件的 GORM 支持。

您应该会发现直接的 Spring Rest 方法相当容易实现,可以更好地控制 map reduce 和利用 2i。我还建议从尝试遵循 Basho 自己的 Java 客户端的 Riak 接口开始,这样如果您觉得需要性能优势,将来某个时候用 Basho 的 PBC 实现替换您的 Rest 实现可能会更容易。

关于 Riak 插件的一个特别说明:它似乎在不久前无限期搁置,而领导者 Jonathan Brisbin 似乎特别关注新的 Spring Data - 最近的 REST 项目 - 也许关于 Riak 插件的新工作会“春天”由此而来?

-托德

于 2012-08-17T16:26:13.877 回答
0

我也遇到了这个问题,发现这是因为默认配置是在底层 RestTemplate 中使用 DefaultErrorHandler。

要使 RiakTemplate 在 404 上不会失败,您可以将属性 'ignoreNotFound' 设置为 true,它会再次工作。

于 2013-04-09T12:57:22.180 回答