Java 如何编写Jersey多部分webapp,Tomcat服务器
我一直在做很多REST教程,并且很喜欢。最近,我尝试用Netbeans编写一个jersey多部分webapp,但我似乎不能,因为我的jersey库似乎缺少了一些东西 我下载了jersey-multipart.jar文件,但仍然没有帮助: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
@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后,“媒体”没有作为选项出现,只有“消息”。