2011-08-17 13 views
9

Sto provando a creare un JAR autonomo contenente Akka, Spray e Jetty. Idealmente distribuisco l'intera applicazione in quel singolo file, senza alcun file esterno di sorta.Combinare Akka, Spray e Jetty incorporato

ho capire come creare un'istanza del server Jetty incorporato

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

e ho seguito il codice di esempio Spray nella creazione di una classe di HelloService e di avvio, ma non ho idea terrena di come collegare i due , in modo che quando viene richiesto un URL sul server Jetty un servizio Spray risponda ad esso. Qualsiasi aiuto sarebbe molto apprezzato.

Aggiornamento: Mi sto avvicinando molto alla risoluzione di questo problema, grazie a una serie di richieste di Alois Cochard (provengo da uno sfondo di scripting Web e mi sono messo a conoscenza dei servizi Web Java stato ... impegnativo!). Ho modificato il mio main method per avviare il server e leggere i file Jetty e akka configuration presenti nel modello di partenza. E 'la lettura di entrambe le file, ma ora sto ottenendo questo quando ci si dirige verso/sul server Jetty:

HTTP ERROR: 500

Problem accessing /. Reason:

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

So che mi manca qualcosa di stupido (e, probabilmente, che avrei dovuto abbattere e utilizzare SBT , ma essere in grado di compilare ed eseguire solo in Eclipse, e quindi aggiornare nel browser, è così semplice e accattivante).

Aggiornamento n. 2: risolto il problema. Non stavo creando un oggetto WebAppContext, il che significava che il web.xml non veniva mai letto e quindi Akka non veniva mai caricato. This is the revised metodo principale che ora funziona.

+0

Sai di [sbt-assembly] (https://github.com/sbt/sbt-assembly)? – AmigoNico

risposta

5

Secondo lo spray-modello, è necessario aggiungere il connettore Spray servlet nel file di configurazione web.xml:

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

Potete trovare alcune informazioni su come configurare un molo standealone di utilizzare questo depositare qui (c'è riferimenti sicuramente migliori in documentazione Netty direttamente):

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

BTW, utilizzando il modello di spruzzo come base per il progetto l piace come una buona idea;)

+0

Grazie per il commento, Alois. Non ha risolto il mio problema direttamente, ma mi ha indirizzato nella giusta direzione e alla fine ho capito. Saluti! –

+0

Prego! –

+0

@JohnBiesnecker, puoi condividere la tua soluzione? – tiagoboldt

Problemi correlati