我正在为多年前编写的Web服务编写一些单元测试。根类有一个类似的路径:
@Path("v1/path/")
public class RootResource {
...
}
类中的方法有各自的路径。一条工作路径是:
@GET
@Path("orders/{order_num}.xml")
@Produces(MediaType.APPLICATION_XML)
public Response getXML() {
...
}
这在root_path/v1/path/orders/123123.xml
处理正常。
然而,还有另一种方法:
@POST
@Path("orders/{order_numer}/status.xml")
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Response getStatusXML() {
Logger.info(CALLER, "orderStatusXML", "XML Request received");
...
}
当我尝试在root_path/v1/path/orders/123423/status.xml
访问此内容时,我得到404作为回报。日志中甚至缺少记录器的第一行。
我在Weblogic 12上,我们使用Jersey REST API来实现这些Web服务。
我已经尝试了很多方法来确保测试用例中列出的路径是正确的。关于如何检查正确路径的任何提示/想法?
答案 0 :(得分:0)
root_path/v1/path/orders/123423/status.xml
路径没有理由提供404,除非其他内容正在对该网址执行操作。
要尝试的事情:
web.xml
文件,查看Jersey处理的网址格式。该特定URL可能由其他一些servlet处理; web.xml
并查看您是否any filters declared。过滤器拦截了什么URL以及过滤器对请求做了什么?root_path/v1/path/orders/123423/status.xml
网址,例如从浏览器访问,则会获得405,因为您的方法使用@POST
进行了注释。你在使用POST吗?我的赌注是过滤器!