答案 0 :(得分:11)
您可以使用Restlet API或任何其他可以作为servlet运行的JAX-RS实现。
要让Web服务与Tapestry完美共存,您必须在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/.*");
}
此代码段告诉Tapestry过滤器不要处理对Web服务所在的/ ws / path的请求。
这是一个片段,显示您的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>
这应该可以帮助你开始。
答案 1 :(得分:9)
如果要将REST Web服务集成到Tapestry项目中,那么Tapestry的RESTful URL可能还不够。
可以通过RESTEasy将this Tynamo module集成到Tapestry中。 RESYEasy兼容JAX-RS。
我没有在Tapestry中使用RESTEasy,但是使用Spring 2.5,它运行得非常好。