使用jetty嵌入时,即注册这样的servlet:
ServletContextHandler context = new ServletContextHandler(server, "/", false, false);
s = new UploadServlet(jee);
context.addServlet(new ServletHolder(s), "/upload");
MultipartConfig注释似乎不受尊重。如何在Servlet 3.0下注册支持文件上传的URL?反向工程Jetty代码显示它必须是这样的,但什么是“多”???
ServletHolder sh = new ServletHolder(new UploadServlet(jee));
Object multi;
sh.getRegistration().setMultipartConfig(new MultipartConfigElement(multi));
context.addServlet(sh, "/upload");
答案 0 :(得分:1)
MultipartConfigElement
实际上有多个构造函数。一个采用MultipartConfig
注释的实例。其他选项仅将位置或所有可用选项作为参数。所以使用所有默认值的最简单的可能性是
sh.getRegistration().setMultipartConfig(new MultipartConfigElement(""));
答案 1 :(得分:0)
雅各
目前仅在WebAppContexts上支持使用Jetty处理注释,并且仅在启用注释处理时才支持。 jetty-9 doco在这里讨论如何为具有独立码头的Web应用程序启用注释:http://www.eclipse.org/jetty/documentation/current/annotations.html
因此,将ServletContextHandler转换为WebAppContext,并使用以下列表调用setConfigurationClasses():
"org.eclipse.jetty.webapp.WebInfConfiguration",
"org.eclipse.jetty.webapp.WebXmlConfiguration",
"org.eclipse.jetty.webapp.MetaInfConfiguration",
"org.eclipse.jetty.webapp.FragmentConfiguration",
"org.eclipse.jetty.webapp.JettyWebXmlConfiguration",
"org.eclipse.jetty.annotations.AnnotationConfiguration"
并确保类路径上与注释处理相关的jar文件 - 来自jetty发行版,它们是: javax.annotation-1.1.0.v201108011116.jar org.objectweb.asm-3.1.0.v200803061910.jar
扬