2010-05-04 5 views
9

Desidero aggiungere REST al mio progetto di arazzo, quindi ho bisogno di sapere come implementarlo.Tapestry + REST

Qual è il modo migliore?

thx.

[Modifica, copiato dalla risposta:] Devo aggiungere i servizi GET, PUT, POST e DELETE alla mia applicazione di tappezzeria. Vedo che Tapestry ha l'URL RESTful ma che dire di JAX-RS e delle annotazioni?

+0

Tapestry 5 segue da solo principi riposanti. Vorresti aggiungere un servizio web RESTful alla tua applicazione? Per favore chiarisci la tua domanda in modo che le persone possano capirla. – Henning

+0

Buona domanda che mi stavo chiedendo io stesso +1 –

risposta

10

È possibile utilizzare lo Restlet API o qualsiasi altra implementazione JAX-RS che può essere eseguita come servlet.

di avere il servizio web convivono piacevolmente con Tapestry, c'è una cosa che devi configurare nel vostro Tapestry application module:

/** 
* Keep Tapestry from processing requests to the web service path. 
* 
* @param configuration {@link Configuration} 
*/ 
public static void contributeIgnoredPathsFilter(
     final Configuration<String> configuration) { 
    configuration.add("/ws/.*"); 
} 

Questo frammento dice il filtro Tapestry di non gestire le richieste ai/ws/percorso in cui si trova il servizio web.

Ecco un frammento che mostra ciò che il vostro web.xml dovrebbe approssimativamente simile con Tapestry più un Restlet Servlet:

<filter> 
    <filter-name>app</filter-name> 
    <filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>app</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<!-- Restlet adapter --> 
<servlet> 
    <servlet-name>WebService</servlet-name> 
    <servlet-class> 
     com.noelios.restlet.ext.spring.SpringServerServlet 
    </servlet-class> 

    ... 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>WebService</servlet-name> 
    <!-- This path must also be set in AppModule#contributeIgnoredPathsFilter, 
     otherwise Tapestry, being a request filter, will try to handle 
     requests to this path. --> 
    <url-pattern>/ws/*</url-pattern> 
</servlet-mapping> 

Questo dovrebbe aiutarti a iniziare.

8

Se si desidera integrare un servizio Web REST in un progetto Tapestry, gli URL RESTful di Tapestry probabilmente non sono sufficienti.

È possibile integrare RESTEasy in Tapestry tramite this Tynamo module. RESYEasy è compatibile con JAX-RS.

Non ho usato RESTEasy con Tapestry, ma con Spring 2.5, e ha funzionato molto bene.

+1

Ho usato il rimessaggio con l'app degli arazzi tramite il modulo Tynamo ed è stato molto semplice. Ha funzionato come un incantesimo (anche se avevo dei requisiti molto semplici) – antonlitvinenko

+0

In realtà non hai bisogno di 'tynamo' per usare' RESTEasy'. – Andremoniy

+0

Vorrei andare con il modulo tynamo, l'ho usato in una serie di progetti e funziona perfettamente. – lukewm