を使用して桟橋からサーブレットエラーなしmultipartconfig:私はユニットテストにアップロード通話をしようとしていますが、私は次のコードのために、このエラーが出る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}")
}
エラーは次のとおりです。
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]
そして、これは私の単体テストで、最初のものが成功したので、私のWebサービスを見つけることになります:
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
}
}
}
}
Eclipseの内部にあり、何が起こっているのかはわかりません。
HttpPost
とMultipartEntity
を使ってもうまく動作するので、Eclipseやスケラトラ仕様フレームワークの動作に問題があるようです。
何が間違っている可能性がありますか?
別にweb.xmlはありません。
"org.eclipse.jetty" % "桟橋-webappの" %「8.1.10.v20130312:私はbuild.sbtに使用するものから見て、私は唯一の桟橋8.1.10を使用しています
、 「% "コンテナ"
、
ありがとうございます。私が言及したように、私がsbt(シンプルビルドツール)から起動すると、ウェブサーバに行くjunitテストをいつ使用するか分かります。しかし、私がspecs2を使用しようとすると、それがEclipseで実行されていると仮定していますが、そうではありません。私はこの単体テストのプログラムを変更して、それがなぜ機能しないのか分かりません。これも私のためにコンパイルされません –