我仍在阅读有关 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,那么对于像十几个并发数百个请求的客户端来说,哪个容器最有效?