当前位置: 首页 > 知识库问答 >
问题:

使用@DefaultMethod注释时,Apache CXF不会通过http方法进行选择

姚臻
2023-03-14

我的资源中有两个POST方法和一个DELETE方法。他们有相同的道路。

我用@DefaultMethod注释了一个POST,所以当有人没有发送正确的Accept头时,将选择正确的方法。但这会导致当调用DELETE时,cxf选择POST而不是正确的DELETE方法。有什么解决办法吗?

断续器版本: 3.1.17

@DefaultMethod
@POST
@Consumes(MeasurementMediaType.MEASUREMENT_TYPE)
@Produces(MeasurementMediaType.MEASUREMENT_TYPE)
public Response post(MeasurementRepresentation measurementRepresentation, @HeaderParam(value = HttpHeaders.ACCEPT) String acceptHeader) URISyntaxException {
    ...
}

@POST
@Consumes(MEASUREMENT_COLLECTION_TYPE)
@Produces(MEASUREMENT_COLLECTION_TYPE)
public Response post(MeasurementCollectionRepresentation measurementCollectionRepresentation, @HeaderParam(value = HttpHeaders.ACCEPT) String acceptHeader) {
 ...
   }


@DELETE
public Response delete(
        @QueryParam("fragmentType") String fragmentType,
        @QueryParam("source") String source,
        @QueryParam("dateFrom") DateTime dateFrom,
        @QueryParam("dateTo") DateTime dateTo,
        @QueryParam("type") String type) {
...
}

java.lang.NullPointerException
at com.cumulocity.measurement.rest.resources.MeasurementCollectionResource.post(MeasurementCollectionResource.java:280)

共有1个答案

勾长卿
2023-03-14

两件事:

1) DefaultMethod似乎不是指要选择的默认方法,而是默认的HTTPMethod。所以它本质上覆盖了调用的httpmethod。这是JAX-RS的CXF扩展,所以你可以要求CXF团队更新功能或者为你的用例创建一个新的注释。

2)如果我没理解错的话,如果有人发送{"Hello":"World"}的正文,您希望调用第一个方法?那么在尝试构建您的测量表示时,您不会出现错误吗?如果他们发送了一个错误的请求,为什么不让CXF用适当的HTTP错误代码响应呢?

 类似资料:
  • 我有一个问题是通过元素的选择器获取元素。 我纠结的一个页面是:http://html5.haxball.com/。我成功的是登录,但这是一种黑客,因为我使用的事实,我需要填写的字段已经被选中。 在输入nick并进入大堂后,我想点击‘创建房间’按钮。其选择器:body>div>div>div>div>div>div>div.buttons>button:nth-child(3) 运行这样的代码后,我

  • 我正在使用Intellij13.1.5和Java8 SDK,我已经设置了IntelliJ内置的nullness检查器,以便使用作为我选择的注释。 现在,当我写一个像这样的简单类时 我的下一个猜测是,多个库使用相同的注释名称,可能会出现名称冲突。但不幸的是,警告没有指定包的确切类名。如果是这种情况,一定有某种设置启用隐式注释。 如何在不删除注释的情况下删除此警告?

  • 问题内容: 我使用我的uuid如下: 但是我收到了一个聪明的Hibernate警告: 使用org.hibernate.id.UUIDHexGenerator不会生成符合IETF RFC 4122的UUID值;考虑改用org.hibernate.id.UUIDGenerator 所以我想切换到,现在我的问题是如何将其告知Hibernate的生成器。我看到有人用它作为“hibernateuuid”-这

  • 问题内容: 注销HTTP身份验证受保护的文件夹的 正确 方法是什么? 有一些解决方法可以实现这一目标,但是它们可能会带来危险,因为它们可能有故障或在某些情况下/浏览器中无法使用。这就是为什么我要寻找正确和清洁的解决方案。 问题答案: 亩。 没有正确的方法 ,甚至没有跨浏览器一致的方法。 这是来自HTTP规范(第15.6节)的问题: 现有的HTTP客户端和用户代理通常会无限期地保留身份验证信息。HT

  • 本文向大家介绍PowerShell单行注释、多行注释、块注释的方法,包括了PowerShell单行注释、多行注释、块注释的方法的使用技巧和注意事项,需要的朋友参考一下 PowerShell的注释符分为行注释符和块注释符。行注释符使用井号(#)引起一行;块注释符使用“<#”和 “#>”来引起一段注释。 行注释符 举例如下: 块注释符、多行注释 举例如下: 这是小编每次写脚本之前,都会定义的一段关于脚

  • 如果在方法调用中忽略了一个异常,我们可以这样写: 我正在尝试编写一个自定义的注释,它具有相同的效果,但可以只应用于方法头。这可能看起来类似于以下内容: 如何创建这样的注释?