This topic describes how VMware GemFire processes set their CLASSPATH.
To simplify CLASSPATH environment settings, VMware GemFire has organized all application libraries required by VMware GemFire processes into *-dependencies.jar
files. All dependency JAR files are located in the path_to_product/lib
directory.
When starting a server or locator process using gfsh
, application JAR files are automatically loaded into the process’s CLASSPATH from two directories:
path_to_product/lib/
path_to_product/extensions/
Note: To embed VMware GemFire in your application, add path_to_product/lib/geode-dependencies.jar
to your CLASSPATH.
The following table lists the dependency JAR files associated with various VMware GemFire processes:
VMware GemFire Process | Associated JAR Files |
---|---|
gfsh | gfsh-dependencies.jar |
server and locator | geode-dependencies.jar
Note:
Use this library for all standalone or embedded VMware GemFire processes (including Java clients) that host cache data. |
There are two options for updating the CLASSPATH of VMware GemFire server and locator processes that are started on the gfsh command line.
Option 1: Specify the --classpath
parameter upon process startup. For example, to modify the CLASSPATH of a locator:
gfsh> start locator --name=locator1 --classpath=/path/to/applications/classes.jar
And to modify the CLASSPATH of a server:
gfsh> start server --name=server1 --classpath=/path/to/applications/classes.jar
Application classes supplied as arguments to the --classpath
option are prepended to the server or locator’s CLASSPATH, beginning in second position. The first entry in the CLASSPATH is reserved for the core VMware GemFire jar file, for security reasons.
Option 2: Define the CLASSPATH environment variable in your OS environment. Then, specify the --include-system-classpath
parameter upon process startup. For example:
gfsh> start locator --name=locator1 --include-system-classpath=true
The same can also be done for server processes:
gfsh> start server --name=server1 --include-system-classpath=true
This option appends the contents of the system CLASSPATH environment variable to the locator or server’s CLASSPATH upon startup. Specifying this option without a value sets it to true.
If you are starting a VMware GemFire process programmatically (standalone or embedded), we recommend that you specify the CLASSPATH upon program execution using the java -classpath
or java -cp
command-line option. This method is preferred to setting the CLASSPATH as an environment variable since it allows you to set the value individually for each application without affecting other applications and without other applications modifying its value.
For example, to start up a VMware GemFire locator process using the LocatorLauncher API, you can execute the following on the command line:
prompt# java -cp "path_to_product/lib/geode-dependencies.jar"
org.apache.geode.distributed.LocatorLauncher start locator1
<locator-launcher-options>
To start up a VMware GemFire server process using the ServerLauncher API:
prompt# java -cp "path_to_product/lib/geode-dependencies.jar:/path/to/your/applications/classes.jar"
org.apache.geode.distributed.ServerLauncher start server1
<server-launcher-options>
Note that in addition to the *-dependencies.jar
file associated with the process, you must also specify any custom application JARs that you wish to access in your VMware GemFire process. For example, if you are planning on using a customized compressor on your regions, you should specify the application JAR that contains the compressor application you wish to use.
To start up an application with an embedded cache:
java -cp "path_to_product/lib/geode-dependencies.jar:/path/to/your/applications/classes.jar"
com.mycompany.package.ApplicationWithEmbeddedCache
Note: Another method for updating the CLASSPATH of a server process with your own applications is to use the gfsh deploy
command. Deploying application JAR files will automatically update the CLASSPATH of all members that are targeted for deployment. See Deploying Application JARs to VMware GemFire Members for more details.
For systems running an embedded HTTP or HTTPS service, setting a GEODE_HOME
environment variable with a path to the VMware GemFire installation directory allows a server launcher to find the WAR file without any changes to the CLASSPATH.