我们对JAX-RS @PATH映射有一些非常奇怪的行为(使用ReastEasy,Jackson 1.9)。
以下情景:
例如:
@Path('/')
public interface CarService extends AbstractService {
@POST @Consumes(...) @Produces(...)
@Path('/car/calculate')
Value doSomething(Car car);
}
/* This class has no jax rs annotations at all */
public class CarImpl implements CarService {
public void someMethodWithoutAnnotation(Currency ccy) { ... }
public Value doSomething(Car car) { ... }
}
现在,我在集成测试中执行以下请求:
POST url/carfoobar
是的 - 完全是'carfoobar'。
不是接收'405 - 不允许所请求的资源使用指定的HTTP方法。',我可以看到:
我的问题是:
为什么会这样?为什么重新尝试将传入的休息请求映射到方法上。在我看来,它应该抛出异常,找不到合适的路径。
此致
答案 0 :(得分:1)
您的CarService界面注释为@Path('/')
。 Jackson正确地调度了CarService接口的实现,即CarImpl。它找到了一个@POST @Path("carfoobar")
的方法,找不到它并为此抛出异常。