2012-08-07 34 views
0

我正在尝试配置和测试Riak for Grails插件。我已经通过删除它在BuildConfig中的依赖关系删除了hibernate插件。注意:我并不试图对GORM使用它,而只是使用spring数据支持进行查询。Riak for Grails插件 - 无法工作

我不得不添加下面两行,以避免删除休眠之后在运行时错误;

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。

谢谢!

+0

看来,如果我手动创建的下一桶名的键(使用curl)我试图通过代码访问 - 事情开始工作。 所以看来,如果你使用riakTemplate在NEW桶下创建一个键,那么事情就会失败。如果它使用现有的桶 - 它工作正常。 – Cadriel 2012-08-07 02:02:04

+0

标记。这些设置的方法似乎都不起作用,它们都与404错误。但是,如果您使用put方法(即它们为您生成密钥),它们似乎可以正常工作。 另外 - 如果您运行'containsKey'方法,例如,总是出现404不存在的键上的错误 - 但按照预期在存在的键上工作。 – Cadriel 2012-08-07 02:14:42

回答

0

我知道这不“回答这个问题,”但目前的一个项目,我们决定放弃这个插件,因为类似的问题,有利于直接在服务类中使用弹簧安置的。我认为这种方法对您也同样适用,因为您在顶部提到您并未尝试使用插件的GORM支持。

你应该找到一个直接的弹簧安置的办法很容易有更大的控制权映射减少和利用2I来实现。我还建议从Riak界面开始,尝试遵循Basho自己的Java客户端,这样如果您觉得您需要性能优势,您可能会发现在将来某个时候用Basho的PBC实现替换Rest实现会更容易。

对了Riak插件中特别需要注意:好像前一阵子又走到无限期搁置,铅,乔纳森布里斯宾,似乎特别关注新的Spring数据 - REST项目最近 - 也许新作上Riak插件将会“跳出来”吗?

-Todd

0

我这个问题命中以及,发现它是由于默认配置是使用DefaultErrorHandler底层RestTemplate。

要使RiakTemplate上404,你可以设置属性“ignoreNotFound”真不失败,它会再次工作。