Creating a Connection
Transports
The Connection
Class uses ODBC
, SSH
, idb
, and REST
transports to access XMLSERVICE
.
Some transports require prerequisite setup. Learn morre about each transport below.
ODBC
The ODBC transport establishes a database connection and calls XMLSERVICE stored procedure. Refer to the odbc guide for setup instructions.
SSH
The SSH transport executes xmlservice-cli
program via ssh.
Install xmlservice-cli
before using the SSH
transport.
$ yum install itoolkit-utils
idb
The idb transport establishes a database connection and calls the XMLSERVICE stored procedure.
NOTE the idb transport is only supported on an IBM i system.
REST
The REST transport makes an HTTP request to an endpoint that process the XML input and returns XML output.
Initial configuration is required for the endpoint.
A quick example is to add the following to /www/apachedft/conf/httpd.conf
.
ScriptAlias /cgi-bin/ /QSYS.LIB/XMLSERVICE.LIB/
<Directory /QSYS.LIB/XMLSERVICE.LIB/>
AllowOverride None
Require all granted
SetHandler cgi-script
Options +ExecCGI
</Directory>
Connection API
- class Connection(options)
Creates a new Connection object.
- Arguments
options (connectionConfig) –
- Throws
Will throw an error when the first parameter is not an object.
- Throws
Will throw an error when an invalid transport is set.
- Connection.add(xml)
Adds xml to the command list. When an instance of
CommandCall
,ProgramCall
, oriSql
is passed.toXML()
is invoked to return the underlying xml.- Arguments
xml (string|object) – The xml to add to the command list.
- Connection.debug(flag)
Enables or disables the verbose output for debugging.
- Arguments
flag (boolean) – Whether to enable verbose output.
- Returns
boolean – The current state of the debug flag.
- Connection.getTransportOptions()
- Returns
object – The
transportOptions
property from theConnection
object.
- Connection.run(callback)
Invokes transport with xml generated from joining the command list. Note the command list is cleared after calling this function. Once the transport is complete the user provided callback function is called. Note If
returnError
isfalse
the first callback paramter will be the xml output. This is a compatabilty feature with the deprecatediConn
Class which did not return errors.- Arguments
callback (runCallback) – the callback function.
- connectionConfig()
Connection Config Object
- Arguments
transport (string) – The transport to use.
transportOptions (odbcOptions|sshOptions|idbOptions|restOptions) – The transport options.
verbose (boolean) – The flag for verbose output.
returnError (boolean) – The flag to disable error first callback for Connection.run().
- odbcOptions()
ODBC Transport Options Object
- Arguments
dsn (string) – The dsn to use.
host (string) – The hostname of the server. Default is
localhost
.username (string) – The user to connect as.
password (string) – The user’s password.
ipc (string) – The key name/security route to XMLSERVICE job. Default is
*NA
.ctl (string) – The control options for XMLSERVICE jobs. Default is
*here
.xslib (string) – The XMLSERVICE library. Default is
QXMLSERV
.
- sshOptions()
SSH Transport Options Object
- Arguments
host (string) – The hostname of the server.
username (string) – The user to connect as.
password (string) – The user’s password.
privateKey (string) – The user’s privateKey.
passphrase (string) – The user’s passphrase to decrypt the private key.
- idbOptions()
idb Transport Options Object
- Arguments
database (string) – The database to connect to. Default is
*LOCAL
.username (string) – The user to connect as.
password (string) – The user’s password.
ipc (string) – The key name/security route to XMLSERVICE job. Default is
*NA
.ctl (string) – The control options for XMLSERVICE jobs. Default is
*here
.xslib (string) – The XMLSERVICE library. Default is
QXMLSERV
.
- restOptions()
REST Transport Options Object
- Arguments
database (string) – The database to connect to. Default is
*LOCAL
.username (string) – The user to connect as.
password (string) – The user’s password.
ipc (string) – The key name/security route to XMLSERVICE job. Default is
*NA
.ctl (string) – The control options for XMLSERVICE jobs. Default is
*here
.url (string) – The url to the xmlcgi endpoint. E.g.
http://localhost:80/cgi-bin/xmlcgi.pgm
- runCallback(transportError, xmlOutput)
- Arguments
transportError (Error|null) – The error object if a transport error occured or null.
xmlOutput (string|null) – The xml output or null if an error occured.
Examples
Creating a Connection
using the ODBC
tranport.
const connection = new Connection({
transport: 'odbc',
transportOptions: { host: 'myhost', username: 'myuser', password: 'mypassword'}
});
Creating a Connection
using the ODBC
tranport with a DSN
.
const connection = new Connection({
transport: 'odbc',
transportOptions: { dsn: '*LOCAL'}
});
Creating a Connection
with ssh
tranport using private key to authenticate.
const connection = new Connection({
transport: 'ssh',
transportOptions: { host: 'myhost', username: 'myuser', password: 'mypassword' }
});
Creating a Connection
using the ssh
tranport with a private key to authenticate.
const { readFileSync } = require('fs');
const privateKey = readFileSync('path/to/privateKey', 'utf-8');
// NOTE if your privateKey also requires a passphrase provide it
const connection = new Connection({
transport: 'ssh',
transportOptions: { host: 'myhost', username: 'myuser', privateKey, passphrase: 'myphrase' }
});
Creating a Connection
using the idb
tranport.
const connection = new Connection({
transport: 'idb',
transportOptions: { database: '*LOCAL', username: 'myuser', password: 'mypass' }
});
Creating a Connection
using the REST
tranport.
const connection = new Connection({
transport: 'rest',
transportOptions: {
database: '*LOCAL',
username: 'myuser',
password: 'mypass',
url: 'http://myhost.example.com/cgi-bin/xmlcgi.pgm',
}
});