【问题标题】:jersey rest web service to return list of objects where objects contain byte array for filejersey rest web 服务返回对象列表,其中对象包含文件的字节数组
【发布时间】:2016-03-16 10:32:47
【问题描述】:

问题是返回包含一些文件相关信息的文件列表。

这是我的网络服务类:

@Path("/pdfsigning")
public class PdfSigningResource{    

    @EJB
    private PdfSigningFacadeInt pdfSigningFacadeInt;

    @POST
    @Path("/unsignedfilelist")
    @Produces({ MediaType.APPLICATION_OCTET_STREAM, MediaType.APPLICATION_JSON })
    public Response getUnsignedFileList() {

        List<FileInfoDto> unsignedFileInfoDtoList = pdfSigningFacadeInt
                .getUnsignedFileList();

        GenericEntity<List<FileInfoDto>> genericUnsignedFileInfoDtoList = new GenericEntity<List<FileInfoDto>>(
                unsignedFileInfoDtoList) {
        };
        return Response.ok(Status.OK).entity(genericUnsignedFileInfoDtoList)
                .build();

    }
}

省略了 getter/setter 的 FileInfoDto 类:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class FileInfoDto implements Serializable {

    private static final long serialVersionUID = 303766558349361898L;

    @XmlElement(name = "fileName")
    private String fileName;

    @XmlElement(name = "fileType")
    private String fileType;

    // other fields ...

    @XmlElement(name = "fileByteArray")
    private byte[] fileByteArray;

这里是 jersey-1 客户端:

public class FileService implements FileServiceInt {

   public List<FileInfoDto> getUnsignedFileList() {            

       //code to build url  

        WebResource unsignedFileListResource = unsignedFileListClient.resource(url);


        ClientResponse response = unsignedFileListResource.type(MediaType.APPLICATION_JSON)                                        .post(ClientResponse.class);

        if (Constants.CLIENT_RESPONSE_STATUS != response.getStatus()) {
            LOGGER.debug(">>>>>>>>>> Response Not OK <<<<<<<<<<<<<");
            //TODO throw proper exception
        } else {
            LOGGER.debug(">>>>>>>>>> Response OK <<<<<<<<<<<<<");
        }

        // This line throw exception
        List<FileInfoDto> entityList = response.getEntity(new GenericType<List<FileInfoDto>>() {
        });    

        return entityList;
    }

}

从服务器获得的响应是​​“OK”。但是这条线

List<FileInfoDto> entityList = response.getEntity(new GenericType<List<FileInfoDto>>() {
            });

抛出Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: javax/mail/internet/MimeMultipart

在 POM 中,我的依赖项为

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

我错过了什么?我们不能这样获取文件列表吗?

【问题讨论】:

    标签: java web-services rest jersey multipart


    【解决方案1】:

    对于此版本的球衣,使用 javax.mail.internet.MimeMultipart 需要 Java 邮件(请参阅 Jersey 1.x documentation / Mail and MIME multipart)。

    将此依赖项添加到您的 pom.xml:

    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.7</version>
    </dependency>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 2014-06-28
      相关资源
      最近更新 更多