2011-08-17 48 views
9

我正在嘗試創建一個包含Akka,Spray和Jetty的獨立JAR。理想情況下,我將整個應用程序分發到單個文件中,無需任何外部文件。結合Akka,Spray和嵌入式碼頭

我知道如何創建一個嵌入式Jetty服務器實例

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

而且我是按照創建一個HelloService中和引導類噴霧示例代碼,但我對如何將二者連接沒有世俗的想法,因此當在Jetty服務器上請求URL時,Spray服務會對其進行響應。任何幫助將非常感激。

更新:我越來越近了很多解決這個問題,這要歸功於由阿洛伊斯Cochard(我是從一個網頁腳本背景的,並讓我周圍Java Web服務的頭提示的查詢一個線程一直......挑戰!)。我修改了我的main method以啓動服務器並閱讀入門模板中的Jettyakka configuration文件。它同時讀取這些文件,但現在我得到這個,當我瀏覽到/ Jetty服務器上:

HTTP ERROR: 500

Problem accessing /. Reason:

assertion failed: 0 actors for id 'spray-root-service' found, expected exactly one

我知道我錯過了一些愚蠢的(也許我應該打破,並使用SBT ,但能夠在Eclipse中進行編譯和運行,然後在瀏覽器中刷新,非常簡單且吸引人)。

更新#2:找出問題所在。我沒有創建WebAppContext對象,這意味着web.xml永遠不會被讀取,因此Akka從未被加載。 This is the revised現在正在工作的主要方法。

+0

你知道[sbt-assembly](https://github.com/sbt/sbt-assembly)嗎? – AmigoNico

回答

5

根據噴霧模板,你應該添加噴霧的servlet接口web.xml配置文件中:

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

你可以找到關於如何配置standealone碼頭使用此一些信息這裏的文件(有網狀文檔中肯定更好的直接引用):

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

BTW,使用噴霧模板作爲項目微升基礎ooks是個好主意;)

+0

感謝您的評論,阿洛伊斯。沒有直接解決我的問題,但它讓我朝着正確的方向前進,最終我發現了它。乾杯! –

+0

不客氣! –

+0

@JohnBiesnecker,你能分享你的解決方案嗎? – tiagoboldt