在现有Java EE应用程序中实现RESTlet

时间:2012-03-12 13:07:08

标签: spring rest spring-mvc restlet spring-ws

如何使用Java EE应用程序实现Restlet框架?

我已经尝试过Spring的Restful Webservice,但不知道如何开始使用Restlet框架。

它是一个比Spring MVC的RESTful实现更好的选择吗?这两个框架的优点和缺点是什么。

1 个答案:

答案 0 :(得分:1)

Restlet的优势在于它提供了完整的REST API,在使用REST原则时具有灵活性,同时也为客户端和服务器端提供了解决方案。

您可以考虑的另一个方面是Restlet是一个完整的RESTful中间件,允许使用REST架构连接各种异构系统。事实上,Restlet可以在多个环境(Java,Java EE,Android,GWT,Google App Engine)和云平台(EC2,GAE,Azure)上使用相同的API执行,以便提供RESTful应用程序。它内部解决了每个环境的特性和局限性。它还允许访问不同类型的REST服务(如OData,S3 ......),集成不同系统(AWS,Google ......)的安全性,并为Google的SDC技术提供支持(以安全的方式访问Intranet资源)

现在让我们输入代码。在JavaEE中实现Restlet应用程序的最佳方法是使用servlet扩展,该扩展在此应用程序中扮演前端控制器的角色。然后,您可以通常定义您的实体(Application,ServerResource)。您必须创建以下内容:

  • Restlet应用程序(应用程序的子类):

    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>

希望它可以帮助您并更好地了解框架。