gpt4 book ai didi

java - CXF 贾克斯 |生成的 wadl 中不存在复杂的响应类型

转载 作者:搜寻专家 更新时间:2023-11-01 00:52:17 24 4
gpt4 key购买 nike

我们使用 cxf 2.5.2 和 spring 来公开和使用 Restful 服务。为了分发服务接口(interface)类,我们开始使用 wadl2java 目标(它根据给定的 wadl 文件生成接口(interface)类)

生成的 wadl 不包含正确的响应类型,因此我猜,生成的接口(interface)都将“Response”作为返回类型。

例。如果 restful get 方法返回 'List' ,则生成的 wadl 仅包含以下段:

<response><representation mediaType="application/json"/></response>

并且从此 wadl 文件生成的相应接口(interface)包含返回类型为“Response”

有人可以建议需要做什么来防止实际响应类型丢失吗?是否需要任何注释(例如 ElementClass?如何使用它?)或提供程序?

当前代码:

@GET
@Path("/itemsForCategory")
@Produces("application/json")
@Description("getItemsForCategory")
public List<Item> getItemsForCategory(@QueryParam("category")String category) {

最佳答案

通用的“Response”返回类型似乎与您尝试返回列表这一事实无关。也就是说,即使使用“Item”作为返回类型也会在生成的接口(interface)中产生返回类型为“Response”的方法。要解决这个问题,您需要在 WADL 资源响应中添加元素属性:

<response><representation mediaType="application/json" element="item"/></response>

如果您直接修改 WADL,则此方法有效,可能支持也可能不支持等效的 JAX-RS 注释。这也不能解决您返回列表的问题。我的建议(我以前使用过)是创建一个封装列表返回类型的包装器列表类型(例如 ItemList)。

无论哪种情况,您都需要从自下而上转向自上而下(即,WADL 优先)实现。这应该不会太糟糕,因为您已经有了实现,您可以让它实现生成的接口(interface)。

为了澄清这一切,我基于标准的 JAX-RS“Bookstore”示例创建了一个简单的示例项目。您可以查看pom (使用 wadl2java 配置)和实际的 wadl在github上。生成的代码也在那里(例如,BookstoreidResource.java)。

关于java - CXF 贾克斯 |生成的 wadl 中不存在复杂的响应类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9408597/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com