首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使这个finagle示例起作用?

如何使这个finagle示例起作用?
EN

Stack Overflow用户
提问于 2016-02-03 12:23:24
回答 1查看 998关注 0票数 1

我一直在看一些finagle教程。我为一个简单的服务器找到了这段代码,但我无法让它工作。是否应该使用类型指定服务,以便能够找到服务的类型?

代码:

代码语言:javascript
复制
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)
 }
}  

错误:

代码语言:javascript
复制
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)
                      ^

链接:https://twitter.github.io/finagle/docs/#com.twitter.finagle.package

链接到scala学校代码,如我的评论中提到的:school/finagle.html#server

这是我的build.sbt:

代码语言:javascript
复制
name := "finagle"

version := "1.0"

scalaVersion := "2.11.7"

libraryDependencies ++=  Seq(
  "com.twitter" %% "finagle-http" % "6.31.0",
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-07 11:49:09

问题是,在finagle 6.30.x中,Httpx包被重命名为Http,而原始的Http (包含netty http类型)被删除。应该使用c.t.f.h.Request c.t.f.h.Response类型构建服务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35177010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档