9

我正在尝试创建一个包含 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 服务一直......具有挑战性! )。我已经修改了我的主要方法来启动服务器并读取入门模板中的Jettyakka 配置文件。它正在读取这两个文件,但是现在当我导航到 Jetty 服务器上的 / 时,我得到了这个:

HTTP 错误:500

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

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

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

更新#2:找出问题所在。我没有创建 WebAppContext 对象,这意味着 web.xml 永远不会被读取,因此 Akka 永远不会被加载。这是修改后的主要方法,现在正在运行。

4

1 回答 1

5

根据 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

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

于 2011-08-17T11:14:36.410 回答