All properties listed in the below table are all the possible UWS configuration properties. Some of them are mandatory. If one of these properties is missing, the UWS Service will not be able to start: an error will be displayed immediately in the application server log and a HTTP 503 error will be sent when accessing the UWS URL.
Besides, you should know that any property key not listed in this table will be ignored without error or warning message.
However, any not allowed property value will generate a warning message in the application server log and the default value will be kept. Thus, the UWS Service will be started and available but the desired configuration value will not be set. So, you should take a look at the application server log every times you start the UWS Service!
Here is an empty minimum UWS configuration file: uws_min.properties and a complete one: uws_full.properties.
Important note: Any limit value is an integer and so can be at most: 231-1 bytes/rows = 2147483647B/R (or also for the byte unit: = 2147483kB = 2147MB = 2GB). Otherwise, you should use the null value 0 to raise the limit constraint.
Legend: M means that the property is mandatory. If nothing is written for the second column, the property is optional.
/ mandatory propertiesProperty | Type | Description | Example | |
---|---|---|---|---|
General | ||||
home_page | text |
This property lets set a custom home page. 4 different kinds of value are accepted:
By default, the default home page provided by the library is used. |
|
|
home_page_mime_type | text |
MIME type of the service home page. This property is used only if the specified "home_page" is a local file path (i.e. if "home_page=file://..."). If no value is provided "text/html" will be set by default. Default: |
|
|
Service | ||||
service_name | text | Name of the UWS Service. | ||
service_description | text | Description of the UWS Service. | ||
Job list | ||||
joblists | text |
Comma separated list of job list. At least one name MUST be provided. Otherwise, the UWS service will have no job list and the job execution will not be possible. |
|
|
Job | ||||
<jlName>.job_thread | text |
Class describing the execution of all jobs managed by the job list specified as prefixed of the property name. This property must be a class name (given between {...}). It must reference an extension of uws.job.JobThread. This implementation must have at least a constructor with one parameter of type uws.job.UWSJob. |
{aPackage.MySuperJob} | |
<jlName>.job_parameters | text |
List of all expected parameters. The value of this property is expected to be a comma separated list of parameters. At least a name without any space character is expected. Limits about each parameter MAY be provided. Below are described all types of parameter definition that are supported in this property file:
It is not mandatory to declare all expected parameters in this list. Even non listed parameters will appear
in the job description. However any parameter name provided in this list will be recognized case insensitively among the parameters of a job.
For instance, if the list contains the parameter
All attributes except the name and the type (or the class name) are optional. They can be omitted which implies they will be set to their default value ;
generally
modif? is a boolean flag aiming to indicate whether the value of the parameter can be modified after initialization of the job.
Any value (case insensitive) among the following list is interpreted as
The regular expression must be enclosed by
The default, minimum and maximum values of numeric and duration parameters must be valid numeric values. For a numeric, any kind of
numerical value is accepted. For a duration, only positive or zero long/integer values are accepted. If one of these values is omitted it
will be considered as
A duration value (default, minimum, maximum and even a user value provided when submitting/updating a job) must be a positive or zero long/integer value
eventually followed by a unit. Without a unit, by default the duration will be considered as being expressed in milliseconds. The supported
unit suffixes are the following (case sensitive): |
|
|
Execution management | ||||
<jlName>.default_execution_duration | integer/text |
Default execution duration of the jobs of the specified job list. The prefix "default" means here that the execution duration will be this one if the client does not set one. The default duration MUST be less or equals to the maximum execution duration. If this rule is not respected, the default execution duration is set immediately to the maximum execution duration. A negative or null value means there is no restriction on the default execution duration: the execution could never end. Float values are not allowed. This duration is expressed by default in milliseconds, but a different unit can be specified. This unit must suffix the value. Allowed units are the following
(case sensitive!!): Default: |
|
|
<jlName>.max_execution_duration | integer/text |
Maximum execution duration of the jobs of the specified job list. The prefix "max" means here that the client can not set a time greater than this one. The maximum duration MUST be greater or equals to the default execution duration. If this rule is not respected, the default execution duration is set immediately to the maximum execution duration. A negative or null value means there is no restriction on the maximum execution duration: the execution could never end. Float values are not allowed. This duration is expressed by default in milliseconds, but a different unit can be specified. This unit must suffix the value. Allowed units are the following
(case sensitive!!): Default: |
|
|
<jlName>.max_running_jobs | integer |
Maximum number of jobs that can run in parallel inside the specified job list.
If negative or Default: ΓΈ (no execution queue) |
|
|
<jlName>.execution_manager | text |
Class responsible of the execution of all jobs inside the specified job list. Each time a UWS user asks to start a job, the library will ask to the ExecutionManager of the parent job list in order to know if the execution must start now or later. This property must be a class name (given between {...}). It must reference an implementation of uws.job.manager.ExecutionManager. This implementation must have at least a constructor with one parameter of type uws.service.log.UWSLog. It is recommended to extend an existing implementation such as: uws.job.manager.DefaultExecutionManager, uws.job.manager.AbstractQueuedExecutionManager, uws.job.manager.QueuedExecutionManager. By default, uws.job.manager.DefaultExecutionManager is used IF no |
{aPackage.MyExecutionManager} | |
Destruction management | ||||
<jlName>.default_destruction_interval | integer/text |
Default interval between the creation and the automatic destruction of the jobs of the specified job list. The prefix "default" means here that the destruction date will be set automatically by the UWS service if the client does not set one. The default destruction interval MUST be less or equals to the maximum execution duration. If this rule is not respected, a given destruction interval will be set immediately to the maximum execution interval. A negative or null value means there is no restriction on the default destruction interval: the job could never be destroyed. Float values are not allowed. This interval is expressed by default in milliseconds, but a different unit can be specified. This unit must suffix the value. Allowed units are the following
(case sensitive!!): Default: |
|
|
<jlName>.max_destruction_interval | integer/text |
Maximum interval between the creation and the automatic destruction of the jobs of the specified job list. The prefix "max" means here that the client can not set an interval bigger than this one. The maximum destruction interval MUST be bigger or equals to the default destruction interval. If this rule is not respected, a given destruction interval will be set immediately to the maximum destruction interval. A negative or null value means there is no restriction on the maximum destruction interval: the job could never be destroyed. Float values are not allowed. This interval is expressed by default in milliseconds, but a different unit can be specified. This unit must suffix the value. Allowed units are the following
(case sensitive!!): Default: |
|
|
<jlName>.destruction_manager | text |
Class responsible of the destruction of jobs owned by the specified job list. At each job creation, or each time the destruction time of a job is changed, the DestructionManager of its job list is notified, in order to schedule its automatic destruction when the destruction time is reached. This manager does NOT perform the destruction ; it is just responsible to trigger the automatic job destruction. This property must be a class name (given between {...}). It must reference an implementation of uws.job.manager.DestructionManager. This implementation must have at least an empty constructor. It is recommended to extend an existing implementation such as: uws.job.manager.DefaultDestructionManager. By default, uws.job.manager.DefaultDestructionManager is used. |
{aPackage.MyDestructionManager} | |
Files | ||||
file_manager | text |
Type of the file manager. Accepted values are: local (to manage files on the local system). You can also add another way to manage files by providing the name (within brackets: {...}) of a class implementing UWSFileManager and having at least one constructor with only a java.util.Properties parameter. |
|
|
file_root_path | text |
Local file path of the directory in which all UWS files (logs, errors, job results, backup, ...) must be. The file path must be either an absolute local directory path or a directory path relative to WebContent (i.e. the web application directory in which there are WEB-INF and META-INF). |
|
|
directory_per_user | boolean |
Tells whether a directory should be created for each user. If yes, the user directory will be named with the user ID. In this directory, there will be error files, job results and it may be the backup file of the user. Default: |
|
|
group_user_directories | boolean |
Tells whether user directories must be grouped. If yes, directories are grouped by the first letter found in the user ID. Default: |
|
|
Log files | ||||
logger | text |
Only two possibilities are already implemented.
Default: |
|
|
min_log_level | text |
Minimum level that a message must have in order to be logged by the default logger. 5 possible values:
Note:
This property is ignored if
Default: |
|
|
log_rotation | text |
Frequency of the log file rotation performed by the default logger. That's to say, logs will be written in a new file after this period. This avoid having too big log files. Old log files are renamed so that highlighting its logging period. The frequency string must respect the following syntax:
Where: hh = integer between 0 and 23, mm = integer between 0 and 59, dd (for 'W') = integer between 1 and 7 (1:sunday, 2:monday, ..., 7:saturday), dd (for 'M') = integer between 1 and 31. Warning: The frequency type is case sensitive! Then you should particularly pay attention at the case when using the frequency types 'M' (monthly) and 'm' (every minute). Note:
This property is ignored if
Default: |
|
|
UWS Backup | ||||
backup_frequency | text or integer |
Frequency at which the UWS service (that's to say, all its users and jobs) must be backuped. Allowed values are: The value Default: |
|
|
backup_by_user | text |
Tells whether the backup must be one file for every user ( This option can be enabled ONLY IF a user identification method is provided ; see property Default: |
|
|
User identification | ||||
user_identifier | text |
Class to use in order to identify a user of the UWS service. The same instance of this class will be used for every request sent to the service. The value of this property MUST be a class name (with brackets: {...}) of a class implementing the interface uws.service.UserIdentifier. This class MUST have one of its constructors with no parameter. By default, no identification is performed ; all users are then anonymous and their jobs can be seen by everybody. |
{apackage.FooUserIdentifier} | |
Job serialization | ||||
additional_serializers | text |
Comma-separated list of additional UWS serializers. A UWS serializer lets convert a job description into a specific format. A given serializer is used when the HTTP content-type of a request is set to the MIME-Type of this serializer. The MIME-Type associated with a serializer is provided by its function getMimeType().
By default, the UWS library supports the XML (content-type: By default, this list is empty ; only the default serializers (XML and JSON) are available. |
|
|
xslt_stylesheet | text |
URL of the XSLT stylesheet to link with all XML serializations of jobs (and its parameters). By default, no XSLT stylesheet is defined. |
|
|
error_writer | text |
Class responsible of writing the error messages when an HTTP request fails. By default, all errors are returned in HTTP format using the class uws.service.error.DefaultUWSErrorWriter. |
{aPackage.MySuperErrorWriter} | |
Additional UWS Actions | ||||
additional_actions | text |
Comma-separated list of additional UWS actions.
By default, the following standard UWS actions are already existing (with exactly this name):
To merely add a new action, the syntax is:
The To replace an existing action, no index should be specified (if there is, it will be ignored) and the implementation of the function UWSAction.getName() MUST return the exact (case sensitivity is enabled) name of the action to replace. Important note: An action name is used only to identify internally a UWS action. To effectively trigger the execution of an action you must carefully implement the function UWSAction.match(...). The whole list of actions (standard and custom) is evaluated in the creation order. So if a standard action matches a request, the additional actions will never be evaluated ; the evaluation of the standard actions must all fail before getting a chance to evaluate any of the custom actions. That's why you have the possibility to insert an action wherever you want in the list, and to replace existing actions. Each item of the list MUST be the name of a class implementing uws.service.actions.UWSAction. This class MUST have at least one constructor with exactly one parameter of type uws.service.UWSService. By default, this list is empty ; only the standard UWS actions exist. |
|
|
HTTP request parser | ||||
request_parser | text |
Class to use in replacement of the default UWSRequestParser. A request parser aims to interpret all incoming HTTP requests. You may need to customize it if, for instance, you want to handle a special way to provide parameters (note that 'multipart/form-data' is already supported by the default implementation of the UWS library). This property must be a class name (given between {...}). It must reference an implementation of uws.service.request.RequestParser. This implementation must have at least a constructor with a single parameter of type uws.service.file.UWSFileManager. It is recommended to extend an existing implementation such as: uws.service.request.UWSRequestParser. By default, uws.service.request.UWSRequest is used |
{aPackage.MyRequestParser} | |
Custom UWS Factory | ||||
uws_factory | text |
Class to use in replacement of the default UWSFactory. This property must be a class name (given between {...}). It must reference an implementation of UWSFactory. This implementation must have at least an empty constructor. It is recommended to extend an existing implementation such as: uws.service.AbstractUWSFactory. Warning! By default, the default UWSFactory (uws.config.ConfigurableUWSFactory) is used and support all the following properties:
Replacing the default UWSFactory by your own implementation implies that you will have to deal with all these properties by yourself. |
{aPackage.MyUWSFactory} |