我有一個REST服務託管在卡拉夫內,除多部分請求外,它可以正常工作。我正在使用com.sun.jersey
軟件包,因爲我只成功地在Karaf中託管這些內容以便通過HTTP訪問。JAX-RS多部分與com.sun.jersey
當我嘗試接收POST內HttpServletRequest
並調用其getParts()
方法,我得到的錯誤:
IllegalStateException: No multipart config for servlet
我發現,我很想念我的servlet 註解,所以我將其添加到我正在使用的servlet實現中。我擴展com.sun.jersey.spi.container.servlet.ServletContainer
並將該註釋添加到該類。但這不起作用。
我用我自己的擴展HttpServlet
類的,再現的錯誤也試過:
@MultipartConfig
public class MultipartServlet extends HttpServlet {
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
try {
final HttpServletRequest httpRequest = (HttpServletRequest)request;
final Collection<Part> parts = httpRequest.getParts();
System.out.println("There are " + parts.size() + " parts");
}
catch (Exception exception) {
System.out.println("MEGA FAIL");
System.out.println(exception.getMessage());
}
super.service(request, response);
}
}
我見過使用org.glassfish.jersey
包,使寄存器MultiPartFeature
類與ResourceConfig
的方法,但我一直無法通過Karaf內部的HTTP訪問這些包(服務似乎無誤地註冊,但所有請求都返回404響應)。
訪問所有的零部件爲什麼你想在一個servlet使用多,當你想與新澤西州這樣做。請參閱[本文](https://www.mkyong.com/webservices/jax-rs/file-upload-example-in-jersey/)用於Jersey 1.x多部分支持 –
該文章使用多部分中具體命名的部分請求。我需要能夠處理方法本身內未知數量的部分,這就是我試圖使用'HttpServletRequest'的原因。有沒有辦法使用澤西來實現這一點呢? –
@peeskillet也許值得強調的是,我在Karaf中運行這個,所以我有這個servlet註冊在與Karaf一起安裝的'HttpService'上,因爲這是我設法在其中託管一個RESTful服務的唯一方法卡拉夫可以通過HTTP訪問(即在本地主機上:8181)。如果有更好的方法來處理,那麼任何方向將不勝感激 –