Ich versuche, eine eigenständige JAR zu erstellen, die Akka, Spray und Jetty enthält. Idealerweise verteile ich die gesamte Anwendung in dieser einzigen Datei, ohne irgendwelche externen Dateien.
Ich verstehe, wie man eine eingebettete Jetty-Server-Instanz erstellt
%Vor%und ich habe den Spray-Beispielcode beim Erstellen einer HelloService- und Boot-Klasse befolgt, aber ich habe keine irdische Idee, wie man die beiden verbindet, so dass ein Spray-Dienst auf eine Antwort antwortet, wenn eine URL auf dem Jetty-Server angefordert wird . Jede Hilfe würde sehr geschätzt werden.
Update: Ich bin diesem Problem sehr viel näher gekommen, dank eines von Alois Cochard aufgeworfenen Fragefadens (ich komme aus einem Web-Scripting-Hintergrund und komme mit meinem Kopf herum Java Web Services war ... eine Herausforderung!). Ich habe meine Hauptmethode geändert, um den Server zu starten und die Jetty und die akka-Konfiguration -Dateien, die sich in der Getting-Start-Vorlage befinden. Es liest beide Dateien, aber jetzt bekomme ich das, wenn ich zu / auf dem Jetty-Server navigiere:
HTTP-FEHLER: 500
Problem beim Zugriff auf /. Grund:
assertion failed: 0 Akteure für die ID 'spray-root-service' gefunden, erwartet genau eins
Ich weiß, dass mir etwas Albernes fehlt (und wahrscheinlich, dass ich SBT abbauen und benutzen sollte, aber in der Lage zu sein, einfach in Eclipse zu kompilieren und zu laufen, und dann im Browser zu aktualisieren, ist so einfach und ansprechend).
Update # 2 : Das Problem wurde ermittelt. Ich habe kein WebAppContext-Objekt erstellt, was dazu führte, dass die web.xml nie gelesen wurde und Akka nie geladen wurde. Dies ist die überarbeitete Hauptmethode, die jetzt funktioniert.
Entsprechend der Spray-Vorlage sollten Sie den Spray-Servlet-Konnektor in der Konfigurationsdatei web.xml hinzufügen:
Sie können einige Informationen darüber finden, wie man eine Standalone-Anlegestelle konfiguriert, um diese Datei hier zu verwenden (es gibt sicherlich bessere Referenzen in Netty-Dokumentation direkt):
BTW, die Sprühvorlage als Basis für Ihr Projekt zu verwenden, sieht nach einer guten Idee aus;)