【发布时间】:2013-02-20 00:37:55
【问题描述】:
我仍在阅读有关 REST 解决方案的信息,并决定使用 RESTlet 来实现 WebServices,使用 Jackson 将响应作为 JSON 提供。
在此之前我使用过 Axis2,但它的性能让我感到害怕:一个简单的请求需要数百毫秒才能返回到客户端,而且客户端和服务器都在同一台机器上! (我会重做基准测试,比以前做得更好,现在比较直接调用、Axis2 和 RESTlet+Jackson。)
我知道 RESTlet 可以在许多容器上使用,并且我找到了一些集成 Tomcat 和 RESTlet 的教程。但据我了解,这意味着将 RESTlet 应用程序直接绑定到 Tomcat 中。
我的问题是,使用 Axis2,我能够拥有一个独特的 eclipse 项目,我在其中开发 servlet 来处理浏览器请求和提供 HTML 页面,以及为非浏览器客户端提供服务的 Axis2 WebService。这个 Eclipse 项目被导出为一个独特的战争,包含我所有的代码和所有需要的 jar,然后我将它部署在 Tomcat 上并从一个独特的服务器上运行。
例如:
- http://host.com/projectname/operation 绑定到一个 Servlet 并提供 HTML 页面,而
- http://host.com/projectname/services/ 是 Axis2 主页,包含 WebService 信息、WSDL 链接等,以及
- http://host.com/projectname/services/operation 与 http://host.com/projectname/operation 做同样的事情,但接收 SOAP 请求并提供 SOAP 响应。
我想用 RESTlet 做同样的事情:
- http://host.com/content 提供一个 HTML 页面,列出指向内容的链接,
- http://host.com/content/123 为 HTML 页面提供内容 123 的数据,
- GET http://host.com/webservice/content 返回一个列出内容链接的 JSON 数组,
- GET http://host.com/webserivce/content/123 返回带有内容 123 数据的 JSON 对象。
- http://host.com/content/123/update 接收传统的 POST 参数以更新 DB 上的内容 123,并返回带有更新数据的 HTML,
- PUT http://host.com/webservice/content/123 接收 JSON 对象,在 DB 上更新它并返回另一个带有数据的 JSON 对象 从 DB 中查询。
如您所见,Eclipse 必须通过适当的 web.xml 配置创建这场战争,才能完成“魔法”。它适用于 Axis2,但我不知道如何使用 RESTlet。
另一个问题。如果我不需要 Servlet 并且只需要一个 RESTlet WebService,那么对于像十几个并发数百个请求的客户端来说,哪个容器最有效?
【问题讨论】:
标签: eclipse rest tomcat axis2 restlet