什么Jersey(有RESTful Web服务支持)版本我需要为JDK 1.6下载吗?请提供下载的URL,将会很有帮助。 我还需要文件上传支持。客户端和服务器端的jar依赖关系是什么?
用于文件上载的REST服务器代码如下所示:
@Path("/file")
public class FileService {
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void uploadFile(@FormDataParam("file") InputStream uploadedInputStream,@FormDataParam("file") FormDataContentDisposition aFileDetail) {
OutputStream os = null;
try {
File fileToUpload = new File("D:/uploadedFile");
os = new FileOutputStream(fileToUpload);
byte[] b = new byte[2048];
int length;
while ((length = uploadedInputStream.read(b)) != -1) {
os.write(b, 0, length);
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
os.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
客户端代码如下所示:
Client client = ClientBuilder.newBuilder()
.register(MultiPartFeature.class).build();
WebTarget webTarget = client.target(REST_SERVICE_URL);
MultiPart multiPart = new MultiPart();
FileDataBodyPart fileDataBodyPart = new FileDataBodyPart("file",
new File("d:/classes12-1.jar"),
MediaType.APPLICATION_OCTET_STREAM_TYPE);
multiPart.bodyPart(fileDataBodyPart);
Response response = webTarget.request(
MediaType.MULTIPART_FORM_DATA).post(
Entity.entity(multiPart, multiPart.getMediaType()));
答案 0 :(得分:7)
你需要Jersey版本2.6。使用Java 7编译2.6之后的任何内容。您可以下载" bundle"来自Maven中心。捆绑包带有捆绑在一个罐子里的所有核心罐子
jaxrs-ri-2.6.jar
(包括服务器和客户端)核心捆绑包没有Multipart支持。您需要添加jersey-media-multipart
jar。您可以从here下载它。除了这个罐子,还需要一个罐子。如果您在链接中向下滚动,您会看到mimepull
1.9.3的链接。你也需要下载它。
如果您正在使用Maven,那么您实际上只需要这两个依赖项
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.6</version>
</dependency>
如果客户端项目是一个不同的项目,那么在客户端项目中,您应该只添加以下依赖项和上面的多部分依赖项
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.6</version>
</dependency>
如果客户端项目没有使用Maven或其他依赖管理系统,那么你将很难按顺序获取所有的jar,因为没有一个jar包含所有内置的jar只为客户端。你可以只使用上面的jaxrs-ri
jar,但它是一个大jar,因为它也包含所有服务器类。因此,如果你需要它来说一个Android客户端,它可能不是一个好主意使用。在这种情况下,最好只使用像Maven或Gradle这样的依赖管理器。
另见:
如果它不仅仅适用于jaxrs-ri-2.6.jar
jar,请尝试从上面的同一链接下载jaxrs-ri-2.6.tar.gz
。解压缩并添加每个目录中的所有jar
答案 1 :(得分:4)
2.x分支:
在版本2.6之前,Jersey是使用Java SE 6编译的。这在Jersey 2.7中已经发生了变化。
最高版本2.25.x几乎所有Jersey组件都使用Java SE 7目标进行编译。这意味着,您至少需要Java SE 7才能编译和运行使用最新Jersey的应用程序。只有核心公共和核心客户端模块仍然使用Java SE 6运行的Java类版本进行编译。
从Jersey 2.26开始,所有模块都是使用Java SE 8构建的,并且不支持在较旧的Java SE发行版上运行它。