This topic describes the XML syntax of StreamBase deployment files.
The root element of a deployment file is <deploy>
,
which contains all XML elements that describe a runnable StreamBase deployment. The
<deploy>
element supports one instance of the
<runtime>
element.
The syntax of the <runtime>
element of deployment
files is comparable to, but not identical to, the deprecated <runtime>
element of server configuration files. See Server Configuration File Overview for a
discussion of the differences between old and new <runtime>
elements.
Edit deployment files in Studio with the Deployment File Editor, which provides typechecking of your deployment file as you compose it, as well as color coding, autocompletion, and context-aware tag proposal of valid elements and attributes.
The root element of deployment files is <deploy>
,
which has one first-level child element:
<runtime> |
This first-level element in turn has the following child elements:
<application> |
<container-connection> |
Use this element to specify one or more containers (one per application) that will be
hosted by StreamBase Server. You can have one or more <application>
child elements. The <runtime>
element has the following child elements:
-
Zero, one, or more <application> elements
-
Zero, one, or more <container-connection> elements
The following synthetic example shows all deployment file elements used at least once. In practice, it is unlikely that you will need to specify all elements for the same deployment case.
<?xml version="1.0" encoding="UTF-8"?> <deploy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.streambase.com/schemas/sbdeploy/"> <runtime> <application container="default" module="app1.sbapp"/> <application container="holder2" module="app2.sbapp"> <extension-point-contents> <extension-point target-id="extpt.id"> <extension name="caseA" module="submoduleA.sbapp"/> <extension name="caseB" module="submoduleB.sbapp"> <module-parameters> <param name="myVar" value="myValue" enciphered="false"/> </module-parameters> </extension> </extension-point> </extension-point-contents> <module-parameters> <param name="varname" value="varvalue" enciphered="false"/> </module-parameters> <trace traceFileBase="tracebase" traceCompress="true"/> </application> <container-connections> <container-connection dest="holder2.input1" source="default.output3" where="tradeID % 2 == 0"/> </container-connections> </runtime> </deploy>
Use this element to specify an application module to load into a named container.
The application file can be an EventFlow or StreamSQL module, or a precompiled
application (.sbar
) file. The element has the
following attributes:
Attribute | Required | Description |
---|---|---|
module | Yes |
The name of an EventFlow, StreamSQL, or precompiled application file, which must exist in the current Studio project's module search path. You can use Ctrl+Space in the Deployment File Editor to pop up a list of the available modules in the module search path.
If you selected a module name before starting the New Deployment File
wizard, then the |
container | Yes |
The name you assign to the container to hold the specified application. For
running or debugging in Studio, the top-level module must be in a container
named default .
|
enqueue | No | One of ENABLED, DISABLED, or DROP_TUPLES to specify the startup state of enqueuing for this container. ENABLED is the default setting. If you specify DISABLED, then enqueue attempts are actively refused and exceptions are thrown. If you specify DROP_TUPLES, then tuples are silently dropped. |
dequeue | No | One of ENABLED, DISABLED, or DROP_TUPLES, as described above. |
suspend | No |
Use suspend=true to specify that the
application in this container should start up suspended. Specify
false , the default, to have the application
start running when the container is added. When starting the server with
sbd --suspend, you can use
this suspend="false" attribute to override the
suspension. You can start or restart a suspended container with the
sbadmin resume command.
|
datadir | No |
Specify the absolute path (or a path relative to the running location of
the sbd server) to a
directory to contain the files that implement all disk-based Query Tables
for this container. If unspecified, the container uses the --datadir location if specified on the sbd command line, or the default
temporary location if not.
|
<application>
has the following child elements:
-
Zero or more of: <extension-point-contents>
-
Zero or more of: <module-parameters>
-
Zero or more of: <trace>
This element can be a sub-element of both <application>
and <extension>
. Use it to specify the value of one or more
parameters to be passed to the top-level application module in the current
container. There are several ways in StreamBase to pass parameters to modules,
but using this element in a deployment file or server configuration file is the
only method that allows parameter values to be enciphered. See Using Module Parameters for
details of passing module parameter values.
<module-parameters>
supports one or more of
the <parameter>
child element.
Use this element to specify the name and value of a parameter to be passed to
the top-level module in the specified container. You can specify <param>
as an alias for <parameter>
.
Attribute | Required | Description |
---|---|---|
name | yes |
Parameter label that can be used in an expression. |
enciphered | no |
Set to "true" to specify that the contents
of the current value attribute were
enciphered with the sbcipher command. This allows you
to specify private values such as passwords and user names, yet not
have the values appear as clear text in the configuration file. For
further information, see Enciphering Passwords and Parameter Values.
|
value | yes |
Value to which the parameter is to be resolved. |
See String Values in Parameters for TIBCO' recommended policy on quoting string parameters.
The <extension-point-contents>
element
contains zero or more <extension-point>
child
elements.
Each <extension-point>
has one attribute,
target-id
:
Attribute | Required | Description |
---|---|---|
target-id | yes |
The Extension Point ID for an Extension Point operator in a module
loaded in the container for this application, as specified in the
Extension Point ID field in the Modules tab of the Properties view of
an Extension Point operator whose module instances are defined
externally. The You can use Ctrl+Space in the Deployment File Editor to pop up a list of the available Extension Point IDs in modules in the module search path. |
The target-id
specifies an extension
child element, which must be present in the file.
The <extension-point>
element contains zero
or more <extension>
child elements.
Use the <extension>
element to specify
modules that implement the interface in an Extension Point operator for this
application module. This element has the following attributes:
Attribute | Required | Description |
---|---|---|
name | yes |
The module ID assigned to this module. The module ID is used in your application's logic as a handle to pass to an Extension Point component's input stream for dispatch using the Name dispatch style. |
module | yes | The name of an EventFlow or StreamSQL module in the current module search path. Specify the module name only. You can use Ctrl+Space in the Deployment File Editor to pop up a list of the available modules in the module search path. |
See Using the Extension Point Operator and Using Interfaces with Extension Points for further information.
Each <extension>
may have a <module-parameters>
element that implements the
extension point's interface. The <module-parameters>
element of <extension>
can contain the same kinds of elements as
the <module-parameters>
element of
<application>
does.
Use this element to configure runtime tracing. Remember that these settings do
not enable tracing, they only configure tracing when it is set up and enabled.
Tracing does not occur unless you set up StreamBase Server for it and tracing is
enabled. To set up for tracing, set the system property streambase.codegen.trace-tuples
or environment variable
STREAMBASE_CODEGEN_TRACE_TUPLES
to true, as described
in Runtime Tracing and
Creating Trace Files.
If the setup conditions are met, then tracing is enabled by default when the
application starts. You can disable tracing at runtime with sbadmin modifyContainer
. In
that case, re-enable tracing with containerName
trace falsesbadmin
modifyContainer
. As soon as you stop tracing, all trace files are closed.
containerName
trace
true
The element has the following attributes:
Attribute | Required | Default | Description |
---|---|---|---|
traceStreamPattern | No | none |
Specify a regular expression pattern in the format of java.util.regex.Pattern. The pattern limits tracing to the operators and streams whose name matches the pattern. If not specified, tracing is active for all operators and streams in the application. |
traceFileBase | No | none |
By default, trace output is written to StreamBase Server's console. To
redirect trace output to a file, specify
There is one trace file generated per parallel module. Specify a string
to serve as the
Tracing also creates a second file with extension |
traceOverwrite | No | false |
Either true or false . Set to true to cause
tracing to overwrite all trace files on Server restart. By default, new
trace information is appended to existing trace files for each traced
container.
|
traceCompress | No | false |
Either true or false . Set to true to
specify that the generated trace file is to be compressed with gzip. If
true , the trace file's extension becomes
.sbtrace.gz . Compressed trace files are
readable by Studio's Trace Browser perspective.
|
traceBuffered | No | true |
Either true or false . When set to false ,
the output trace file is flushed on every trace line. This slows down
performance considerably, but makes it easier to use tracing as part of
debugging a live application. When set to true , the default, tracing output is buffered before the
trace file is written, to minimize tracing's drag on performance.
|
Example:
... <application container="default" module="BestBidsAsks.sbapp"> <trace traceStreamPattern="Bids" traceFileBase="trace_" traceOverwrite="true" traceCompress="true" /> </application> ...
Use this element to specify a set of one or more container connections. See Container Connections to understand the types and uses of connections between containers.
The <container-connections>
element (plural)
supports one or more <container-connection>
elements (singular).
See the deployment file example above. You can establish container connections in several other ways, as described in Specifying Container Connections.
Use this element to specify a single connection between containers. The
<container-connection>
element has the
following attributes:
Attribute | Required | Description |
---|---|---|
dest | Yes |
The entity (usually an input stream) in one named container that will consume the output of the connected source container.
For both |
source | Yes | The entity in another named container (usually an output stream) that will send the data to the destination container. |
synchronicity | No | Either "ASYNCHRONOUS" (default) or "SYNCHRONOUS". See Synchronous Container Connections. |
where | No | Specifies a predicate expression filter to limit the tuples that cross to the destination container. The expression to enter must resolve to true or false, and should match against one or more fields in the schema of the connection's stream. |