2016-07-12 16 views
0

私はfileupload用のジャージーアプリケーションを持っています。また、起動時またはアプリケーションでファイルをアップロードするときに、WebSphereトレース・ログに以下のエラーが表示されます。ジャージーアプリケーション - 起動時のエラー

エラー:

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> 

私が問題だったかわかりませんここに?助けてください。

編集: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

例外がスローされるリソースメソッドとは何ですか? –

+1

リクエストがヒットした場所のJavaコードを提供できますか? –

+0

@ jan.subolがjavaクラスを追加しました。 – AJJ

答えて

0

あなたはjaxrsリソースメソッドからHttpServletResponseを返すようにしたくありません。

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

@Contextによって注入)インタフェースjavax.servlet.http.HttpServletResponseがプロキシクラスcom.sun.proxy.$Proxy553によって実装されます。この場合、それはエラーログが言うことです。ジャージーでは、それにはMessageBodyWriterはありません(追加しない限り、あなたがやりたいことではありません)。

デフォルトではの束があり、主にjaxrs specification、4.2.4項に記載されているものがあります。

関連する問題