2

当使用 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 代码进行逆向工程显示它一定是这样的,但是“multi”是什么???

ServletHolder sh = new ServletHolder(new UploadServlet(jee));
Object multi;
sh.getRegistration().setMultipartConfig(new MultipartConfigElement(multi));
context.addServlet(sh, "/upload");
4

2 回答 2

1

MultipartConfigElement实际上有多个构造函数。一个是MultipartConfig注释的一个实例。其他仅将位置或所有可用选项作为参数。所以使用所有默认值的最简单的可能性是

sh.getRegistration().setMultipartConfig(new MultipartConfigElement(""));
于 2015-07-12T20:20:25.033 回答
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 - 从码头发行版中这些是:javax.annotation-1.1.0.v201108011116.jar org.objectweb.asm-3.1.0.v200803061910.jar

于 2013-05-27T03:33:37.293 回答