【问题标题】:Semicolon in parameter of REST service call with Apache CXF 2.3使用 Apache CXF 2.3 的 REST 服务调用参数中的分号
【发布时间】:2011-10-07 14:23:44
【问题描述】:

我尝试在 REST 服务中传递包含分号(保留符号)的参数,但我遇到了 Apache Tomcat 的问题

使用 Apache CXF 2.3 编写的 REST 服务

@GET
@Path("/getCmBuildAreas/{productName}/{projectName}/{buildConfiguration}")
@Produces(MediaType.APPLICATION_JSON)
public CmBuildAreas getCmBuildAreas(@PathParam("buildConfiguration") String buildConfiguration, @PathParam("productName") String productName, @PathParam("projectName") String projectName) {
...
}

然后我运行查询http://localhost:8080/DevManager/services/rest/getCmBuildAreas/QLARIUS/QLARIUS%3AMAINLINE_JAVA_STR/ANT_JAVA_BUILD%3B8 并收到此错误:

Jul 18, 2011 1:57:53 PM org.apache.cxf.jaxrs.utils.JAXRSUtils findTargetMethod
WARNING: No operation matching request path /DevManager/services/rest/getCmBuildAreas/QLARIUS/QLARIUS%3AAMAINLINE_JAVA_STR/ANT_JAVA_BUILD%3B8 is found, HTTP Method : GET, ContentType : */*, Accept : image/jpeg,application/x-ms-application,image/gif,application/xaml+xml,image/pjpeg,application/x-ms-xbap,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/*,.
Jul 18, 2011 1:57:53 PM org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper toResponse
WARNING: WebApplicationException has been caught : no cause is available

PS:如果您需要任何其他信息,请询问。

【问题讨论】:

  • /getCmBuildConfigurations/{productName}/{projectName} 应该如何匹配 /getCmBuildAreas/QLARIUS/QLARIUS%3AMAINLINE_JAVA_STR/ANT_JAVA_BUILD%3B8
  • 我注意到你的 URL 有 getCmBuildAreas 并且你的 @Path 注释有 getCmBuildConfigurations - 这些应该匹配吗?
  • 复制粘贴时出现一些错误...已修复
  • 您为什么认为问题出在分号上?当您使用更简单的参数调用服务时,您的服务是否有效?
  • 是的,即使我在 ANT_JAVA_BUILD%3B8 参数中传递冒号(%3A)而不是 %3B 或没有保留参数,它也能正常工作

标签: java tomcat rest cxf jax-rs


【解决方案1】:

Apache CXF 2.3 没有处理正确编码的分号的事实是由于该版本中的BUG。它已在 2.4、2.3.4 版本中修复。

【讨论】:

  • 它在 cxf 3.1.6 中被破坏了......
猜你喜欢
  • 2015-11-02
  • 2016-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
  • 2020-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多