Class CGI

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

    public class CGI
    extends javax.servlet.http.HttpServlet
    CGI Servlet.

    The following init parameters are used to configure this servlet:

    cgibinResourceBase
    Path to the cgi bin directory if set or it will default to the resource base of the context.
    resourceBase
    An alias for cgibinResourceBase.
    cgibinResourceBaseIsRelative
    If true then cgibinResourceBase is relative to the webapp (eg "WEB-INF/cgi")
    commandPrefix
    may be used to set a prefix to all commands passed to exec. This can be used on systems that need assistance to execute a particular file type. For example on windows this can be set to "perl" so that perl scripts are executed.
    Path
    passed to the exec environment as PATH.
    ENV_*
    used to set an arbitrary environment variable with the name stripped of the leading ENV_ and using the init parameter value
    useFullPath
    If true, the full URI path within the context is used for the exec command, otherwise a search is done for a partial URL that matches an exec Command
    ignoreExitState
    If true then do not act on a non-zero exec exit status")
    See Also:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      private static class  CGI.EnvList
      private utility class that manages the Environment passed to exec.
    • Constructor Summary

      Constructors 
      Constructor Description
      CGI()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private void exec​(java.io.File command, java.lang.String pathInfo, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
      executes the CGI process
      private static java.lang.String getTextLineFromStream​(java.io.InputStream is)
      Utility method to get a line of text from the input stream.
      void init()  
      void service​(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)  
      private static void writeProcessInput​(java.lang.Process p, java.io.InputStream input, int len)  
      private static void writeProcessInput​(java.lang.Process p, java.lang.String input)  
      • Methods inherited from class javax.servlet.http.HttpServlet

        doDelete, doGet, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service
      • Methods inherited from class javax.servlet.GenericServlet

        destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • LOG

        private static final Logger LOG
      • _ok

        private boolean _ok
      • _docRoot

        private java.io.File _docRoot
      • _cgiBinProvided

        private boolean _cgiBinProvided
      • _path

        private java.lang.String _path
      • _cmdPrefix

        private java.lang.String _cmdPrefix
      • _useFullPath

        private boolean _useFullPath
      • _ignoreExitState

        private boolean _ignoreExitState
      • _relative

        private boolean _relative
    • Constructor Detail

      • CGI

        public CGI()
    • Method Detail

      • init

        public void init()
                  throws javax.servlet.ServletException
        Overrides:
        init in class javax.servlet.GenericServlet
        Throws:
        javax.servlet.ServletException
      • service

        public void service​(javax.servlet.http.HttpServletRequest req,
                            javax.servlet.http.HttpServletResponse res)
                     throws javax.servlet.ServletException,
                            java.io.IOException
        Overrides:
        service in class javax.servlet.http.HttpServlet
        Throws:
        javax.servlet.ServletException
        java.io.IOException
      • exec

        private void exec​(java.io.File command,
                          java.lang.String pathInfo,
                          javax.servlet.http.HttpServletRequest req,
                          javax.servlet.http.HttpServletResponse res)
                   throws java.io.IOException
        executes the CGI process
        Parameters:
        command - the command to execute, this command is prefixed by the context parameter "commandPrefix".
        pathInfo - The PATH_INFO to process, see http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getPathInfo%28%29. Cannot be null
        req - the HTTP request
        res - the HTTP response
        Throws:
        java.io.IOException - if the execution of the CGI process throws
      • writeProcessInput

        private static void writeProcessInput​(java.lang.Process p,
                                              java.lang.String input)
      • writeProcessInput

        private static void writeProcessInput​(java.lang.Process p,
                                              java.io.InputStream input,
                                              int len)
      • getTextLineFromStream

        private static java.lang.String getTextLineFromStream​(java.io.InputStream is)
                                                       throws java.io.IOException
        Utility method to get a line of text from the input stream.
        Parameters:
        is - the input stream
        Returns:
        the line of text
        Throws:
        java.io.IOException - if reading from the input stream throws