10

我想将 REST 添加到我的挂毯项目中,因此需要知道如何实现它。

什么是更好的方法?

谢谢。

[编辑,从答案复制:]我必须在我的挂毯应用程序中添加 GET、PUT、POST 和 DELETE 服务。我看到 Tapestry 有 RESTful url,但是 JAX-RS 和注释呢?

4

2 回答 2

11

您可以使用Restlet API或任何其他可以作为 servlet 运行的 JAX-RS 实现。

为了让 Web 服务与 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 过滤器不要处理对 Web 服务所在的 /ws/ 路径的请求。

这是一个片段,显示了使用 Tapestry 和 Restlet Servlet 后您的 web.xml 应该大致是什么样子:

<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>

这应该可以帮助您入门。

于 2010-05-06T10:10:10.400 回答
9

如果您想将 REST Web 服务集成到 Tapestry 项目中,那么 Tapestry 的 RESTful URL 可能还不够。

可以通过这个 Tynamo 模块将RESTEasy集成到 Tapestry 中。RESYEasy 与 JAX-RS 兼容。

我没有将 RESTEasy 与 Tapestry 一起使用,而是在 Spring 2.5 中使用,它运行得非常好。

于 2010-05-16T16:17:20.307 回答