2014-09-29 115 views
0

myrequestcom.sun.jersey.api.client.UniformInterfaceException:myrequest返回的404响应状态未找到

POST http://someIPA:PORT/MyWARFILENAME/backend/Activation/Request

我得到了REST API调用404。这是我第一次尝试运行它。我知道我在这里错过了一些非常基本的东西。

Web.xml中

<servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>com.mycompany.backend.webservices</param-value> 
    </init-param> 

    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/webservices/*</url-pattern> 
</servlet-mapping> 

服务代码

package com.mycompany.backend.webservices; 
@Path("/Activation") 
public class Activation { 

    @POST 
    @Path("Request") 
    @Consumes({ MediaType.APPLICATION_JSON }) 
    public Response post(JAXBElement<CDeviceDetails> data) { 
     // Do my thing, set everything_is_ok to true/false 
     if (everything_is_ok) 
      return Response.ok(everthing).build(); 
     else 
      return Response.notModified().build(); 
    } 
} 

JUnit测试代码

// 
    // Activation Service 
    // 
    URI url = UriBuilder.fromUri(
      "http://" + SERVER + "/MyWARFILENAME/backend/Activation/Request") 
      .build(); 
    WebResource service = client.resource(url); 
    System.out.println(url); 
    // Get the data ready 
    CDeviceDetails newDevice = new CDeviceDetails(null, "mac id", "model", 
      "manufacturer", "androidVersion", Calendar.getInstance() 
        .getTime(), "buildID", "fingerPrint", "board", 
      "bootLoader", "hardware", "id", "product", "serial", Calendar 
        .getInstance().getTime(), Calendar.getInstance() 
        .getTime(), Globals.ACTIVE); 
    String deviceUniqueIdentity = service.type(MediaType.APPLICATION_JSON) 
      .post(String.class, newDevice); 
    assertNotNull(deviceUniqueIdentity); 
    System.out.println("Activation Passed " + deviceUniqueIdentity); 

服务器侧日志/var/log/tomcat7/localhost_access_log.2014-09-28.txt

IPA - - [TIMESTAMP] “POST/MyWARFILENAME /后端/激活/请求HTTP/1.1” 404 1049

这意味着请求到达服务器。即使在//做我的事..有一个例外,它应该没有关系,我不应该得到一个404

我怀疑web.xml上有什么可疑的东西。

+0

我不使用泽西岛,但我会想象URL模式'/ webservices/*'应该用作根。所以你可能想尝试在你尝试访问的路径中用'webservices'替换'backend'。 [**'404' **](http://en.wikipedia.org/wiki/HTTP_404)表示无法找到资源,如果uri路径不正确 – 2014-09-30 05:19:19

回答

0

我通过web.xml映射从webservices修改为backend,它开始工作。

<servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/backend/*</url-pattern> 
</servlet-mapping> 
相关问题