2011-08-17 13 views
9

Próbuję utworzyć samodzielny JAR zawierający Akka, Spray i Jetty. Idealnie dystrybuuję całą aplikację w tym pojedynczym pliku, bez żadnych zewnętrznych plików.Łączenie Akka, Spray i osadzonego Jetty

rozumiem jak utworzyć osadzone Jetty wystąpienie serwera

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

a ja po przykładowy kod Spray w tworzeniu HelloService Boot i klasę, ale nie mam pojęcia, jak ziemskie, aby połączyć dwie , więc gdy na serwer Jetty jest żądany URL, usługa Spray odpowiada na nie. Każda pomoc byłaby bardzo cenna.

Aktualizacja: Dostaję dużo bliżej do rozwiązania tego problemu, dzięki wątku śledczej poproszony przez Alois Cochard (idę z internetowej skryptowego tle, a uzyskanie głowę wokół Javy usług internetowych ma było ... wyzwaniem!). Zmodyfikowałem swój main method, aby uruchomić serwer i odczytać pliki Jetty i akka configuration, które znajdują się w szablonie uruchamiania. To czytanie obu tych plików, ale teraz jestem coraz to kiedy należy przejść do/na serwerze pomost:

HTTP ERROR: 500

Problem accessing /. Reason:

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

wiem, że czegoś brakuje głupie (i pewnie, że mam rozbić i użyć SBT , ale możliwość samodzielnego skompilowania i uruchomienia Eclipse, a następnie odświeżenia w przeglądarce, jest tak prosta i atrakcyjna).

Aktualizacja # 2: Wykryliśmy problem. Nie tworzyłem obiektu WebAppContext, co oznaczało, że web.xml nigdy nie został odczytany, a tym samym Akka nigdy nie był ładowany. This is the revised główna metoda, która teraz działa.

+0

Czy wiesz o [sbt-assembly] (https://github.com/sbt/sbt-assembly)? – AmigoNico

Odpowiedz

5

Według natryskowego szablonu, należy dodać złącze serwletu Spray w pliku konfiguracyjnym web.xml:

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

można znaleźć informacje na temat sposobu konfigurowania molo standealone aby skorzystać z tej plik tutaj (jest na pewno lepsze odniesienia w Netty dokumentacji bezpośrednio):

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

BTW, przy użyciu szablonu sprayu jako podstawa dla projektu l ooki to dobry pomysł;)

+0

Dzięki za komentarz, Alois. Nie rozwiązałem bezpośrednio mojego problemu, ale doprowadziło mnie to do właściwego kierunku i ostatecznie to rozgryzłem. Twoje zdrowie! –

+0

Nie ma za co! –

+0

@JohnBiesnecker, czy możesz podzielić się swoim rozwiązaniem? – tiagoboldt