Class RepositoryStartupServlet

  • All Implemented Interfaces:
    Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig

    public class RepositoryStartupServlet
    extends AbstractRepositoryServlet
    The RepositoryStartupServlet starts a jackrabbit repository and registers it to the JNDI environment.

    Setup Wizard Functionality
    When using the first time, the configuration can miss the relevant repository parameters in the web.xml. if so, it must contain a bootstrap-config parameter that refers to a property file. This file must exist for proper working. If not, the repository is not started.
    If the servlet is not configured correctly and accessed via http, it will provide a simple wizard for the first time configuration. It prompts for a new (or existing) repository home and will copy the templates of the repository.xml and bootstrap.properties to the respective location.

    See Also:
    Serialized Form
    • Field Detail

      • INIT_PARAM_BOOTSTRAP_CONFIG

        public static final String INIT_PARAM_BOOTSTRAP_CONFIG
        initial param name for the bootstrap config location
        See Also:
        Constant Field Values
    • Constructor Detail

      • RepositoryStartupServlet

        public RepositoryStartupServlet()
    • Method Detail

      • init

        public void init()
                  throws javax.servlet.ServletException
        Initializes the servlet.
        Please note that only one repository startup servlet may exist per webapp. it registers itself as context attribute and acts as singleton.
        Overrides:
        init in class AbstractRepositoryServlet
        Throws:
        javax.servlet.ServletException - if a same servlet is already registered or of another initialization error occurs.
      • getInstance

        public static RepositoryStartupServlet getInstance​(javax.servlet.ServletContext context)
        Returns an instance of this servlet. Please note, that only 1 repository startup servlet can exist per webapp.
        Parameters:
        context - the servlet context
        Returns:
        this servlet
      • startup

        public void startup()
                     throws javax.servlet.ServletException
        Configures and starts the repository. It registers it then to the RMI registry and bind is to the JNDI context if so configured.
        Throws:
        javax.servlet.ServletException - if an error occurs.
      • shutdown

        public void shutdown()
        Does a shutdown of the repository and deregisters it from the RMI registry and unbinds if from the JNDI context if so configured.
      • restart

        public void restart()
                     throws javax.servlet.ServletException
        Restarts the repository.
        Throws:
        javax.servlet.ServletException - if an error occurs.
        See Also:
        shutdown(), startup()
      • destroy

        public void destroy()
        destroy the servlet
        Specified by:
        destroy in interface javax.servlet.Servlet
        Overrides:
        destroy in class AbstractRepositoryServlet
      • getRepositoryFactory

        public RepositoryFactory getRepositoryFactory()
        Returns a repository factory that returns the repository if available or throws an exception if not.
        Returns:
        repository factory
      • createRepository

        protected Repository createRepository​(InputSource is,
                                              File homedir)
                                       throws RepositoryException
        Creates the repository instance for the given config and homedir. Subclasses may override this method of providing own implementations of a Repository.
        Parameters:
        is - input source of the repository config
        homedir - the repository home directory
        Returns:
        a new jcr repository.
        Throws:
        RepositoryException - if an error during creation occurs.
      • getBootstrapConfig

        public BootstrapConfig getBootstrapConfig()
        Returns the config that was used to bootstrap this servlet.
        Returns:
        the bootstrap config or null.
      • doGet

        protected void doGet​(javax.servlet.http.HttpServletRequest req,
                             javax.servlet.http.HttpServletResponse resp)
                      throws javax.servlet.ServletException,
                             IOException
        Outputs the repository descriptors either as a collection of properties (see Properties.store(java.io.OutputStream, String) or individually addressable text/plain resources based on the request URI.

        A typical mapping for a repository servlet would be:

         <servlet-mapping>
           <servlet-name>Repository</servlet-name>
           <url-pattern>/repository/*</url-pattern>
         </servlet-mapping>
         

        This mapping would allow clients to retrieve all repository descriptors from http://server/context/repository/ and to address individual descriptors by key with URIs like http://server/context/repository/key. For example, the name of the repository vendor could be retrieved from http://server/context/repository/jcr.repository.vendor. Likewise, a 404 (not found) response from http://server/context/repository/level.2.supported would indicate that the repository does not support Level 2 features.

        Note that mapping a repository servlet to the URL space is optional, as the main purpose of the servlet is to make a repository available in the servlet context, not to expose repository information to web clients.

        Overrides:
        doGet in class AbstractRepositoryServlet
        Parameters:
        req - HTTP request
        resp - HTTP response
        Throws:
        javax.servlet.ServletException - on servlet errors
        IOException - on IO errors
      • doPost

        protected void doPost​(javax.servlet.http.HttpServletRequest req,
                              javax.servlet.http.HttpServletResponse resp)
                       throws javax.servlet.ServletException,
                              IOException
        Overrides:
        doPost in class javax.servlet.http.HttpServlet
        Throws:
        javax.servlet.ServletException
        IOException