2013-12-16 9 views
1

Я пытаюсь выполнить загрузку файлов в проекте REST, запущенном на GlassFish Server 4.0.Библиотека библиотеки REST библиотеки NetBeans, конфликтующая с библиотекой Джерси: ModelValidationException

Сервер GlassFish (хотя я нахожу его сбивающим с толку) имеет свою версию библиотеки Джерси в библиотеке javax.ws.rs, которая до сих пор отлично работала, однако мне нужно использовать MediaType.MULTIPART_FORM_DATA и FormDataContentDisposition в REST сервер и не может найти их в GlassFish.

поэтому я скачал библиотеку Джерси и добавил

import com.sun.jersey.core.header.FormDataContentDisposition; 
import com.sun.jersey.multipart.FormDataParam; 

к библиотекам, на стороне сервера код

@ApplicationPath("webresources") 
@Path("/file") 
@Stateless 
public class FileResource 
{ 
    @POST 
    @Path("/upload") 
    @Consumes(MediaType.MULTIPART_FORM_DATA) 
    public Response uploadWeb(@FormDataParam("file") InputStream inputStream, 
      @FormDataParam("file") FormDataContentDisposition disposition) 
    { 
     int read = 0; 
     byte[] bytes = new byte[1024]; 
     try 
     { 
      while ((read = inputStream.read(bytes)) != -1) 
      { 
       System.out.write(bytes, 0, read); 
      } 
     } 
     catch (IOException ex) 
     { 
      Logger.getLogger(FileResource.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     return Response.status(403).entity(inputStream).build(); 
    } 
} 

Теперь, однако всякий раз, когда REST ресурс называется (даже те, которые ранее работали штраф) Я получаю ошибку:

org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization. 

Как исправить вышеуказанную ошибку? Как добавить поддержку jersey.multipart на сервер GlassFish?

+0

этот ответ может помочь: http://stackoverflow.com/questions/18252990/uploading-file-using -jersey-над-restfull-сервис-и-ресурсы-конфигурация – bruThaler

ответ

1

Ok нашел способ обойти с помощью следующей стороне сервера код, который использует только GlassFish доступные библиотеки:

@POST 
    @Path("/upload") 
    @Consumes(MediaType.MULTIPART_FORM_DATA) 
    public Response uploadWeb(InputStream inputStream) 
    { 
     DataInputStream dataInputStream = new DataInputStream(inputStream); 
     try 
     { 
      StringBuffer inputLine = new StringBuffer(); 
      String tmp; 
      while ((tmp = dataInputStream.readLine()) != null) 
      { 
       inputLine.append(tmp); 
       System.out.println(tmp); 
      } 
     } 
     catch (IOException ex) 
     { 
      Logger.getLogger(FileResource.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     return Response.status(403).entity(dataInputStream).build(); 
    }