Package org.restlet

Class Component

java.lang.Object
org.restlet.Restlet
org.restlet.Component
All Implemented Interfaces:
Uniform

public class Component extends Restlet
Restlet managing a set of Connectors, VirtualHosts, Services and Applications. Applications are expected to be directly attached to virtual hosts or to the internal router (see RIAP pseudo-protocol for usage). Components also expose several services: access logging and status setting.

From an architectural point of view, here is the REST definition: "A component is an abstract unit of software instructions and internal state that provides a transformation of data via its interface." Roy T. Fielding

Components also have useful services associated. They are all enabled by default and are available as properties that can be eventually overridden:
  • "logService" to configure access logging.
  • "statusService" to provide common representations for exception status.
  • "taskService" to run tasks asynchronously.
Concurrency note: instances of this class or its subclasses can be invoked by several threads at the same time and therefore must be thread-safe. You should be especially careful when storing state in member variables.
Author:
Jerome Louvel
See Also:
  • Constructor Details

    • Component

      public Component()
      Constructor.
  • Method Details

    • getClients

      public ClientList getClients()
      Returns a modifiable list of client connectors.
      Returns:
      A modifiable list of client connectors.
    • getDefaultHost

      public VirtualHost getDefaultHost()
      Returns the default virtual host.
      Returns:
      The default virtual host.
    • getHosts

      public List<VirtualHost> getHosts()
      Returns the modifiable list of virtual hosts. Note that the order of virtual hosts in this list will be used to check the first one that matches.
      Returns:
      The modifiable list of virtual hosts.
    • getInternalRouter

      public Router getInternalRouter()
      Returns the private internal router where Restlets like Applications can be attached. Those Restlets can be addressed via the Protocol.RIAP (Restlet Internal Access Protocol) client connector. This is used to manage private, internal and optimized access to local applications.

      The first use case is the modularization of a large application into modules or layers. This can also be achieved using the Context.getServerDispatcher() method, but the internal router is easily addressable via an URI scheme and can be fully private to the current Component.

      The second use case is the composition/mash-up of several representations via the org.restlet.ext.xml.Transformer class for example. For this you can leverage the XPath's document() function or the XSLT's include and import elements with RIAP URIs.
      Returns:
      The private internal router.
    • getLogService

      public LogService getLogService()
      Returns the global log service. On the first call, if no log service was defined via the setLogService(LogService) method, then a default logger service is created. This service will be enabled by default and has a logger name composed the "org.restlet." prefix followed by the simple component class name (without packages), followed by the ".LogService" suffix.
      Returns:
      The global log service.
    • getRealm

      public Realm getRealm(String name)
      Finds the realm with the given name.
      Parameters:
      name - The name.
      Returns:
      The realm found or null.
    • getRealms

      public List<Realm> getRealms()
      Returns the modifiable list of security realms.
      Returns:
      The modifiable list of security realms.
    • getServers

      public ServerList getServers()
      Returns the modifiable list of server connectors.
      Returns:
      The modifiable list of server connectors.
    • getServices

      public ServiceList getServices()
      Returns the modifiable list of services.
      Returns:
      The modifiable list of services.
    • getTaskService

      public TaskService getTaskService()
      Returns a task service to run concurrent tasks. The service is enabled by default.
      Returns:
      A task service.
    • handle

      public void handle(Request request, Response response)
      Description copied from class: Restlet
      Handles a call. The default behavior is to initialize the Restlet by setting the current context using the Context.setCurrent(Context) method and by attempting to start it, unless it was already started. If an exception is thrown during the start action, then the response status is set to Status.SERVER_ERROR_INTERNAL.

      Subclasses overriding this method should make sure that they call super.handle(request, response) before adding their own logic.

      Specified by:
      handle in interface Uniform
      Overrides:
      handle in class Restlet
      Parameters:
      request - The request to handle.
      response - The response to update.
    • setClients

      public void setClients(ClientList clients)
      Sets the modifiable list of client connectors. This method clears the current list and adds all entries in the parameter list.
      Parameters:
      clients - A list of client connectors.
    • setContext

      public void setContext(Context context)
      Description copied from class: Restlet
      Sets the context.
      Overrides:
      setContext in class Restlet
      Parameters:
      context - The context.
    • setDefaultHost

      public void setDefaultHost(VirtualHost defaultHost)
      Sets the default virtual host.
      Parameters:
      defaultHost - The default virtual host.
    • setHosts

      public void setHosts(List<VirtualHost> hosts)
      Sets the modifiable list of virtual hosts. Note that the order of virtual hosts in this list will be used to check the first one that matches. This method clears the current list and adds all entries in the parameter list.
      Parameters:
      hosts - A list of virtual hosts.
    • setInternalRouter

      public void setInternalRouter(Router internalRouter)
      Sets the private internal router were Restlets like Applications can be attached.
      Parameters:
      internalRouter - The private internal router.
      See Also:
    • setLogService

      public void setLogService(LogService logService)
      Sets the global log service.
      Parameters:
      logService - The global log service.
    • setRealms

      public void setRealms(List<Realm> realms)
      Sets the list of realms. This method clears the current list and adds all entries in the parameter list.
      Parameters:
      realms - A list of realms.
    • setServers

      public void setServers(ServerList servers)
      Sets the modifiable list of server connectors. This method clears the current list and adds all entries in the parameter list.
      Parameters:
      servers - A list of server connectors.
    • setTaskService

      public void setTaskService(TaskService taskService)
      Sets the task service.
      Parameters:
      taskService - The task service.
    • start

      public void start() throws Exception
      Starts the component. First it starts all the connectors (clients then servers), the routers, the services, the realms and then the component's internal helper. Finally, it calls the start method of the super class.
      Overrides:
      start in class Restlet
      Throws:
      Exception
      See Also:
    • startClients

      protected void startClients() throws Exception
      Starts the client connectors.
      Throws:
      Exception
    • startHelper

      protected void startHelper() throws Exception
      Starts the internal helper allowing incoming requests to be served.
      Throws:
      Exception
    • startRealms

      protected void startRealms() throws Exception
      Starts the realms.
      Throws:
      Exception
    • startRouters

      protected void startRouters() throws Exception
      Starts the virtual hosts and the internal router.
      Throws:
      Exception
    • startServers

      protected void startServers() throws Exception
      Starts the server connectors.
      Throws:
      Exception
    • startServices

      protected void startServices() throws Exception
      Starts the associated services.
      Throws:
      Exception
    • stop

      public void stop() throws Exception
      Stops the component. First it stops the component's internal helper, the realms, the services, the routers and then stops all the connectors (servers then clients) Finally it calls the stop method of the super class.
      Overrides:
      stop in class Restlet
      Throws:
      Exception
      See Also:
    • stopClients

      protected void stopClients() throws Exception
      Stops the client connectors.
      Throws:
      Exception
    • stopHelper

      protected void stopHelper() throws Exception
      Stops the internal helper allowing incoming requests to be served.
      Throws:
      Exception
    • stopRealms

      protected void stopRealms() throws Exception
      Stops the realms.
      Throws:
      Exception
    • stopRouters

      protected void stopRouters() throws Exception
      Stops the virtual hosts and the internal router.
      Throws:
      Exception
    • stopServers

      protected void stopServers() throws Exception
      Stops the server connectors.
      Throws:
      Exception
    • stopServices

      protected void stopServices() throws Exception
      Stops the associated services.
      Throws:
      Exception
    • updateHosts

      public void updateHosts() throws Exception
      Updates the component to take into account changes to the virtual hosts. This method doesn't stop the connectors or the applications or Restlets attached to the virtual hosts. It just updates the internal routes between the virtual hosts and the attached Restlets or applications.
      Throws:
      Exception