0

I'm a little stuck on an issue we're having deploying a web service. I have tried seemingly everything (although obviously that's not true).

These are my jersey dependencies:

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-servlet</artifactId>
        <version>1.17</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey.contribs</groupId>
        <artifactId>jersey-multipart</artifactId>
        <version>1.17</version>
    </dependency>

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-bundle</artifactId>
        <version>1.17</version>
    </dependency>

    <dependency>
        <groupId>org.jvnet</groupId>
        <artifactId>mimepull</artifactId>
        <version>1.6</version>
    </dependency>

Here is the code I have for one of the services:

@POST
@Path("/")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces("text/plain")
public String uploadFile(@FormDataParam("uploadID") String uploadID,
        @FormDataParam("file") InputStream uploadedFile,
        @FormDataParam("file") FormDataContentDisposition fileDetail) {


    UploadServiceHandler handler = uploadHandlers.get(uploadID);

    if (!isValidParameters(uploadID, uploadedFile, fileDetail, handler)
            || uploadID.length() == 0) {
        log.info(uploadID + " received upload ERROR Invalid Request");
        return new MessagesBean(ResponseTypes.ERROR, 1, "Invalid Request")
                .toJSONString();
    }

    handler.init(uploadedFile, UPLOAD_PATH);
    uploadHandlers.put(uploadID, handler);
    log.info(uploadID + " started file upload");
    handler.handleRequest();
    String jsonString = handler.bean().toJSONString();

    DaemonCleaner.addPath(handler.getDeletePath());
    uploadHandlers.remove(handler.getUploadID());
    handler.destroy();

    return jsonString;
}

Here is the resulting stack trace from Jersey

SEVERE: The following errors and warnings have been detected with resource and/or provider classes:
  WARNING: A sub-resource method, public java.lang.String org.isatools.resources.UpdateServices.update(java.lang.String), with URI template, "/", is treated as a resource method
  WARNING: A sub-resource method, public java.lang.String org.isatools.resources.UploadServices.uploadFile(java.lang.String,java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition), with URI template, "/", is treated as a resource method
  SEVERE: Missing dependency for method public java.lang.String org.isatools.resources.UploadServices.postInit(java.lang.String,long) at parameter at index 0
  SEVERE: Missing dependency for method public java.lang.String org.isatools.resources.UploadServices.postInit(java.lang.String,long) at parameter at index 1
  SEVERE: Method, public java.lang.String org.isatools.resources.UploadServices.postInit(java.lang.String,long), annotated with POST of resource, class org.isatools.resources.UploadServices, is not recognized as valid resource method.
  SEVERE: Missing dependency for method public java.lang.String org.isatools.resources.UploadServices.uploadFile(java.lang.String,java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) at parameter at index 0
  SEVERE: Missing dependency for method public java.lang.String org.isatools.resources.UploadServices.uploadFile(java.lang.String,java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) at parameter at index 1
  SEVERE: Missing dependency for method public java.lang.String org.isatools.resources.UploadServices.uploadFile(java.lang.String,java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) at parameter at index 2
  SEVERE: Method, public java.lang.String org.isatools.resources.UploadServices.uploadFile(java.lang.String,java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition), annotated with POST of resource, class org.isatools.resources.UploadServices, is not recognized as valid resource method.

Thanks in advance for any assistance!

Eamonn
  • 537
  • 5
  • 22

1 Answers1

1

This was due to a hidden conflicting dependency coming in from another package which had a dependency reduced pom (so you can't see the actual imported dependencies in the IDE).

This error has at least disappeared. Now I continue to fight with conflicts!

Eamonn
  • 537
  • 5
  • 22
  • What package contained the hidden conflicting dependency? – Faheem Dec 02 '13 at 19:28
  • 1
    I honestly don't remember at this point, it was rather long ago. The general problem is having a dependency that references an older version of Jersey. When importing dependencies from Maven, some will have their full dependency trails visible from the POM, however, some won't due to dependencies being reduced by the apache shade plugin (and the use of the **createDependencyReducedPom** element). – Eamonn Dec 03 '13 at 20:51