deploy project

Deployment of an Ultra Project

Version: 17.07

Deploying the Project Archive

Run the maven build for the project using the Ultra Studio and retrieve the resulting archive with the extension .xpr from the target directory of the project. The name of the archive will be of the format sample-1.0.xpr where sample being the name of the project and 1.0 being the version of the project. Copy this archive file from the development machine to the projects directory of the UltraESB-X distribution.

Version Compatibility

To avoid compatibility issues between the Projects and UltraESB-X Runtime, only the Projects with the same or a lower framework version than the framework version of the UltraESB-X runtime are allowed to be deployed.

Managing Custom Dependencies

When a Project is built, all the maven dependencies such as the connectors and processing elements used in that Project will be automatically bundled inside the lib directory of the project archive. But if there are any custom jar files are been used for the project (such as any javax. jars), they should be manually copied to the lib/custom directory of the UltraESB-X distribution.

Managing Custom Properties

Managing Feature Properties

When a Project is being initialized, Project-X framework creates a new instance of each Feature used in that Project and any connector or processing element inside the same project shares these instances.

Almost each one of these Features has customizable properties and they can be externalized if required. At the initialization of the feature, the framework looks for a pre-defined set of file locations for these externalized property values. The framework starts from the lowest priority location and gradually proceeds to the highest priority location, merging the properties in all the matching property files it finds on the way. If a value for the same property key is found in multiple property files, the value at the highest priority location will be given precedence.

The locations that can be used to externalize feature properties are listed below from the lowest priority location to the highest priority location.

File path terminology
  • $conf : main configuration directory of UltraESB-X (e.g.: ue-x/conf/)

  • $name : name of the feature (e.g.: xml)

  • $mode : environment mode in which these property values should be used (e.g.: PRODUCTION)

  • $projectID : ID of the project (e.g.: sample)

  • $projectVersion : version of the project (e.g.: 1.0)

Priority File path

1

$name.properties file in the classpath

e.g. : xml.properties

2

$mode/$name.properties file in the classpath

e.g. : PRODUCTION/xml.properties

3

If environment mode is IDE, src/main/resources/$name.properties file relative to project dir

e.g. : src/main/resources/xml.properties

4

$conf/feature.$name.properties

e.g. : ue-x/conf/feature.xml.properties

5

$conf/$mode/feature.$name.properties

e.g. : ue-x/conf/PRODUCTION/feature.xml.properties

6

$conf/projects/$projectID/feature.$name.properties

e.g. : ue-x/conf/projects/sample/feature.xml.properties

7

$conf/projects/$projectID/$mode/feature.$name.properties

e.g. : ue-x/conf/projects/sample/PRODUCTION/feature.xml.properties

8

$conf/projects/$projectID/$projectVersion/feature.$name.properties

e.g. : ue-x/conf/projects/sample/1.0/feature.xml.properties

9

$conf/projects/$projectID/$projectVersion/$mode/feature.$name.properties

e.g. : ue-x/conf/projects/sample/1.0/PRODUCTION/feature.xml.properties

Managing Project Properties

Similar to the Feature properties, any Spring property of the project (including connector and processing element parameters) also can be externalized. When a Project archive is built, the build tool automatically externalizes the parameters of each connector and processing element to a file named default.properties and includes it in the resources directory of the project archive.

When a project is initialized, the framework starts from this file (which has the lowest priority) and gradually proceeds to the highest priority location, merging the properties in all the matching property files it finds on the way. Similar to Feature properties, if a value for the same property key is found in multiple property files, the value at the highest priority location will be given precedence.

The locations that can be used to specify project properties are listed below from the lowest priority location to the highest priority location.

File path terminology
  • $conf : main configuration directory of UltraESB-X (e.g.: ue-x/conf/)

  • $name : can be any name for the property file (e.g.: foo)

  • $mode : environment mode in which these property values should be used (e.g.: PRODUCTION)

  • $projectID : ID of the project (e.g.: sample)

  • $projectVersion : version of the project (e.g.: 1.0)

Priority File path

1

default.properties file in the classpath

2

If environment mode is IDE, src/main/resources/default.properties file relative to project dir

3

$conf/$name.properties

e.g. : ue-x/conf/foo.properties

4

$conf/$mode/$name.properties

e.g. : ue-x/conf/PRODUCTION/foo.properties

5

$conf/projects/$projectID/$name.properties

e.g. : ue-x/conf/projects/sample/foo.properties

6

$conf/projects/$projectID/$mode/$name.properties

e.g. : ue-x/conf/projects/sample/PRODUCTION/foo.properties

7

$conf/projects/$projectID/$projectVersion/$name.properties

e.g. : ue-x/conf/projects/sample/1.0/foo.properties

8

$conf/projects/$projectID/$projectVersion/$mode/$name.properties

e.g. : ue-x/conf/projects/sample/1.0/PRODUCTION/foo.properties

Encrypted Properties

Project-X provides the facility to have encrypted property values in external configuration files. This feature is provided to prevent any security vulnerabilities arising due to sensitive information such as password values being specified in plain text.

To use encrypted properties in UltraESB-X, the following properties should be set either as System Properties or Environment Variables for the user running UltraESB-X.

X_ADRT_ENC_PWD

The master password to be used for encryption

X_ADRT_ENC_ALG

The encryption algorithm to be used. Defaults to PBEWithMD5AndDES if not set.

X_ADRT_SEC_PVD

The security provider class name. Defaults to org.bouncycastle.jce.provider.BouncyCastleProvider if not set.

Encrypting Properties

Property values can be encrypted either using the Ultra Studio or the UXTerm command line utility.

Using Ultra Studio

Navigate to ToolsUltra StudioPassword Encryptor in Ultra Studio.

ultrastudio encryptor menu

Then fill the Secret (this is the value to be encrypted), Encryption Algorithm, Encryption Password and Security Provider values and click OK. Then the encrypted value will appear on the bottom text area.

ultrastudio encryptor dialog
Using UXTerm

Run UXTerm by navigating into the ULTRA_HOME/bin/ directory and executing the script uxterm.sh.

$ sh uxterm.sh

Welcome to UXTerm, the UltraESB-X Management CLI (interactive mode)
Type 'help' for the list of commands

uxterm>

Then run the enc command as follows to encrypt the provided value.

uxterm> enc -a PBEWithMD5AndDES
            -d org.bouncycastle.jce.provider.BouncyCastleProvider
            -p masterPassword
            -s secretProperty

Following are the options that can be used with this command.

-a, --algorithm

The encryption algorithm to be used, which will be resolved from the system property or environment variable with name X_ADRT_ENC_ALG or defaults to PBEWithMD5AndDES if not specified.

-d, --provider

The security provider class to be used for the encryption, which will be resolved from the system property or environment variable named X_ADRT_SEC_PVD or defaults to org.bouncycastle.jce.provider.BouncyCastleProvider if bouncy-castle is available.

-p, --password

The encryption password to be used, which will be resolved from the system property or environment variable with name X_ADRT_ENC_PWD if not specified.

-s, --secrete

The secrete value to be encrypted.

When the command is executed with the necessary options, it will output the encrypted value to the console.

Using Encrypted Properties

To indicate an property value as encrypted, it should be enclosed within ENC() in the relevant configuration file as follows.

datasource.password=ENC(pn53VNrPwCe5UeIjd0c/7Awt9ypCirOQ)

Applying Patches for a Project

Project-X framework provides the facility to apply patches not only for the framework level dependencies, but also for the Project level dependencies as well. If it is required to patch one or more jar file of a project archive, it can be done by following the below steps without even altering the existing project archive.

  • Navigate to lib/patches/projects/ directory of the UltraESB-X installation

  • Create a directory with the name format projectId-projectVersion (e.g.: lib/patches/projects/sample-1.0/)

  • Copy any patch jar files to the above created directory

  • Restart UltraESB-X

In this topic
In this topic
Contact Us