Skip to content
This repository has been archived by the owner on Aug 24, 2023. It is now read-only.

gServ Standalone

Lee Collins edited this page Nov 3, 2015 · 30 revisions

###gServ may be used as a standalone HTTP server to serve static content as well as REST resources written as Groovy scripts ##Requirements Java 1.6+ on the PATH

##Install Copy the contents of dist folder on GitHub to a local folder. Add that folder to your PATH.

##Verify installation type 'gserv' at the prompt

This should print the gServ options to the console.

Serving Static Content

Here we serve static content from the /public folder on port 12000.
    prompt> gserv -s /public -p 12000
    

Serving REST Resources

GServ may be used to serve static content along with dynamic REST resources

    prompt> gserv -s /public -r Math.groovy -p 12000
The content of Math.groovy:
    [Resource("/math"){
        get "/", {
            write "text/plain", "Welcome to our GServ Math example"
        }
    get "/:num1/:num2/:operation", { num1, num2, operation ->
        def ans = 0
        def msg = ""
        switch ( operation ){
            case "add" : ans = (num1 as int) + (num2 as int);
            case "subtract" : ans = (num1 as int) - (num2 as int);
            case "multiply" : ans = (num1 as int) * (num2 as int);
            case "divide" : ans = (num1 as double) / (num2 as double);
                msg = "$operation($num1, $num2) = $ans"
            default:
                msg = "Operation: $operation is not supported";
        }
        write "text/plain",  msg
    }
}]

##GServ Commandline Options

Option Meaning
-s Static Content Folder
-a The address to which to listen. Only requests for this particular IP address will be fullfiled.
Example:
gserv -s /public -a 192.166.2.33 -p 12000
-p The port on which to listen.
Example:
gserv -s /public -p 12000
-i GServ Instance Script
-n Name of the application
-d Default Resource
--no-status-page Disables the status page.
--status-path Path to use for the status page.
-v Prints the current gServ version
-r GServ Resource Scripts (separated by commas)
--classpath Classpath (list of Jars separated by commas)
Example:
gserv -s /public -r This.groovy,That.groovy -j This.jar,That.jar
-c GServ Config file name
-x Sets the number of threads to use for request processing. Default: Number of processors on system + 1

##GServ Deployment Configuration File

Gserv Config files are JSON files describing the appications to deploy. The main elements are: https, plugin, apps, classpath.

https - optional. element containing SSL information

plugins - optional. element containing plugins to register

apps - array element containing application configs for each instance to be deployed

classpath - optional. list of jar files with application dependencies

Below is an example configuration file:
{
    "https":{
        "keyManagerAlgorithm": "SunX509",
        "trustManagerAlgorithm": "SunX509",
        "keystoreFilePath": "/Users/javaConductor/gserv.keystore",
        "keyStoreImplementation": "JKS",
        "password": "secretStuff",
        "sslProtocol" : "TLS"
    },
    "plugins": {
        "myPlugin":  "thirdparty.plugins.MyPlugin"
        },
    "apps" : [{
            "https": false,
            "name" : "singlePageMath",
            "resourceScripts" : ["resources/Resource1.groovy",
                                 "resources/Resource2.groovy"],
            "port" : 11111,
            "bindAddress": "127.0.0.1",
            "static_roots" : [ "/Users/javaConductor/public" ]
        },{
              "https": true,
              "name" : "singlePageMath2",
              "resourceScripts" : ["resources/Resource2.groovy"],
              "port" : 11112,
              "bindAddress": 127.0.0.1,
              "static_roots" : [ "/Users/javaConductor/public" ]
          }],
"classpath" : ["/apps/lib/service1.jar","/apps/lib/service2.jar"]

}