com.google.appengine.tools.development

## Interface DevAppServer

-     public interface DevAppServer

  `DevAppServer` launches a local Jetty server (by default) with a single hosted web application. It can be invoked from the command-line by providing the path to the directory in which the application resides as the only argument. Over time, the environment provided by this class should come to resemble the environment provided to hosted applications in production. For example, stub applications of all of the API's should be provided, and similar security restrictions should be enforced.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `DEFAULT_HTTP_ADDRESS` `DevAppServer` listens on this network address for incoming HTTP requests.
    `static int` | `DEFAULT_HTTP_PORT` `DevAppServer` listens on this port for incoming HTTP requests.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `com.google.appengine.tools.development.AppContext` | `getAppContext()` Returns the `AppContext` for the main container.
    `com.google.appengine.tools.development.AppContext` | `getCurrentAppContext()` Returns the `AppContext` corresponding to the HTTP request (or background thread) associated with the current thread, or `null` if the current thread is not associated with any HTTP request (or background thread).
    `int` | `getPort()`
    `java.util.Map<java.lang.String,java.lang.String>` | `getServiceProperties()` Get the properties that are used by the local services to configure themselves.
    `void` | `gracefulShutdown()` Shut down the server after all outstanding requests have completed.
    `java.util.concurrent.CountDownLatch` | `restart()` Restart the server to reload disk and class changes.
    `void` | `setServiceProperties(java.util.Map<java.lang.String,java.lang.String> properties)` Sets the properties that will be used by the local services to configure themselves.
    `void` | `setThrowOnEnvironmentVariableMismatch(boolean throwOnMismatch)` Reset the container EnvironmentVariableMismatchSeverity.
    `void` | `shutdown()` Shut down the server.
    `java.util.concurrent.CountDownLatch` | `start()` Starts the server.

- - ### Field Detail

    - #### DEFAULT_HTTP_ADDRESS

          static final java.lang.String DEFAULT_HTTP_ADDRESS

      `DevAppServer` listens on this network address for incoming HTTP requests. This can be overriden with `--address=<addr>`.
      See Also:
        Constant Field Values

    - #### DEFAULT_HTTP_PORT

          static final int DEFAULT_HTTP_PORT

      `DevAppServer` listens on this port for incoming HTTP requests. This can be overriden with `--port=NNNN`.
      See Also:
        Constant Field Values

  - ### Method Detail

    - #### setServiceProperties

          void setServiceProperties(java.util.Map<java.lang.String,java.lang.String> properties)

      Sets the properties that will be used by the local services to configure themselves. This method must be called before the server has been started.
      Parameters:
        `properties` - a, maybe `null`, set of properties.
      Throws:
        `java.lang.IllegalStateException` - if the server has already been started.

    - #### getServiceProperties

          java.util.Map<java.lang.String,java.lang.String> getServiceProperties()

      Get the properties that are used by the local services to configure themselves.
      Returns:
        service properties.

    - #### start

          java.util.concurrent.CountDownLatch start()
                                             throws java.lang.Exception

      Starts the server.
      Returns:
        a latch that will be decremented to zero when the server is shutdown or restarted.
      Throws:
        `java.lang.IllegalStateException` - If the server has already been started or shutdown.
        `com.google.apphosting.utils.config.AppEngineConfigException` - If no WEB-INF directory can be found or WEB-INF/appengine-web.xml does not exist.
        `java.lang.Exception`

    - #### restart

          java.util.concurrent.CountDownLatch restart()
                                               throws java.lang.Exception

      Restart the server to reload disk and class changes.
      Returns:
        a latch that will be decremented to zero when the server is shutdown or restarted.
      Throws:
        `java.lang.IllegalStateException` - If the server has not been started or has already been shutdown.
        `java.lang.Exception`

    - #### shutdown

          void shutdown()
                 throws java.lang.Exception

      Shut down the server.
      Throws:
        `java.lang.IllegalStateException` - If the server has not been started or has already been shutdown.
        `java.lang.Exception`

    - #### gracefulShutdown

          void gracefulShutdown()

      Shut down the server after all outstanding requests have completed.

    - #### getPort

          int getPort()

      Returns:
        the servlet container listener port number.

    - #### getAppContext

          com.google.appengine.tools.development.AppContext getAppContext()

      Returns the `AppContext` for the main container. Useful in embedding scenarios to allow the embedder to install servlets, etc. Any such modification should be done before calling `start()`.
      See Also:
        `ContainerService.getAppContext()`

    - #### getCurrentAppContext

          com.google.appengine.tools.development.AppContext getCurrentAppContext()

      Returns the `AppContext` corresponding to the HTTP request (or background thread) associated with the current thread, or `null` if the current thread is not associated with any HTTP request (or background thread).

    - #### setThrowOnEnvironmentVariableMismatch

          void setThrowOnEnvironmentVariableMismatch(boolean throwOnMismatch)

      Reset the container EnvironmentVariableMismatchSeverity.