@MultipartConfig überschreiben web.xml
Also ich haben dieses servlet :
@WebServlet(name = "StudentRegistrationUsn", urlPatterns = {"/university/student/registration"})
@MultipartConfig(maxFileSize = 10*1024*1024,maxRequestSize = 20*1024*1024,fileSizeThreshold = 5*1024*1024)
public class ActionRegistrationServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//handle file upload
}
Alles funktioniert, Dateien hochladen.
Dann versuche ich das überschreiben der Dateigröße Schwelle web.xml:
<servlet>
<servlet-name>StudentRegistrationUsn</servlet-name>
<multipart-config>
<max-file-size>10485760</max-file-size>
<max-request-size>20971520</max-request-size>
<file-size-threshold>5242880</file-size-threshold>
</multipart-config>
</servlet>
Wenn ich das mache, tomcat abstürzt und immer wenn ich versuche, Zugriff auf das servlet liefert es die folgende Ausnahme:
The server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
java.lang.ClassLoader.loadClass(ClassLoader.java:356)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1629)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:461)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1813)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
java.lang.Thread.run(Thread.java:722)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
<servlet-class>
fehlt inweb.xml
. Diese Ausnahme ist im Grunde hervorgerufen, weil der name der geladenen Klassenull
.In der Tat, müssen Sie neu definieren, alles, einschließlich der URL-Muster.
@WebServlet
durch die Neudefinition genau das gleiche servlet-name inweb.xml
. Sie sollten dann auch den Rest in Konto. Die alternative wäre, einfach direkt Bearbeiten@MultipartConfig
auf die Klasse an. Sie wählen: Annotationen oder XML.