2016-07-12 15 views
0

Ich habe eine Jersey-Anwendung für Fileupload. Und während des Startvorgangs oder wenn ich eine Datei in meine Anwendung hochlade, erhalte ich Fehler in den WebSphere-Ablaufverfolgungsprotokollen.Jersey-Anwendung - Fehler beim Start

Fehler:

The registered message body writers compatible with the MIME media type are: 
application/octet-stream -> 
    com.sun.jersey.core.impl.provider.entity.ByteArrayProvider 
    com.sun.jersey.core.impl.provider.entity.FileProvider 
    com.sun.jersey.core.impl.provider.entity.InputStreamProvider 
    com.sun.jersey.core.impl.provider.entity.DataSourceProvider 
    com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider 
*/* -> 
    com.sun.jersey.core.impl.provider.entity.FormProvider 
    com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider 
    com.sun.jersey.server.impl.template.ViewableMessageBodyWriter 
    com.sun.jersey.core.impl.provider.entity.StringProvider 
    com.sun.jersey.core.impl.provider.entity.ByteArrayProvider 
    com.sun.jersey.core.impl.provider.entity.FileProvider 
    com.sun.jersey.core.impl.provider.entity.InputStreamProvider 
    com.sun.jersey.core.impl.provider.entity.DataSourceProvider 
    com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General 
    com.sun.jersey.core.impl.provider.entity.ReaderProvider 
    com.sun.jersey.core.impl.provider.entity.DocumentProvider 
    com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider 
    com.sun.jersey.core.impl.provider.entity.SourceProvider$SourceWriter 
    com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General 
    com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General 

[7/12/16 13:26:16:263 CEST] 0000034e ContainerResp E Mapped exception to response: 500 (Internal Server Error) 
           javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class com.sun.proxy.$Proxy553, and Java type interface javax.servlet.http.HttpServletResponse, and MIME media type application/octet-stream was not found. 

     at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:284) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1510) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) 
     at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) 
     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) 

Web.xml

<servlet> 
     <servlet-name>my-service</servlet-name> 
     <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> 
     <init-param> 
      <param-name>jersey.config.server.provider.packages</param-name> 
      <param-value>my.app.service</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

pom.xml

<dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-server</artifactId> 
      <version>1.19</version> 
     </dependency> 

     <dependency> 
      <groupId>com.sun.jersey.contribs</groupId> 
      <artifactId>jersey-spring</artifactId> 
      <version>1.19</version> 
      <exclusions> 
       <exclusion> 
        <artifactId>spring-beans</artifactId> 
        <groupId>org.springframework</groupId> 
       </exclusion> 
       <exclusion> 
        <artifactId>spring-core</artifactId> 
        <groupId>org.springframework</groupId> 
       </exclusion> 
       <exclusion> 
        <artifactId>spring-web</artifactId> 
        <groupId>org.springframework</groupId> 
       </exclusion> 
       <exclusion> 
        <artifactId>spring-context</artifactId> 
        <groupId>org.springframework</groupId> 
       </exclusion> 
       <exclusion> 
        <artifactId>spring-aop</artifactId> 
        <groupId>org.springframework</groupId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

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

Ich bin nicht sicher, was das Problem war, Hier? Bitte helfen Sie.

Edit: 1

import com.fasterxml.jackson.databind.ObjectMapper; 
import com.sun.jersey.core.header.FormDataContentDisposition; 

@Autowired 
private ObjectMapper objectMapper; 

@POST 
@Path("/upload") 
@Consumes({MediaType.MULTIPART_FORM_DATA}) 
public HttpServletResponse attachDocument(@Context HttpServletRequest request, 
              @Context HttpServletResponse response, 
              @FormDataParam("file") InputStream fileInputStream, 
              @FormDataParam("file") FormDataContentDisposition filedata) { 

    String webServiceResponse = //call webservice here to store document 
    objectMapper.writeValue(response.getOutputStream(), webServiceResponse); 
} 
+0

Was ist die Ressourcenmethode, auf die die Ausnahme geworfen wird? –

+1

Können Sie den Java-Code angeben, auf den Ihre Anfrage trifft? –

+0

@ janol hinzugefügt Java-Klasse. – AJJ

Antwort

0

Sie wollen nicht HttpServletResponse von einer jaxrs Ressource Methode zurückzukehren. In diesem Fall ist das, was das Fehlerprotokoll sagt:

A message body writer for Java class com.sun.proxy.$Proxy553, and Java type interface javax.servlet.http.HttpServletResponse

Die Schnittstelle javax.servlet.http.HttpServletResponse (injiziert durch @Context) durch Proxy-Klasse com.sun.proxy.$Proxy553 umgesetzt wird. In Jersey gibt es dafür keine MessageBodyWriter (es sei denn, Sie fügen eine hinzu, was Sie nicht möchten).

Es gibt eine Reihe von in Jersey standardmäßig, vor allem die in jaxrs specification, Abschnitt 4.2.4 genannten. Sie wollten wahrscheinlich javax.ws.rs.core.Response zurückgeben, wie zum Beispiel:

return Response.ok(entity).build();