【问题标题】:Implementing RESTlet in existing Java EE application在现有 Java EE 应用程序中实现 RESTlet
【发布时间】:2012-03-12 13:07:07
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    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>
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多