Java 泽西1.91.x404错误

Java 泽西1.91.x404错误,java,tomcat,servlets,jersey,jersey-1.0,Java,Tomcat,Servlets,Jersey,Jersey 1.0,我在发出rest请求时遇到404错误。我的环境详情如下: 泽西岛1.91.1 ApacheTomcat/7.0.42 Java jdk1.7.0_80 我的web.xml如下所示 <web-app> <display-name>Archetype Created Web Application</display-name> <listener> <listener-class>com.company.gcs.zanshin.no

我在发出rest请求时遇到404错误。我的环境详情如下:

泽西岛1.91.1

ApacheTomcat/7.0.42

Java jdk1.7.0_80

我的web.xml如下所示

<web-app>
<display-name>Archetype Created Web Application</display-name>
<listener>
    <listener-class>com.company.gcs.zanshin.notificationengine.web.ContextStarter</listener-class>
</listener>
<servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.company.gcs.zanshin.notificationengine.web</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/operations/*</url-pattern>
</servlet-mapping>
HTTP请求

POST http://localhost:8080/notification/operations/file/upload HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 144
Accept: application/json, text/plain, */*
Origin: http://localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryYeOKGTo9xFMhvjUB
Referer: http://localhost:8080/notification/ui/index.html
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8,ur;q=0.6,hi;q=0.4,ar;q=0.2
HTTP响应

HTTP/1.1 404 Not Found
Server: Apache-Coyote/1.1
Content-Length: 0
Date: Fri, 20 May 2016 12:25:50 GMT
Java程序

@Path("/operations")
class FileRestPoints {

    @Path("/file/upload")
    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(MediaType.APPLICATION_JSON)
    public def upload(
            @FormDataParam("file") InputStream uploadedInputStream,
            @FormDataParam("file") FormDataContentDisposition fileDetail,
            @FormDataParam("notificationId") String notificationId)
    {
        FileUploader uploader = new FileUploader();

        String fileName = fileDetail.getFileName();

        def resp = uploader.upload(notificationId,fileName,uploadedInputStream)

        return toJson(resp);
    }
}

我通过在url中提供两次操作解决了这个问题,比如localhost:8080/notification/operations/operations/file/upload。这是因为在web.xml和Java类中都有关键字operations

我通过在url中提供operations两次来解决这个问题,比如localhost:8080/notification/operations/operations/file/upload。这是因为web.xml和Java类中都有关键字operations

“我在发出rest请求时遇到404错误”-那么您尝试了哪个url?[youAppName]/operations/operations/file/upload?@Stefan,我已经在HTTP请求头下给出了上面的url。通知是我的webapp名称。@Stefan,我得到了解决方案,我必须在我的url中使用operaitons double。但我不明白为什么要加倍?我在Java类中只使用过一次操作。有什么想法吗?将web.xml中的
/operations/*
更改为
/*
,但如果这样做,我将无法提供静态内容。通过在web.xml中使用/operations/*,我只控制web.xml中的REST请求。“我在发出REST请求时遇到404错误”-那么您尝试了哪个url?[youAppName]/operations/operations/file/upload?@Stefan,我已经在HTTP请求头下给出了上面的url。通知是我的webapp名称。@Stefan,我得到了解决方案,我必须在我的url中使用operaitons double。但我不明白为什么要加倍?我在Java类中只使用过一次操作。有什么想法吗?将web.xml中的
/operations/*
更改为
/*
,但如果这样做,我将无法提供静态内容。通过在web.xml中使用/operations/*,我只控制web.xml中的REST请求。
@Path("/operations")
class FileRestPoints {

    @Path("/file/upload")
    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(MediaType.APPLICATION_JSON)
    public def upload(
            @FormDataParam("file") InputStream uploadedInputStream,
            @FormDataParam("file") FormDataContentDisposition fileDetail,
            @FormDataParam("notificationId") String notificationId)
    {
        FileUploader uploader = new FileUploader();

        String fileName = fileDetail.getFileName();

        def resp = uploader.upload(notificationId,fileName,uploadedInputStream)

        return toJson(resp);
    }
}