我有一个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)。如果有更好的方法来处理,那么任何方向将不胜感激 –