2011-08-30 12 views
5

Devo chiamare un servlet scritto in Java dall'applicazione web Clojure e non capisco come farlo.è possibile chiamare servlet java da ring/compojure?

Sviluppo di una webapp in Java, ho dovuto descrivere tutti i mapping in web.xml. In Compojure, vedo, devo descrivere i percorsi. Quindi, posso associare il servlet Java a uno di questi percorsi?

Scusa se la mia domanda è stupida, ma ho cercato molto e non ho trovato una risposta; Sto appena iniziando a sviluppare per il web.

+0

Ora sto esplorando i pacchetti di prova forniti da Ring. Ho scoperto che Ring consente di trasformare i suoi gestori in servlet. Esiste una funzione run-servlet che in effetti fa ciò che voglio: chiama il servlet creato dal gestore invocando il suo metodo di servizio. Ma al momento non posso dire di sapere come usarlo nel modo giusto, 'perché c'è ancora molto da esplorare e provare. –

risposta

2

Due indicazioni utili:

C'è un esempio su come generare la servlet Vaadin completamente dalla Clojure su github

Ed ecco una domanda SO sul how to map a java filter to routes

+0

Ho visto lo stesso esempio per Vaadin in cui la classe servlet è stata implementata in Clojure con proxy. Funziona perfettamente e in parte soddisfa i miei obiettivi, ma non del tutto. Ho visto la domanda sul filtro servlet. La soluzione è basata sul livello del contenitore servlet. Non corrisponde ai miei desideri, perché è basato sul livello del contenitore servlet, ma Ring fornisce un adattatore solo per il molo. Riparami se sbaglio. Devo gestire tutti i mapping per le risorse Java e Clojure da Compojure/ring indipendentemente dal contenitore del servlet specifico. –

0

Suggerisco, v'è un solo modo per far fronte ai miei compiti. Devo istanziare manualmente i servlet Java nell'app Web Clojure e formarne i parametri di richiesta e risposta. Test package per la libreria ring.util.servlet descrive questo approccio nei dettagli, ma in caso di attivazione del gestore Ring in un servlet Java.

In caso di distribuzione di app Clojure e servlet Java sul contenitore del servlet separatamente, non è necessario definire route Compojure aggiuntive o gestori Ring per i percorsi associati dal contenitore.

Per favore dimmi se i miei suggerimenti non sono corretti.

Problemi correlati