2014-09-29 57 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> 
相關問題