我在项目中使用apache cxf来实现Jax-rs实现。我有以下地址定义的服务: http://ip:port/myservice/ {操作}Apache CXF - 处理操作中丢失的路径参数
考虑一个操作的定义如下
@Override
@GET
@Path("operation1/{x}/{y}")
@Produces("application/xml")
public String operation1(@PathParam("x") final String x, @PathParam("y") final String y) {
return null;
}
在请求者使得与一些操作名称的请求的情况下这个服务器未在myservice中定义,它将返回404,这是预期的行为。但是,在正确请求操作名称但路径参数不正确的情况下,我得到了相同的404。如果请求中缺少{x}或{y}路径参数,我想创建一个适当的错误。但我无法找到一种优雅的方式,我可以根据操作处理异常情况。在这种情况下,CXF从不映射到操作。
我有此异常映射:
}
将处理所有的错误情况,但它不提供任何资料的请求在异常哪个网址。 有没有办法可以在不定义路径参数的情况下为不同的操作处理异常? 对于例如:我想处理以下请求与一些自定义逻辑仅为operation1定义。 http://ip:port/myservice/operation1/20
我怎样才能把过滤器放在CXF中的特定URL模式? – ishan
你可以查看这篇文章https://www.safaribooksonline.com/library/view/java-ee-7/9781449370589/ch04.html或http://www.developerscrappad.com/1781/java/java -ee/rest-jax-rs/java -ee-7-jax-rs-2-0 -cors-on-rest-how-to-make-rest-apis-accessible-from-a-different-domain/ – VladS
我看着拦截器,发现它们过于复杂。我没有时间理解CXF中的整个拦截机制(您必须),但我仍然认为这将是更好的方法来处理错误。 – ishan