当前位置:  开发笔记 > 编程语言 > 正文

如何编写Jersey Multipart webapp,Tomcat Server

如何解决《如何编写JerseyMultipartwebapp,TomcatServer》经验,为你挑选了1个好方法。

我一直在做很多REST教程并享受它们.最近,我尝试用Netbeans编写一个球衣多部分webapp,但我似乎无法,因为它似乎缺少我的球衣库.

我下载了jersey-multipart.jar文件,但仍然没有帮助:

@Path("/file")
public class UploadFileService {

    @POST
    @Path("/upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadFile(
        @FormDataParam("file") InputStream uploadedInputStream,
        @FormDataParam("file") FormDataContentDisposition fileDetail) {

此代码来自博客.我试图将它放在我的webapp中,但@FormDataParam标记和FormDataContentDisposition类无法识别.我下载了jersey-multipart.jar,这似乎解决了@FormDataParam标记问题,但没有解决FormDataContentDisposition类.

我正在使用Tomcat 7.0.

如何成功创建一个没有任何问题的泽西多部件webapp?为什么在Netbeans的球衣库中不包含泽西多部件jar文件?

谢谢.



1> Akin_Glen..:

Lutz Horn有一个观点,但是为了那些使用Netbeans 7.4(Java EE 6)的人并且仍然在努力解决这个问题,这里有一步一步说明如何创建自己的多部分休息Web服务并在Tomcat上部署,Netbeans.(注意,在Glassfish上部署需要稍微不同的配置,本答案中未涉及).

首先,我的建议是创建一个maven Web应用程序而不是一个普通的Web应用程序.原因是,Java EE 6附带的JAX-RS和Jersey库还不够,一旦你开始摆弄外部罐子,事情往往会变得混乱,尤其是泽西岛.(希望在Netbeans 8.0(Java EE 7)中已经纠正了这个问题).

(1)创建一个maven web-app,选择Java EE 6和Tomcat 7.一旦完成,你会发现你没有web.xml.大多数多部分教程将告诉您在web.xml文件中包含某些配置.不要为此烦恼.您不需要web.xml文件.

(2)通过手动编写或使用向导创建RESTfull Web服务(右键单击您的maven web-app - 新建 - 其他 - Web服务 - [选择您想要的RESTful Web服务])

(3)打开你的pom.xml(你可以在maven web-app 的Project Files文件夹下找到它)并添加这些依赖项:

        
            org.glassfish.jersey.containers
            jersey-container-servlet
            2.7
        
        
            org.glassfish.jersey.media
            jersey-media-multipart
            2.7
        

如果你是第一次这样做,你需要一个有效的互联网连接,因为maven将从其中央存储库下载依赖项.

(4)转到ApplicationConfig类或包含@ApplicationPath()的任何类.它应该如下所示:

@javax.ws.rs.ApplicationPath("webresources")
public class ApplicationConfig extends Application {
    @Override
    public Set> getClasses() {
        Set> resources = new java.util.HashSet>();
        resources.add(MultiPartFeature.class);
        addRestResourceClasses(resources);
        return resources;
    }

    /**
     * Do not modify addRestResourceClasses() method.
     * It is automatically populated with
     * all resources defined in the project.
     * If required, comment out calling this method in getClasses().
     */
    private void addRestResourceClasses(Set> resources) {
        resources.add(com.mycompany.mavenrestuploader.UploaderResource.class);
    }

注意:resources.add(MultiPartFeature.class); 这必须包括在内,否则泽西多部分将不起作用.

我将这行代码放在getClasses方法而不是addRestResourceClasses方法的原因是因为只要资源类发生更改,addRestResourceClasses方法就会被修改,如果在那里包含MultiPartFeature代码,它将被删除.

一旦你完成了所有这些事情,你就会很高兴.

如果您只是想创建一个没有multipart的RESTful Web服务,请按照步骤1到3进行操作,但在步骤3中不要包含jersey-media-multipart依赖项.

我希望这可以帮助你 ;)

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有