The EntireX RPC Server for C allows standard RPC clients to communicate with servers written in C. It works together with the C Wrapper and calls standard libraries (Windows DLLs or Linux shared objects/libraries).
This document describes how to administer the RPC Server for C with local scripts as in earlier versions of EntireX. It covers the following topics:
See also Administering the RPC Server for C with the Command Central GUI | Command Line.
The following elements are used for setting up the RPC Server for C:
The name of the delivered example configuration file is cserver
provided in the config folder.
The configuration file contains the configuration for the RPC Server for C.
The following settings are important:
connection information such as broker ID, server address (class, name, service)
scalability parameters
trace settings
etc.
For more information see Configuring the RPC Server.
The start script for the RPC Server for C is called cserver.bsh (Linux) or cserver.bat (Windows) and is provided in the bin folder of the installation directory. You may customize this file. The start script contains the following:
paths to the called C server
the configuration file used; see Configuration File
etc.
The following rules apply:
In the configuration file:
Comments must be on a separate line.
Comment lines can begin with '*', '/' and ';'.
Empty lines are ignored.
Headings in square brackets [<topic>] are ignored.
Keywords are case-insensitive.
Underscored letters in a parameter indicate the minimum number of letters that can be used for an abbreviated command.
For example, in brokerid=localhost
,
brok
is the minimum number of letters that
can be used as an abbreviation, that is, the commands/parameters broker=localhost
and brok=localhost
are equivalents.
Parameter | Default | Values | Req/ Opt |
||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
brokerid |
localhost |
Broker ID used by the server. See Using the Broker ID in Applications in the RPC Programming documentation.
Example: |
R | ||||||||||||||||||||||||
class |
RPC |
Server class part of the server address used by the
server. The server address must be defined as a service in the broker attribute file (see Service-specific Attributes).
Case-sensitive, up to 32 characters. Corresponds to CLASS attribute of the broker attribute file.
Example: |
R | ||||||||||||||||||||||||
codepage |
The codepage tells the broker the encoding of the data. The application must ensure the encoding of the data matches the codepage. The RPC server itself does not convert your application data. The application's data is shipped and received as given. Often, the codepage must also match the encoding used in the RPC server environment for file and terminal IO, otherwise unpredictable results may occur. Under the Linux operating system:
Under the Windows operating system:
Enable character conversion in the broker by setting the service-specific attribute |
R (Linux) O (Windows) |
|||||||||||||||||||||||||
compresslevel |
N |
Enforce compression when data is transferred between
broker and server. See Data Compression in EntireX Broker.
Example: |
O | ||||||||||||||||||||||||
endworkers |
timeout |
Example: |
O | ||||||||||||||||||||||||
library |
library =PREFIX(D) - PREFIX() |
library = search_logic [-
Example |
O | ||||||||||||||||||||||||
logon |
YES |
Execute broker functions LOGON/LOGOFF in worker
threads. Must match the setting of the broker attribute
AUTOLOGON . Reliable RPC requires logon set to YES . See Reliable RPC.
Example: |
O | ||||||||||||||||||||||||
minworkers |
1 |
Minimum limit of worker threads.
See also Example: |
O | ||||||||||||||||||||||||
maxworkers |
10 |
Upper limit of all tasks concurrently. Do not set a value higher than 256. See also Example: |
O | ||||||||||||||||||||||||
password |
no default | The password for secured access to the broker. If possible (write access) the password is encrypted and written to parameter
password.e .
The parameter password is removed.
To change the password, add the parameter password with the new password as value.
Example: |
O | ||||||||||||||||||||||||
restartcycles |
15 | Number of restart attempts if the broker is not available.
This can be used to keep the RPC Server for C running while the broker is down for a short time.
A restart cycle will be repeated every 60 seconds.
Note: When the number of specified cycles is reached and a connection to the broker is not possible, the RPC Server for C stops. Example: The server waits up to 30 minutes (30*6*10 seconds) before it terminates due to a missing broker connection. |
O | ||||||||||||||||||||||||
servername |
SRV1 |
Server name part of the server address used by the server.
The server address must be defined as a service in the broker attribute file.
See Service-specific Attributes.
Case-sensitive, up to 32 characters.
Corresponds to SERVER of the broker attribute file.
Example: |
R | ||||||||||||||||||||||||
service |
CALLNAT |
Service part of the server address used by the server.
The server address must be defined as a service in the broker attribute file.
See Service-specific Attributes.
Case-sensitive, up to 32 characters.
Corresponds to SERVICE attribute of the broker attribute file.
Example: |
R | ||||||||||||||||||||||||
ssl_file |
no default | Set the SSL parameters. See Using SSL/TLS with the RPC Server for examples and more information. | O | ||||||||||||||||||||||||
timeout |
60 | Timeout in seconds,
used by the server to wait for broker requests. See WAIT under Broker ACI Fields for more information.
Also influences restartcycles and worker model DYNAMIC .
Example: |
O | ||||||||||||||||||||||||
tracedestination |
ERXTrace.nnn.log |
The name of the destination file for trace output. By default the main trace file name is
If the default is not used and a
See also Activating Tracing for the RPC Server. Example: |
O | ||||||||||||||||||||||||
tracelevel |
None |
Trace level for the server. See also Activating Tracing for the RPC Server.
Example: |
O | ||||||||||||||||||||||||
traceoption |
None |
Additional trace option if trace is active. See also Activating Tracing for the RPC Server.
Example: |
O | ||||||||||||||||||||||||
userid |
ERX-SRV |
The user ID for access to the broker. The default ERX-SRV will be used if this parameter is omitted or specified without a value: "userid= ".
Example: |
O |
The IDL library and IDL program names that come from the RPC client are used to locate the server interface objects and your
customer-written C servers.
See library-definition
and program-definition
.
This two-level concept (library and program) has to be mapped to the RPC Server for C environment.
The called C servers and server interface objects are implemented as libraries (shared objects/libraries under Linux; DLLs
under Windows).
Those libraries also have a two-level concept: file name and entry point name.
See also Server Interface Objects and C Server in the Introduction.
As an example, assume the RPC client sends the IDL library name "EXAMPLE" and IDL program "CALC":
Server interface object
For the file name(2), the character "D" is used as a prefix to the IDL library name sent from the RPC client.
The resulting name is "DEXAMPLE". For the entry point name(3), the character "D" is used as a prefix to the IDL program name send from the RPC client.
The resulting name is "DCALC".
Under Linux: A shared library/object with file name(1) DEXAMPLE.so|sl and entry point DCALC must be accessible through the standard Linux shared library load mechanism.
Under Windows: A DLL named DEXAMPLE.DLL and entry point DCALC must be accessible through the standard Windows DLL load mechanism.
C Server file (written by customer)
For the file name(2), the IDL library name sent from the RPC client is used directly.
The resulting name is "EXAMPLE". For the entry point (written by customer) name(4), the IDL program name sent from the RPC client is used directly.
The resulting name is "CALC".
Under Linux: A shared library/object with file name(1) EXAMPLE.so|sl and entry point CALC must be accessible through the standard Linux shared library load mechanism.
Under Windows: A DLL named EXAMPLE.DLL and entry point CALC must be accessible through the standard Windows DLL load mechanism.
Notes:
library
parameter. The description here assumes default settings with PREFIX(D) - PREFIX()
. These match the standard names produced by the C Wrapper.
library
parameter.
RPC servers can use Secure Sockets Layer/Transport Layer Security (SSL/TLS) as the transport medium. The term "SSL" in this section refers to both SSL and TLS. RPC-based servers are always SSL clients. The SSL server can be either the EntireX Broker, Broker SSL Agent, or Direct RPC in webMethods Integration Server (IS inbound). For an introduction see SSL/TLS, HTTP(S), and Certificates with EntireX in the platform-independent Administration documentation.
To use SSL
To operate with SSL, certificates need to be provided and maintained. Depending on the platform, Software AG provides sample certificates, but we strongly recommend that you create your own. See SSL/TLS Sample Certificates Delivered with EntireX in the EntireX Security documentation.
Specify the Broker ID, using one of the following styles:
URL Style, for example:
ssl://localhost:2010
Transport-method Style, for example:
ETB024:1609:SSL
If no port number is specified, port 1958 is used as default.
Specify SSL parameters, using one of the methods below:
As part of the Broker ID
The simplest way to specify short SSL parameter is to add them to the Broker ID.
Example with URL-style Broker ID:
ssl://localhost:2010?VERIFY_SERVER=N&TRUST_STORE=c:\\certs\\CaCert.pem
Example with transport-method-style Broker ID:
ETB024:1609:SSL?VERIFY_SERVER=N&TRUST_STORE=c:\\certs\\CaCert.pem
In the SSL file
Complex SSL parameters can be specified in a so-called SSL file, a text file containing the parameters.
Define the SSL file with the SSL parameters, for example file mySSLParms.txt with the following contents:
VERIFY_SERVER=N TRUST_STORE=c:\\certs\\CaCert.pem
Define the SSL file in the configuration file of the RPC Server for C. See parameter ssl_file
under Configuring the RPC Server. Example:
brokerid=ssl://localhost:2010 . . ssl_file=C:\mySSLdirectory\mySSLParms.txt
If the SSL client checks the validity of the SSL server only, this is known as one-way SSL. Two SSL parameters must be specified on the SSL client side: trust_store
and trust_passwd
. The mandatory trust_store
parameter specifies the file name of a PKCS#12 certificate store that must contain the certificate chain of the trusted certificate
authority (CA) that issued the SSL server's certificate.
To unlock this certificate store, the password has to be set with SSL parameter trust_passwd
.
By default a check is made that the certificate of the SSL server is issued for the hostname specified in the Broker ID.
The common name of the subject entry in the server's certificate is checked against the hostname. If they do not match, the
connection will be refused.
You can disable this check with SSL parameter verify_server=no
.
If the SSL server additionally checks the identity of the SSL client, this is known as two-way SSL. In this case the SSL server requests a client certificate
(the parameter verify_client=yes
is defined in the configuration of the SSL server).
Two additional SSL parameters must be specified on the SSL client side: key_store
and key_passwd
.
This keystore must contain the private key of the SSL client. The password that protects the private key is specified with
key_passwd
.
The ampersand (&) character cannot appear in the password.
SSL parameters are separated by ampersand (&). See also SSL/TLS Parameters for SSL Clients.
Make sure the SSL server to which the RPC Server for C connects is prepared for SSL connections as well. The SSL server can be EntireX Broker, Broker SSL Agent, or Direct RPC in webMethods Integration Server (IS inbound). See:
Before starting, make sure all your server interface objects and (customer-written) C servers are accessible through the standard Windows DLL or Linux shared library/object load mechanism. See also Locating and Calling the Target Server.
To start the RPC Server for C
Use the Start Script.
Or:
Use the following format:
rpcserver CFG=name
[-option] [brokerid] [class] [servername] [service]
Here are some sample options. See Configuring the RPC Server for full list.
-serverlog |
Defines an alternative log file. Under Windows, this is typically used by Windows Services. See Running an EntireX RPC Server as a Windows Service. |
-s[ilent] |
Run the RPC server in silent mode, that is, no terminal input will be required (for example to acknowledge error messages). The batch scripts will terminate automatically. Under Linux, this is recommended when running in background mode. |
-TraceDestination |
Set the trace destination parameter. |
-TraceLevel None|Standard|Advanced |
Set the trace level parameter. |
Note:
The server input arguments are resolved from left to right. Parameters defined in the configuration file may be overridden
by parameters applied on the command line and vice versa. See Configuring the RPC Server for full list of options.
Or:
Under Windows you can use the RPC Server for C as a Windows Service. See Running an EntireX RPC Server as a Windows Service.
To stop the RPC Server for C
Use the command stopService
. See Stop Running Services in Command Central's Command-line Interface.
Or:
Stop the service using Command Central's Graphical User Interface. See Stopping a Service.
Or:
Use the command-line utility etbcmd
. See etbcmd
under z/OS | Linux | Windows | BS2000.
Or:
Use CTRL-C
in the session where you started the RPC server instance.
Or:
Under Linux, enter command kill -
.
process-id
To ping the RPC Server for C
Enter the following command:
java -classpath "$EXXDIR/classes/entirex.jar" com.softwareag.entirex.rpcping.RPCServerPing -p <admin_port>
where | admin_port |
is the number of the administration port. |
The ping
command returns "0
" if the server is reachable, and "1
" if the server cannot be accessed.
For general information see Running an EntireX RPC Server as a Windows Service in the Windows Administration documentation.
To run the RPC Server for C as a Windows Service
Customize the Start Script according to your system installation.
Note:
The script file must pass external parameters to the RPC server and use the option –silent
:
rpcserver CFG=..\config\cserver.cfg -s %*
See also Starting the RPC Server.
Test your RPC server to see whether it will start if you run your script file.
Use the EntireX RPC Service Tool and install the RPCService
with some meaningful extension, for example MyServer
. If your Start Script is cserver.bat, the command will be
RPCService -install -ext MyServer -script install_path
\EntireX\bin\cserver.bat
The log file will be called RPCservice_MyServer.log.
In Windows Services menu (Control Panel > Administrative Tools > Services) select the service: Software AG EntireX RPC Service [MyServer]
and change the property Startup Type
from "Manual" to "Automatic".
To switch on tracing for the RPC Server for C
Set the parameters
tracelevel
,
traceoption
and
tracedestination
. See Configuring the RPC Server.
Start the RPC Server for C. See Starting the RPC Server.
To evaluate the RPC server return codes, see EntireX RPC Server Return Codes.
To switch off tracing
Set the tracelevel
parameter to None
.