私は Scala 2.10.2、Akka 2.2.0 を使用しており、既存の Java クラスをアクターと統合することに意味があるかどうかを判断しようとしています。私が考えている Java クラスは、Apache Commons FileUpload ストリーミング APIです。
これは、アクターを使用せずに作業したものです
class HelloWorld extends HttpServlet {
override def doGet(req: HttpServletRequest, resp: HttpServletResponse) = {
resp.getWriter().print("Hello World!")
}
override def doPost(req: HttpServletRequest, resp: HttpServletResponse ) = {
if (ServletFileUpload.isMultipartContent(req)) {
val upload = new ServletFileUpload()
// Parse the request
val iter = upload.getItemIterator(req)
while (iter.hasNext()) {
val item = iter.next()
val name = item.getFieldName()
val stream = item.openStream()
if (item.isFormField()) {
println("Form field " + name + " with value " + Streams.asString(stream) + " detected.")
} else {
println("File field " + name + " with file name " + item.getName() + " detected.")
saveAttachment(item.getName(), stream)
}
}
resp.getWriter().print("\nFile uploads success!\n")
} else
resp.getWriter().print("\nNo file upload found!\n")
}
private def saveAttachment(...) {...}
}
通常、アクターはすべてのメッセージをreceive
メソッド内で処理しますが、この場合、クラスには既に定義済みのメソッドがあります。より良い用語がないため、これを演じる方法はありますか? 私が検討したオプションは、アップロードを処理するためのアクターを作成するdoPost
ことです。これは、潜在的に大きなファイルを処理するブロッキング コールであるためです。考え?