【问题标题】:Combining Akka, Spray, and embedded Jetty结合 Akka、Spray 和嵌入式 Jetty
【发布时间】:2011-10-28 17:28:08
【问题描述】:

我正在尝试创建一个包含 Akka、Spray 和 Jetty 的独立 JAR。理想情况下,我将整个应用程序分发到该单个文件中,而无需任何外部文件。

我了解如何创建嵌入式 Jetty 服务器实例

def main(args: Array[String]): Unit = {
    val server = new Server(9012);
    server.start();
    server.join();
    Thread.sleep(2000);
    server.stop();
}

并且我在创建 HelloService 和 Boot 类时遵循了 Spray 示例代码,但我不知道如何连接这两者,因此当在 Jetty 服务器上请求 URL 时,Spray 服务会响应它.任何帮助将不胜感激。

更新:我离解决这个问题越来越近了,这要感谢 Alois Cochard 提出的一个询问线索(我来自网络脚本背景,并开始思考Java Web 服务一直......具有挑战性!)。我修改了我的main method 以启动服务器并读取入门模板中的Jettyakka configuration 文件。它正在读取这两个文件,但现在当我导航到 Jetty 服务器上的 / 时,我得到了这个:

HTTP 错误:500

访问 / 时出现问题。原因:

断言失败:找到 0 个 id 为“spray-root-service”的演员,预计只有一个

我知道我错过了一些愚蠢的东西(可能我应该分解并使用 SBT,但是能够在 Eclipse 中编译和运行,然后在浏览器中刷新,是如此简单和吸引人)。

更新 #2:找出问题所在。我没有创建 WebAppContext 对象,这意味着 web.xml 永远不会被读取,因此 Akka 永远不会被加载。 This is the revised main 方法现在正在运行。

【问题讨论】:

标签: scala jetty akka


【解决方案1】:

根据spray-template,您应该在web.xml配置文件中添加Spray servlet连接器:

http://github.com/spray/spray-template/blob/master/src/main/webapp/WEB-INF/web.xml

您可以在此处找到有关如何配置独立码头以使用此文件的一些信息(netty 文档中肯定有更好的参考资料):

http://exist.sourceforge.net/deployment.html#d47e594

顺便说一句,使用喷雾模板作为项目的基础看起来是个好主意;)

【讨论】:

  • 感谢您的评论,阿洛伊斯。没有直接解决我的问题,但它让我朝着正确的方向前进,我最终弄明白了。干杯!
  • @JohnBiesnecker,你能分享你的解决方案吗?
  • @tiagoboldt 这是我在主要问题更新中链接到的要点:gist.github.com/1152888
猜你喜欢
  • 1970-01-01
  • 2021-11-22
  • 2011-08-20
  • 2019-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多