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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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 is a term with multiple related but different meanings:
/
);
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
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.
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).
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.
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.
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.
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.
See context.
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.
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).
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