Sorcerer's IsleDocs Lucee on JettyOverviewCode

Glossary

This glossary aims to define terms you may encounter in the Jetty configuration or documentation which are either not common terms or may have non-typical meanings. If a term is not here (or not fully described), take a look in the Lucee or Jetty docs as appropriate, or consult a dictionary or encylopaedia. If none of these provide you with a satisfactory answer, please go ahead and raise an issue to get it added.

alias

An alias is an alternate name for something that already has a name. In Tomcat, you can specify aliases for hostname to have multiple domains/subdomains resolve to the same host. In Jetty this is achieved with an array of virtualHosts.

context, webapp, WebAppContext

Within a single server, there can be multiple webapp contexts, where a "webapp" can be seen as a web-based application and a "context" is the area within which that webapp runs. A webapp is not the same thing as a Lucee/CFML application, and multiple CFML applications can run from within a single webapp context.

The lucee-base/webapps directory is where Jetty's WebAppContexts are configured. The Lucee configuration for each context is in lucee-base/webinfs - the default location is a WEB-INF directory within the webroot, but this is not recommended.

context path, contextPath

The context path can be used to differentiate multiple contexts on a single host - it is a prefix to the request url that indicates which webapp a URL is referring to.

If all contexts are on their own hosts, the context path is unnecessary and set to an empty string.

Within Lucee, cgi.context_path will provide you this value.

distribution

This is a general software term for a piece of completed software. Similar terms are "package" or "bundle". A Jetty distribution is specifically what you get when going to the Jetty website and downloading the software - the filename is in the format jetty-distribution-{version}.v{timestamp}.{type}

With Lucee on Jetty, the Jetty distribution is the jetty-home directory.

host, hostname

In networking terms, a "host" refers to a server, and a hostname is a name for that server. A server can be referred to by multiple names, and thus have multiple hostnames. A domain name is a hostname.

When a domain name refers to an application on a server, but not the server itself, it is considered a virtual hostname, or simply virtualhost.

in Jetty, hostnames are configured via the virtualHost property of a context.

JAR

JAR is an abbreviation of Java Archive and a special type of zip file which collects Java classes and other files in a certain structure that can be used by a Java application. A JAR file might contains a small library or an entire piece of software.

${jetty.home}, ${jetty.base}

These are the Jetty variables which refer to the directories containing the home and base aspects of a Jetty setup.

Within Lucee on Jetty, ${jetty.home} is the jetty-home directory, the Jetty distribution, whilst ${jetty.base} is the lucee-base directory.

jetty-home

This is the directory which contains the Jetty distribution. No files within the jetty-home directory are modified for Lucee on Jetty, meaning that upgrading Jetty can generally be done by simply swapping this directory out for an updated one.

lco

This extension refers to a Lucee COre file. These are the files which live in the lucee-base/lucee-server/patches directory and are used to upgrade Lucee to a new version.

lex

This extension refers to a Lucee EXtension file. These are files which allow you to extend Lucee with additional functionality, and can be installed by placing the file in the lucee-base/lucee-server/deploy directory.

lucee-base

This is the directory which configures Lucee to work with Jetty, containing the configuration and overrides to the defaults set by jetty-home plus the Lucee JAR files.

lucee-server

This directory is populated when Lucee first starts, and contains two sub-directories, "context" and "patches". The latter contains lco files which control which version of Lucee you are running.

The lucee-server/context directory is where the server-wide configuration of Lucee is stored. Note that it is not an individual context in the Jetty sense.

modules

In Jetty, each piece of functionality is grouped into a module, defined by a {name}.mod file in the jetty-home/modules directory, which lists the JARs and configuration for the module, plus any other modules the current one depends on to work.

override descriptor, overrideDescriptor

In a Jetty webapp context, the overideDescriptor property refers to a file which contains a partial web.xml configuration, which can be used to override the default configuration (webdefault.xml) without needing to re-define everything.

Lucee on Jetty uses this to configure the Lucee servlets without repeating the Jetty default servlet configuration.

Previous versions required the overrideDescriptor configuration to be placed in each context's XML config, but the current version automatically includes it.

path info, pathInfo

Path Info is the part of a Request URL that comes after the Script Name. For example, given the request URL /index.cfm/something/here the "/index.cfm" part is the Script Name whilst the "/something/here" part is the Path Info.

It can be accessed in Lucee via cgi.path_info.

Note that some servers incorrectly place the entire Request URL into the path_info variable - this is a bug in that software.

port

In networking, a port is a number on which a server listens for connections. Different protocols default to using different ports - for example, email (SMTP) defaults to port 25 whilst HTTP defaults to port 80.

When a non-default port is used, it is included in the URL after the domain name, separated by a colon, e.g. http://domain.com:8080/

Jetty defaults to running HTTP on port 8080, but this can be configured in start.ini - only one piece of software can listen on each port, so you should ensure that any port you use is not already in use.

Request URL

The Request URL is the part of the URL after the hostname and port, before any query string. It may comprise of Context Path, Script Name, and Path Info parts, or it may contain an arbitrary string which is later re-written into those parts.

requested path, requestedPath

The requestedPath property is how Jetty refers to the Request URL. Jetty only cares about the context path (if any), and then uses its URL mappings to determine which servlet to send the request to. If a URL is rewritten, the requestedPath property is what enables Lucee to determine the original Path Info and ensure cgi.path_info is correctly set.

resource base, resourceBase

In Java, a "resource" can refer to a file or directory, and the resourceBase is Jetty's name for the webroot directory (elsewhere known as public_html or htdocs). This is where the publically-accessible files for a web server should be placed, so that they can be served over HTTP.

resources

Jetty has a "resources" directory which contains its logging configuration. In this meaning, "resources" is simply saying "files Jetty uses" and is unrelated to the "resourceBase" webroot concept described above.

rewrite

Rewriting a URL is taking one value and changing it to another. This can be done to provide user-friendly URLs rather than the default script-based URLs that webapps traditionally used.

Rewriting can be done with a variety of rules, which use wildcards or regex to identify a URL to be re-written and then replaced with something else. See Jetty's Rewrite Handler documentation for more information.

Since v0.7, Lucee on Jetty depends on Jetty's rewrite functionality directly, rather than the rewrite module, so to write your own rewrite rules, enable the rewrite module first.

root

Root is a term with multiple related but different meanings:

Server Admin

The Lucee Server Admin allows configuration of values which apply either to all contexts, or that serve as the default values for any new contexts created.

It is available from the URL /lucee/admin/server.cfm on all contexts and its files are stored in lucee-base/lucee-server/context

server context, server-context

This is a Lucee term that refers to the context directory within the lucee-server directory. It is only a name - there is not an actual server webapp context.

servlet

A servlet is a server-based application which runs on the JVM. A servlet is executed via a servlet container, and there is a Servlet specification and API which ensures that servlets work the same across different servlet containers.

A Servlet may be a single piece of software, or it may be used to execute other software.

Lucee currently contains two servlets, the main CFML servlet, and a REST servlet (through which RESTful web service functionality is provided).

servlet container, servlet engine

A servlet container is any software which runs a servlet in accordance with the Servlet specification.

Jetty and Tomcat are the primary examples of servlet containers, but both of them are more than just containers.

stderr, stdout

Standard Error (stderr) and Standard Output (stdout) are the two destinations a command line application can send its output to. stderr is for any messages which are considered errors or failures, whilst stdout is any other output.

In different situations these may be redirected to different location - when interacting with software, you want errors on screen but might want the output to a file.

For server software, such as Jetty, it generally makes sense to have everything go to a log file instead of on screen (since many servers don't have screens), which means redirecting stderr and stdout so they are appended to a log file.

virtual host, virtualHosts

A virtual host is the term for when a hostname does not refer to a real server, but instead refers to an application on a server with a different name. This can sometimes be called an "alias", or a "parked domain" by hosting service providers.

In Jetty, virtual hosts are configured per-context using the virtualHost property, which can contain an array of domains, IP addresses, etc to which that context will respond.

Web Admin

Lucee provides a Web Admin for each webapp context, allowing you to configure them each individually. (There is also a single Server Admin which can be used to set global defaults.)

The Web Admin is available at /lucee/admin/web.cfm and saves its configuration within the lucee-base/webinfs/{web-context-label}/ directory (where a context's label defaults to a unique hash and can be configured in the Server Admin.

webapps, WebAppContext

See context.

web-context-label, web-context-hash

Lucee allocates a unique web-context-hash to each context, plus a customisable web-context-label (which defaults to the web-context-hash). These variables can be used within servlet configuration parameters to define where the Lucee configuration directory goes.

WEB-INF, webinfs

A WEB-INF directory is the default location for a context's configuration, and will most often be seen if you look inside a .WAR file.

Lucee, by default, creates a WEB-INF/lucee directory where Lucee's configuration is stored, but for Lucee on Jetty, the location of this directory has been overriden to lucee-base/webinfs/{web-context-label} which takes it out of the webroot (and means that a WEB-INF directory does not get created, unless some other servlet creates it).

webroot

The webroot (also known as htdocs, public_html, wwwroot) is the directory on a server where public-facing files are placed.

In Jetty it is called the resourceBase and can be configured independently for each servlet (i.e. you do not need to place the webroot for multiple contexts within the same parent directory, though you can if you wish).

Lucee on Jetty default configuration has the webroot at lucee-base/webapps/ROOT