2014-05-06 94 views
0

我正在为几年前编写的Web服务编写一些单元测试。根类具有如下路径:验证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

没有理由让root_path/v1/path/orders/123423/status.xml路径给出404,除非其他内容正在作用于该URL。

事情尝试:

  • 凝视你的web.xml文件,看看有什么网址花样针织衫处理。该特定的URL可能由其他一些servlet处理;
  • 再次查看web.xml,看看您是否有any filters declared。过滤拦截的网址和过滤器对拦截的请求做了什么?
  • 这可能不是这种情况,但无论如何我会添加它......是否返回“404 - 找不到”或者它实际上是返回的“405 - 不允许的方法”?如果您尝试使用GET(例如浏览器)访问root_path/v1/path/orders/123423/status.xml网址,则会得到405,因为您的方法使用@POST进行了注释。你在使用POST吗?

我的赌注是过滤器!