Restlet

Open source and lightweight REST framework for Java
Download

Restlet Ranking & Summary

Advertisement

  • Rating:
  • License:
  • GPL
  • Price:
  • FREE
  • Publisher Name:
  • Jerome Louvel
  • Publisher web site:
  • http://www.restlet.org/
  • Operating Systems:
  • Mac OS X
  • File Size:
  • 21.4 MB

Restlet Tags


Restlet Description

Open source and lightweight REST framework for Java Restlet is an open source and lightweight REST framework for Java which natively supports all REST concepts (Connector, Resource, Representation, Component, etc.) and is suitable for both server and client web applications. Restlet comes with support for the web standards like HTTP, JSON, WADL, SMTP, XML, and Atom. Also numerous extensions are also available to integrate with Servlet, FreeMarker, Spring, Jetty, JiBX, Velocity, Grizzly, Simple, or JAXB. Here are some key features of "Restlet": Native REST support: · Core REST concepts have equivalent Java classes (UniformInterface, Resource, Representation, Connector for example). · Suitable for both client-side and server-side web applications. The innovation is that that it uses the same API, reducing the learning curve and the software footprint. · Concept of "URIs as UI" supported based on the URI Templates standard. This results in a very flexible yet simple routing with automatic extraction of URI variables into request attributes. · Tunneling service lets browsers issue any HTTP method (PUT, DELETE, MOVE, etc.) through a simple HTTP POST. This service is transparent for Restlet applications. Complete Web Server: · Static file serving similar to Apache HTTP Server, with metadata association based on file extensions. · Transparent content negotiation based on client preferences. · Remote edition of files based on PUT and DELETE methods (aka mini-WebDAV mode). · Decoder service transparently decodes compressed or encoded input representations. This service is transparent for Restlet applications. · Log service writes all accesses to your applications in a standard Web log file. The log format follows the W3C Extended Log File Format and is fully customizable. · Powerful URI based redirection support similar to Apache Rewrite module. Available Connectors: · Multiple server HTTP connectors available, based on either Mortbay's Jetty or the Simple framework or Grizzly NIO framework. · AJP server connector available to let you plug behind an Apache HTTP server or Microsoft IIS. It is based on Jetty's connector. · Multiple client HTTP connectors available, based on either the JDK's HttpURLConnection class or on Apache HTTP Client. · Internal HTTP client and server connectors were also added in Restlet 1.1, with no external dependency. · Client SMTP connector based on JavaMail and a custom email XML format. · Client JDBC connector based on the JDBC API, a custom request XML format and the JDBC WebRowSet interface for XML responses. · Client FILE connector supports GET, PUT and DELETE methods on files and directories. In addition, it is able to return directory listings. · Client CLAP connector to access to the Classloader resources. · Client RIAP connector to access to the Restlet internal resources, directly inside the JVM. Available Representations: · Built-in support for XML representations (JAX, JibX, DOM or SAX based) with a simple XPath API based on JDK's built-in XPath engine. · Integration with the FreeMarker template engine · Integration with the Velocity template engine · Integration with Apache FileUpload to support multi-part forms and easily handle large file uploads from browsers · Transformer filter to easily apply XSLT stylesheets on XML representations. It is based on JDK's built-in XSLT engine. · Extensible set of core representations based on NIO readable or writable channels, BIO input or output streams. · Support for Atom and JSON standards. Flexible configuration: · Complete configuration possible in Java via the Restlet API · Configuration possible via Restlet XML and WADL files · Servlet adapter provided to let you deploy any Restlet application in Servlet compliant containers like Tomcat, when the usage of standalone HTTP connectors is not possible. · Deployment as native services is possible and illustrated using the powerful Java Service Wrapper. · Extensive integration with popular Spring IoC framework. Security: · Supports HTTP Basic and Digest authentication (client and server side) · Supports Amazon S3 authentication (client side) · Supports HTTPS (HTTP over SSL) · Supports SMTPS (SMTP over SSL) Scalability: · Fully multi-threaded design with per-request Resource instances to reduce thread-safety issues when developing applications. · Intentional removal of Servlet-like HTTP sessions. This concept, attractive as a first sight, is one of the major issue for Servlet scalability and is going against the stateless exchanges promoted by REST. · Supports non-blocking NIO modes to decouple the number of connections from the number of threads. · Supports asynchronous request processing, decoupled from IO operations. Unlike the Servlet API, the Restlet applications don't have a direct control on the outputstream, they only provide output representation to be written by the server connector. Requirements: · JRE 1.5 or later What's New in This Release: Breaking changes: · Finder#createTarget() methods are now all protected. The findTarget() method is now public. Suggested by Leigh Klotz. · All core representation classes have been moved from the "org.restlet.resource" package into a new "org.restlet.representation" package. Make sure to adjust your import instructions. · The ConnectorService#afterSend() and beforeSend() are now always called, even if no entity is written. They are now related to the sending of the message itself. Suggested by Paul Davis. · The Router.createFinder() method is now public. · The Callback abstract class in the GWT module is now an interface. This should have no impact in most cases. Just remove any associated @Override annotations. Suggested by Scooter Willis. Bugs fixed: · Fixed typo in the declaration of the o.r.e.Engine#DESCRIPTOR_AUTHENTICATOR. Reported by Remi Dewitte. · Removed all string instantiations of secrets. Contributed by Remi Dewitte. · Fixed various OSGi issues. Reported by David Fogel. · Fixed missing entries in ChallengeScheme#valueOf. Reported by Sean Sullivan. · Fixed JAXB pom issue. Reported by Fabio Mancinelli. · Added workaround to make sure that the JAX-RS extension is registered as an implementation of the JAX-RS API. Suggested by David Fogel. · Fixed encoding issue with percent characters at the end of URI references with the required two digits following. Now the percentage sign is encoded and a fine trace is logged. Reported by Nels Nelson. Enhancements: · Added a getItemIterator() on RestletFileUpload to facilitate access to parts in streaming mode. Suggested by Paul Austin. · The default SAX handler has been implemented to log validation information. Contributed by Raif S. Naffah. · DirectoryResource class in engine now has a protected getDirectoryContent() method. Suggested by Gordon Mohr. · Implemented Text#toString() in the Atom extension. · Completed list of registered media types. Suggested by Remi Dewitte. · JAX-RS extension now leverages the new security API. Contributed by Bruno Dumon. · Added setters for helpers in Engine. Suggested by Kevin Conaway. · Added the ability to tunnel methods via a specific header. Contributed by Fabrice Boileau. · Added conversion methods to engine's ByteUtils between byte arrays and character arrays. Contributed by Remi Dewitte. · Added protected DirectoryResource#getRepresentation() and getClientDispatcher() method to facilitate extension and support of special cases. Original issue reported by Dave Fogel. · Added a client connector supporting ZIP and JAR URIs that are based on local archive files. Contributed by Remi Dewitte. · Enhanced JsonRepresentation based on Tal Liron's contributions. Now supports indentation configuration and more manipulation and conversion methods. · Added RDF extension that aims to support the parsing and writing of RDF representations. · Added support of parsing and writing of RDF/XML and RDF/N3 representations. API changes: · Added Role class and "roles" property to Application. · Fully refactored the security package introduce in 1.2 M1 based on community feed-back. · Added Realm, MemoryRealm classes and "realms" property to Component. · Added "verifier" and "enroler" properties to Context. · Reverted represent*() auto-matching support for further discussions. Suggested by Tim Peierls. · Added constructors with feed URI in the Feed class of the Atom extension. · Added "indent" property to DomRepresentation. Suggested by Cliff Binstock. · Added support of Shared Key and Shared Key Lite authentication schemes developed by Microsoft. Suggested by Steve Sfartz. · WadlApplication now invokes the findTarget() method on Finder instances instead of the createTarget() one. Suggested by Leigh Klotz. · Added Delete, Get, Options, Post and Put annotations to the org.restlet.resource package. Based on community feed-back and suggestions by Tim Peierls. · Added org.restlet.resource.UniformResource and ClientResource classes as part of our new Resource API. · Added createClientInfo() method on Variant. · Added a Message#getEntityAsText() method caching the text content to allow several reads along a chain of filters. · Added a Server#setTarget() method taking a Resource class as a parameter. This is useful for minimalistic examples. · TunnelService now accepts query parameter values such as "application/xml" and now just registered extension names such as "xml". Suggested by Paul Austin. · Renamed LinkSet to Graph and added support for N3 formulae. Graph can be source or target in Link instances. · Removed Link.identifier and Graph.identifier properties. · Series#getFirstValue() now returns the default value if the parameter exists but has a null value. Suggested by Jonathan Hall. · Added Context#setClientDispatcher() and Context#setServerDispatcher() methods. · Added support for proxy authentication in the Restlet API. Added "proxyChallengeResponse" property to Request, added "proxyChallengeRequests" to Response. Added support in the HTTP parsing and formatting layers. · Added a WadlApplication#createFinder() method to facilitate customization of behavior with Spring. Suggested by Rhett Sutphin. · Added Protocol#ZIP constant. · Representation#finalize() method now has a default implementation that calls the release() method. Suggested by Remi Dewitte. · Updated accept.properties file, removing Firefox customization as version 3.0 has proper 'Accept' header. · Added a JaxbRepresentation#setValidationEventHandler method. · Added Variant#isCompatible() method. · Added an org.restlet.representation.RepresentationInfo class that contains the "lastModified" and "tags" properties from Representation which is now a subclass. Variant is the super class. Useful to check conditions without pulling a full representation. Suggested by Lars Heuer. · Added Method.ALL constant. Useful to declare variants common to all methods in the new ServerResource class. · Added new org.restlet.routing package and moved Filter, Router, Redirector and subclasses to it. · Moved Directory, Finder and Handler to org.restlet.resource package. · Renamed org.restlet.security.Guard to UniformGuard in order to move org.restlet.Guard to this security package. Misc: · Upgraded Simple server to version 4.1.9. Contributed by Niall Gallagher. · Fixed Javadocs typos in Router and Resource. Contributed by Raif S. Naffah. · Fixed issue with parent contexts in ServerServlets. Contributed by Marcelo Ochoa. · Updated OAuth library to latest version. Suggested by Sean Sullivan. · Added HttpRequest#getHeaders() and HttpResponse#getHeaders() methods. Added HttpRequest#addHeader() and HttpResponse#addHeader() static methods. Suggested by Kevin Conaway. · Updated licensing information to mention addition of the EPL 1.0 licensing option (Eclipse Public License 1.0). · Added Maven support to build Restlet modules. Suggested by many. Contributions by Jean-Yves Cronier.


Restlet Related Software