[英]How to write Jersey Multipart webapp, Tomcat Server
我一直在做很多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文件?
謝謝。
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文件夾下找到它)並添加這些依賴項:
<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>
如果你是第一次這樣做,你需要一個有效的互聯網連接,因為maven將從其中央存儲庫下載依賴項。
(4)轉到ApplicationConfig類或包含@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);
}
注意: resources.add(MultiPartFeature.class); 這必須包括在內,否則澤西多部分將不起作用。
我將這行代碼放在getClasses方法而不是addRestResourceClasses方法的原因是因為只要資源類發生更改,addRestResourceClasses方法就會被修改,如果在那里包含MultiPartFeature代碼,它將被刪除。
一旦你完成了所有這些事情,你就會很高興。
如果您只是想創建一個沒有multipart的RESTful Web服務,請按照步驟1到3進行操作,但在步驟3中不要包含jersey-media-multipart依賴項。
我希望這可以幫助你 ;)
這兩個的進口是
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>
與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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.