ich Einheit versuche einen Upload Anruf testen, aber ich bekomme diese Fehlermeldung für den folgenden Code:Kein multipartconfig für Servlet Fehler von Jetty mit scalatra
@MultipartConfig(maxFileSize = 3145728)
class WebServlet extends ScalatraServlet with FileUploadSupport {
override def isSizeConstraintException(e: Exception) = e match {
case se: ServletException if se.getMessage.contains("exceeds max filesize") ||
se.getMessage.startsWith("Request exceeds maxRequestSize") => true
case _ => false
}
error {
case e: SizeConstraintExceededException => RequestEntityTooLarge("too much!")
}
post("/uploadscript") {
val privateParam = try {params("private") != null && params("private").equals("true") } catch { case _ => false }
println("privateParam = " + privateParam)
val file = fileParams("file")
println(s"The size of the file is ${file.size}")
}
Der Fehler ist:
java.lang.IllegalStateException: No multipart config for servlet
at org.eclipse.jetty.server.Request.getParts(Request.java:2064) ~[jetty-server-8.1.10.v20130312.jar:8.1.10.v20130312]
at org.scalatra.servlet.FileUploadSupport$class.getParts(FileUploadSupport.scala:133) ~[scalatra_2.10-2.2.1.jar:2.2.1]
at org.scalatra.servlet.FileUploadSupport$class.extractMultipartParams(FileUploadSupport.scala:108) ~[scalatra_2.10-2.2.1.jar:2.2.1]
at org.scalatra.servlet.FileUploadSupport$class.handle(FileUploadSupport.scala:79) ~[scalatra_2.10-2.2.1.jar:2.2.1]
at com.ui.WebServlet.handle(WebServlet.scala:32) ~[classes/:na]
Und das ist mein Komponententest, und der erste ist erfolgreich, so dass es meinen Webservice findet:
class WebServletSpecification extends MutableScalatraSpec {
addServlet(classOf[WebServlet], "/*")
"GET /hello" should {
"return status 200" in {
get("/hello/testcomputer") {
status must_== 200
}
}
}
"POST /uploadscript" should {
"return status 200" in {
val scriptfile = "testfile"
val scriptname = "basescript"
post("/uploadscript", Map("private" -> "true"), Map("file" -> new File(scriptfile))) {
status must_== 200
}
}
}
}
Ich renne thi s in Eclipse und ich bin mir nicht sicher, was passiert.
Es funktioniert gut mit HttpPost
und MultipartEntity
so scheint es ein Problem mit Eclipse oder wie die Scalatraspezifikation Framework funktioniert.
Irgendeine Idee was schief gehen könnte?
Ich habe keine separate web.xml.
ich nur mit am Anlegesteg 8.1.10, wie man sehen, was ich in build.sbt verwenden:
"org.eclipse.jetty" % "Anlegesteg-Webapp" % „8.1.10.v20130312 "% "Behälter"
,
Danke. Wie ich bereits erwähnt habe, funktioniert es gut, wenn ich es von sbt (simple build tool) starte, wie ich feststellen kann, wenn ich einen Junit-Test verwende, der auf den Webserver geht. Aber, wenn ich versuche, specs2 zu verwenden, und ich nehme an, dass es wegen der Ausführung in Eclipse ist, ist es nicht. Ich möchte keine Änderungen am Programm für diesen Komponententest vornehmen, sondern verstehen, warum es nicht funktioniert. –