Я хочу добавить REST к своему проекту гобелена и так должен знать, как реализовать его.
Каков лучший путь?
спасибо.
[Редактирование, скопированное с ответа:] Я должен добавить, ПОЛУЧАЮТ, ПОМЕЩАЮТ, POST и УДАЛЯЮТ сервисы к моему приложению гобелена. Я вижу, что Гобелен имеет УСПОКОИТЕЛЬНЫЙ URL, но что относительно JAX-RS и аннотаций?
Вы можете использовать Restlet API или любую другую реализацию JAX-RS, которая может работать как сервлет.
Чтобы веб-служба хорошо сосуществовала с Tapestry, есть одна вещь, которую вы должны настроить в вашем модуле приложения Tapestry:
/**
* 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/.*");
}
Этот фрагмент указывает фильтру Tapestry не обрабатывать запросы к пути /ws/, где находится веб-служба.
Вот фрагмент, показывающий, как примерно должен выглядеть ваш web.xml с Tapestry плюс 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>
Это должно помочь вам начать.
Если вы хотите интегрировать веб-службу REST в проект Tapestry, то URL-адресов RESTful в Tapestry, вероятно, будет недостаточно.
Можно интегрировать RESTEasy в Tapestry через этот модуль Tynamo . RESYEasy совместим с JAX-RS.
Я не использовал RESTEasy с Tapestry, но с Spring 2.5, и он работал очень хорошо.