【发布时间】:2012-03-12 13:07:07
【问题描述】:
如何使用我的 Java EE 应用程序实现 Restlet 框架?
我已经尝试过使用 Spring 的 Restful Webservice,但不知道如何开始使用 Restlet 框架。
它是不是比 Spring MVC 的 RESTful 实现更好的选择?这两个框架的优缺点是什么。
【问题讨论】:
标签: spring rest spring-mvc restlet spring-ws
如何使用我的 Java EE 应用程序实现 Restlet 框架?
我已经尝试过使用 Spring 的 Restful Webservice,但不知道如何开始使用 Restlet 框架。
它是不是比 Spring MVC 的 RESTful 实现更好的选择?这两个框架的优缺点是什么。
【问题讨论】:
标签: spring rest spring-mvc restlet spring-ws
Restlet 的优势在于它为 REST 提供了完整的 API,在使用 REST 原则时具有灵活性,并且还解决了客户端和服务器端。
您可以考虑的另一个方面是 Restlet 是一个完整的 RESTful 中间件,允许使用 REST 架构连接各种异构系统。事实上,Restlet 可以使用相同的 API 在多个环境(Java、Java EE、Android、GWT、Google App Engine)和云平台(EC2、GAE、Azure)上执行,以提供 RESTful 应用程序。它在内部解决了每个环境的特殊性和局限性。它还允许访问不同类型的 REST 服务(如 OData、S3...),集成不同系统(AWS、Google...)的安全性并为 Google 的 SDC 技术提供支持(以安全的方式访问 Intranet 资源) .
现在让我们输入代码。在 JavaEE 中实现 Restlet 应用程序的最佳方法是使用 servlet 扩展,它充当该应用程序的前端控制器。然后,您可以像往常一样定义您的实体(应用程序、服务器资源)。您必须创建以下内容:
Restlet 应用程序(Application 的子类):
public class ContactApplication extends Application {
public Restlet createInboundRoot() {
Router router = new Router(getContext());
router.attach("/contact/{id}",
SimpleContactServerResource.class);
return router;
}
}
一个或多个服务器资源:
public class SimpleContactServerResource
extends ServerResource {
private ContactService contactService = (...)
@Get
public Representation getContact(Variant variant) {
Map<String, Object> attributes
= getRequest().getAttributes();
String contactId = (String) attributes.get("id");
Contact contact = contactService.getContact(contactId);
return new JacksonRepresentation<Contact>(contact);
}
(...)
}
配置 Restlet servlet:
<web-app>
<context-param>
<param-name>org.restlet.application</param-name>
<param-value>org.restlet.gtug.gae.ContactsApplication</param-value>
</context-param>
<servlet>
<servlet-name>ServerServlet</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServerServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
希望它能帮助您并更好地了解框架。
【讨论】: