使用cxf Web服务返回SolrDocument对象

时间:2013-09-15 11:23:33

标签: solr cxf

我们正在开发一个搜索应用程序。所有的东西都完成了,比如SOLR模式,搜索查询,分面搜索等。我尝试开发一个返回SolrDocument列表的cxf web服务。在我尝试将服务函数的返回类型设置为SolrDocument之前,一切正常。我知道CXF不会为没有空构造函数的java对象生成返回类型。对于SolrDocument对象是这样的吗?此外,我成功地使用CXF返回复杂的Java对象类型。要将SolrDocument作为对象返回,您提出的解决方案是什么?

我想到的一个想法是创建我自己的Document对象并将SolrDocument转换为该类型,但由于我已经将搜索结果作为SolrDocument,因此它很昂贵。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我已经解决了我的问题。该问题与SolrDocumentList有关。由于SolrDocumentList类不可序列化,因此CXF无法进行映射。解决方案是创建您的bean。例如,我们有一个VODItem.Class与Solr模式中定义的字段兼容,然后在搜索时我们必须这样做:

DocumentObjectBinder binder = new DocumentObjectBinder();
List<VodItem> vodResults = new ArrayList<VodItem>();
vodResults = binder.getBeans(VodItem.class, SolrDocumentList);

现在,Web服务可以执行必要的映射。