Having problems with your account or logging in?
A lot of changes are happening in the community right now. Some may affect you. READ MORE HERE

stcmdEx - A Stateless Command Line Execution Environment and alternative to stcmd

stcmdEx - A Stateless Command Line Execution Environment and alternative to stcmd

stcmdEx.jar is a stateless, non-interactive command line batch execution engine targeted as a lightweight alternative to stcmd.exe.

stcmdEx.jar is automatically distributed with all 14.0+ SDK installers.

stcmdEx can be directly integrated into existing Microsoft Windows batch files (or Unix shell scripts) using the following syntax:

java.exe -jar stcmdEx.jar command-line-command-with-parameters

e.g., on Windows...
"C:\Program Files\Borland\Java\Oracle1.7.0_17\bin\java.exe" -jar "C:\Program Files\Borland\StarTeam SDK 14.0\lib\stcmdEx.jar" co /p \"Administrator:Administrator@localhost:49201/Project Name/View Name\" /is /rp \"c:\temp\" /filter \"GIMOU\" /o /vb >c:\temp\output.txt

Note: When passing command arguments within Microsoft Windows command prompts or bat files, "
needs to be escaped with a \ so that the " itself gets streamed as part of the argument.

On Microsoft Windows platforms, stcmdEx can be incorporated into its own .bat file if necessary. Add the next two lines to a .bat file (stcmdEx.bat), which may then be called from a driving batch script. use %* to pass all parameters individually quoted as passed to the command batch script itself.

@echo ON

"C:\Program Files\Borland\Java\Oracle1.7.0_17\bin\java.exe" -jar "C:\Program Files\Borland\StarTeam SDK 14.0\lib\stcmdEx.jar" %*

  

  

  

similarly, it may be  embedded in a unix (bash) shell script where you use "$@" to pass all parameters individually quoted as passed to the script itself.

#!/usr/bin/env bash
java -jar /path/to/stcmdEx.jar "$@"

 

Using stcmdEx. you can run the command line engine with no local client server dependency, as long as every command issued through this script uses -p, i.e. is stateless. In addition, you can run command line jobs in parallel, since stcmdEx launches the SDK in process, executes the command, returns the results, then releases the SDK.

This model differs from stcmd, which is a fully stateful engine. stcmd supports the ability to connect to the starteam server, set a project/view/folder(s) context, then execute a series of commands, changes the project/view/folder(s) context, finally disconnect. To provide a stateful context, stcmd is client-server on your local machine. hence stcmd.exe launches an stcmd client in process which opens a socket connection to a running stcmd server on the local machine, which in turn maintains the connection context to the StarTeam server across the network. As a result, a sequence of stcmd commands may be executed which launch and release the stcmd client as they run, leaving the local stcmd server up and running. While this covers all single batch script use cases, it does not support multiple batch scripts possibly running in parallel on the same machine.

 

Since stcmdEx on the other hand launches and runs the SDK in process, multiple parallel invocations of the script will each run in their own process spaces (jre runtime). Besides supporting batch parallelism, this solution has the inherent advantage of fewer moving parts (processes) involved, and is better suited for integration into scripting environments like Ant or Hudson.

 

The stcmdEx.jar file consists of a manifest, a .java file (StatelessClient.java) and a byte compiled .class file (StatelessClient.class). The java implementation is relatively straightforward, simply invoking the SDK's CommandProcessor engine with the specified parameters.

Note also that (unlike stcmd) stcmdEx is guaranteed to return error codes of 0 on success, 1 on failure for all stateless commands, when executed in a batch script.

 

When executed, command line commands consume as much memory as the data that are required to process. The more the data, the more the memory.

If command execution runs out of heap memory, you may increase it subject to availability on your machine.

32 bit platforms cannot exceed 2GBs. 64 bit platforms cannot exceed the physical memory available.

to run an stcmdEx command with memory management, use

java.exe -Xmx{nnnn}m  -jar stcmdEx.jar "command"

where {nnnn} could be 1024, 2048, 4096, 8192 etc

DISCLAIMER:

Some content on Community Tips & Information pages is not officially supported by Micro Focus. Please refer to our Terms of Use for more detail.
Version history
Revision #:
1 of 1
Last update:
‎2016-09-26 17:59
Updated by:
 
The opinions expressed above are the personal opinions of the authors, not of Micro Focus. By using this site, you accept the Terms of Use and Rules of Participation. Certain versions of content ("Material") accessible here may contain branding from Hewlett-Packard Company (now HP Inc.) and Hewlett Packard Enterprise Company. As of September 1, 2017, the Material is now offered by Micro Focus, a separately owned and operated company. Any reference to the HP and Hewlett Packard Enterprise/HPE marks is historical in nature, and the HP and Hewlett Packard Enterprise/HPE marks are the property of their respective owners.