Version: 17.07
Ultra Project is the basic deployment unit of Project-X runtime. Each Ultra Project is a bundled archive with the
extension .xpr
. An Ultra Project can typically have several
Integration Flows and Subflows within it. Apart from those Integration Flows
and subflows, a project can contain a set of resources defined as Spring beans that are required by its Integration Flows. Some
of frequently used such resource definitions are for Database connection factories, JMS transaction managers, etc.
In addition to those, it is possible to have a set of << environment_and_tags.html#environment-evaluators,Environment
Evaluators>> that decide the status of the Project at an environment state change.
A single Project-X runtime can be used to deploy one or more Ultra Projects. While an Ultra Project relies on the Project-X runtime to provide the framework level dependencies, each Ultra Project is expected to have all the other dependencies required by its connectors, processing elements, features or any other resource to be contained within the archive. This "self-contained design" allows multiple projects with different dependency versions to be deployed in the same Project-X runtime without conflicting with each other.
Although this "self-contained design" is expected to eliminate most of the conflicts between Projects, it does not guarantee that any two projects can be deployed together seamlessly. It is still possible for the inter-project conflicts to arise due to the situations such as accessing of the same set of operating system level resources such as network ports. |
The file hierarchy of a typical Ultra Project archive looks as below.
─ sample-project-1.0
├── META-INF
│ ├── MANIFEST.MF
│ ├── maven
│ │ └── org.adroitlogic.x.sample
│ │ └── sample-project
│ │ ├── pom.properties
│ │ └── pom.xml
│ └── project-info.json
├── classes
│ └── org
│ └── adroitlogic
│ └── x
│ └── sample
│ └── processor
│ └── ResponseModifier.class
├── conf
│ └── sample
│ └── http
│ ├── cbr-proxy.xcml
│ ├── direct-proxy.xcml
│ ├── transport-header-proxy.xcml
│ └── xslt-proxy.xcml
├── lib
│ ├── commons-codec-1.6.jar
│ ├── commons-csv-1.4.jar
│ ├── commons-lang3-3.4.jar
│ ├── commons-pool2-2.4.2.jar
│ ├── httpclient-4.2.6.jar
│ ├── httpcore-4.4.jar
│ ├── httpcore-nio-4.4.jar
│ ├── jackson-core-2.8.1.jar
│ ├── x-connector-nio-http-17.01.jar
│ ├── x-feature-file-store-17.01.jar
│ ├── x-feature-xml-17.01.jar
│ ├── x-processor-regular-extractor-17.01.jar
│ ├── x-processor-regular-flow-control-17.01.jar
│ ├── x-processor-regular-header-management-17.01.jar
│ ├── x-processor-regular-logger-17.01.jar
│ ├── x-processor-regular-transform-17.01.jar
│ ├── x-processor-regular-validate-17.01.jar
│ └── x-transport-nio-http-17.01.jar
├── project.xpml
├── resources
│ └── default.properties
└── src
└── org
└── adroitlogic
└── x
└── sample
└── processor
└── ResponseModifier.java