Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何编写Jersey多部分webapp,Tomcat服务器_Java_Rest_Tomcat_Netbeans - Fatal编程技术网

Java 如何编写Jersey多部分webapp,Tomcat服务器

Java 如何编写Jersey多部分webapp,Tomcat服务器,java,rest,tomcat,netbeans,Java,Rest,Tomcat,Netbeans,我一直在做很多REST教程,并且很喜欢。最近,我尝试用Netbeans编写一个jersey多部分webapp,但我似乎不能,因为我的jersey库似乎缺少了一些东西 我下载了jersey-multipart.jar文件,但仍然没有帮助: @Path("/file") public class UploadFileService { @POST @Path("/upload") @Consumes(MediaType.MULTIPART_FORM_DATA) pu

我一直在做很多REST教程,并且很喜欢。最近,我尝试用Netbeans编写一个jersey多部分webapp,但我似乎不能,因为我的jersey库似乎缺少了一些东西

我下载了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类的问题

我正在使用Tomcat7.0

如何在没有任何问题的情况下成功创建jersey多部分webapp?为什么Netbeans中的jersey库中不包含jersey多部分jar文件


谢谢。

这两种产品的进口是

import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.glassfish.jersey.media.multipart.FormDataParam;
如果使用Maven,请添加以下依赖项:

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-multipart</artifactId>
        <version>2.0</version>
        <type>jar</type>
    </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>2.7</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-multipart</artifactId>
            <version>2.7</version>
        </dependency>

org.glassfish.jersey.media
泽西岛媒体多部分
2
罐子

Lutz Horn有其道理,但是为了那些使用Netbeans 7.4(Java EE 6)并且仍在为这个问题而挣扎的人,下面一步一步介绍如何创建自己的多部分rest web服务,并在Tomcat上部署Netbeans。(注意,在Glassfish上部署需要稍微不同的配置,本答案中没有介绍)

首先,我的建议是创建一个maven web应用程序,而不是一个普通的web应用程序。原因是,JavaEE6附带的JAX-RS和Jersey库还不够,一旦你开始摆弄外部JAR,事情就会变得一团糟,尤其是Jersey。(希望在Netbeans 8.0(JavaEE7)中已经纠正了这一点)

(1) 创建一个maven web应用程序,选择JavaEE6和Tomcat7。完成后,您会注意到您没有web.xml。大多数多部分教程都会告诉您在web.xml文件中包含某些配置。别费心了。您不需要web.xml文件

(2) 通过手动编写或使用向导创建RESTfull web服务(右键单击maven web应用程序--New--Other--web服务--[选择所需的RESTful web服务])

(3) 打开pom.xml(您可以在maven web app的项目文件文件夹下找到它),并添加以下依赖项:

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-multipart</artifactId>
        <version>2.0</version>
        <type>jar</type>
    </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>2.7</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-multipart</artifactId>
            <version>2.7</version>
        </dependency>

org.glassfish.jersey.containers
jersey容器servlet
2.7
org.glassfish.jersey.media
泽西岛媒体多部分
2.7
如果您是第一次这样做,您需要一个活动的internet连接,因为maven将从其中央存储库下载依赖项

(4) 转到应用程序配置类或包含@ApplicationPath()的任何类。应该是这样的:

@javax.ws.rs.ApplicationPath("webresources")
public class ApplicationConfig extends Application {
    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> resources = new java.util.HashSet<Class<?>>();
        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<Class<?>> resources) {
        resources.add(com.mycompany.mavenrestuploader.UploaderResource.class);
    }
@javax.ws.rs.ApplicationPath(“webresources”)
公共类应用程序配置扩展应用程序{
@凌驾

public Set>resources=new java.util.HashSet以及
jersey media multipart
依赖项,而不是
Application
(见下文),您可以配置
ResourceConfig

@ApplicationPath("/")
public class AppConfig extends ResourceConfig {
    public AppConfig() {
        packages("packages.to.scan");
        register(MultiPartFeature.class);
    }
}
web.xml
中的Jersey REST配置:

<init-param>
    <param-name>jersey.config.server.provider.classnames</param-name>
    <param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
</init-param>

jersey.config.server.provider.classnames
org.glassfish.jersey.media.multipart.MultiPartFeature

“我的jersey库好像有什么东西丢失了。”“我无法使用FormDataContentDisposition类。”你有错误吗?它怎么不起作用。嗨,Lutz,我编辑了这个问题来解释到底发生了什么。嗨,Lutz,谢谢。不幸的是,我无法导入这些。输入org.glassfish.jersey后,“媒体”没有作为选项出现,只有“消息”。