如何让这个 finagle 示例起作用?
how to get this finagle example to work?
我一直在看一些 finagle 教程。我找到了一个简单服务器的代码,但我无法让它工作。是否应指定服务类型,以便可以找到服务类型?
代码:
import com.twitter.finagle.{Http, Service}
import org.jboss.netty.handler.codec.http.{HttpRequest, HttpResponse, DefaultHttpResponse}
import org.jboss.netty.handler.codec.http.HttpVersion._
import org.jboss.netty.handler.codec.http.HttpResponseStatus._
import com.twitter.util.{Future, Await}
object Server{
def main(args: Array[String]) {
val service = new Service[HttpRequest, HttpResponse] {
def apply(req: HttpRequest) =
Future.value(new DefaultHttpResponse(HTTP_1_1, OK))
}
val server = Http.serve(":8080", service)
Await.ready(server)
}
}
错误:
Error message:
Error:(25, 23) overloaded method value serve with alternatives:
(addr: java.net.SocketAddress,service: com.twitter.finagle.ServiceFactory[com.twitter.finagle.http.Request,com.twitter.finagle.http.Response])com.twitter.finagle.ListeningServer <and>
(addr: String,service: com.twitter.finagle.Service[com.twitter.finagle.http.Request,com.twitter.finagle.http.Response])com.twitter.finagle.ListeningServer <and>
(addr: String,service: com.twitter.finagle.ServiceFactory[com.twitter.finagle.http.Request,com.twitter.finagle.http.Response])com.twitter.finagle.ListeningServer <and>
(addr: java.net.SocketAddress,service: com.twitter.finagle.Service[com.twitter.finagle.http.Request,com.twitter.finagle.http.Response])com.twitter.finagle.ListeningServer
cannot be applied to (String, com.twitter.finagle.Service[org.jboss.netty.handler.codec.http.HttpRequest,org.jboss.netty.handler.codec.http.HttpResponse]{def apply(req: org.jboss.netty.handler.codec.http.HttpRequest): com.twitter.util.Future[org.jboss.netty.handler.codec.http.DefaultHttpResponse]})
val server = Http.serve(":8080", service)
^
link: https://twitter.github.io/finagle/docs/#com.twitter.finagle.package
link 到我评论中提到的 scala 学校代码:https://twitter.github.io/scala_school/finagle.html#server
这是我的 build.sbt:
name := "finagle"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies ++= Seq(
"com.twitter" %% "finagle-http" % "6.31.0",
)
问题是在 finagle 6.30.x 中,Httpx 包被重命名回 Http 并且原来的 Http(包含 netty http 类型)被删除了。您应该使用 c.t.f.h.Request c.t.f.h.Response 类型构建服务
我一直在看一些 finagle 教程。我找到了一个简单服务器的代码,但我无法让它工作。是否应指定服务类型,以便可以找到服务类型?
代码:
import com.twitter.finagle.{Http, Service}
import org.jboss.netty.handler.codec.http.{HttpRequest, HttpResponse, DefaultHttpResponse}
import org.jboss.netty.handler.codec.http.HttpVersion._
import org.jboss.netty.handler.codec.http.HttpResponseStatus._
import com.twitter.util.{Future, Await}
object Server{
def main(args: Array[String]) {
val service = new Service[HttpRequest, HttpResponse] {
def apply(req: HttpRequest) =
Future.value(new DefaultHttpResponse(HTTP_1_1, OK))
}
val server = Http.serve(":8080", service)
Await.ready(server)
}
}
错误:
Error message:
Error:(25, 23) overloaded method value serve with alternatives:
(addr: java.net.SocketAddress,service: com.twitter.finagle.ServiceFactory[com.twitter.finagle.http.Request,com.twitter.finagle.http.Response])com.twitter.finagle.ListeningServer <and>
(addr: String,service: com.twitter.finagle.Service[com.twitter.finagle.http.Request,com.twitter.finagle.http.Response])com.twitter.finagle.ListeningServer <and>
(addr: String,service: com.twitter.finagle.ServiceFactory[com.twitter.finagle.http.Request,com.twitter.finagle.http.Response])com.twitter.finagle.ListeningServer <and>
(addr: java.net.SocketAddress,service: com.twitter.finagle.Service[com.twitter.finagle.http.Request,com.twitter.finagle.http.Response])com.twitter.finagle.ListeningServer
cannot be applied to (String, com.twitter.finagle.Service[org.jboss.netty.handler.codec.http.HttpRequest,org.jboss.netty.handler.codec.http.HttpResponse]{def apply(req: org.jboss.netty.handler.codec.http.HttpRequest): com.twitter.util.Future[org.jboss.netty.handler.codec.http.DefaultHttpResponse]})
val server = Http.serve(":8080", service)
^
link: https://twitter.github.io/finagle/docs/#com.twitter.finagle.package
link 到我评论中提到的 scala 学校代码:https://twitter.github.io/scala_school/finagle.html#server
这是我的 build.sbt:
name := "finagle"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies ++= Seq(
"com.twitter" %% "finagle-http" % "6.31.0",
)
问题是在 finagle 6.30.x 中,Httpx 包被重命名回 Http 并且原来的 Http(包含 netty http 类型)被删除了。您应该使用 c.t.f.h.Request c.t.f.h.Response 类型构建服务