The EntireX RPC Server for Java allows standard RPC clients to communicate with servers written in Java. It works together with the Java Wrapper and calls Java server interface objects.
This document describes how to administer the RPC Server for Java with local scripts as in earlier versions of EntireX. It covers the following topics:
See also Administering the RPC Server for Java with the Command Central GUI | Command Line.
The following elements are used for setting up the RPC Server for Java:
The start script for the RPC Server for Java is called jrpcserver.bsh (UNIX) or jrpcserver.bat (Windows) and is provided in the bin folder of the installation directory. You may customize this file.
You can set the environment variable JAVA_HOME
for the location of the Java interpreter.
Set the classpath to entirex.jar and the path to the Java server interface objects.
The script files that start the RPC Server for Java allow you to pass properties as command-line options as described in the table below. Alternatively, you can use system properties or a property file. The command-line option has the highest priority; the system property has second priority, and the entries of a property file have third priority.
Example:
java -Dentirex.server.properties=rpcserver.properties –Dentirex.license.location=<license.xml with path> -classpath <entirex.jar with path>:<path to your server interface objects> com.softwareag.entirex.aci.RPCServer
The default name of the properties file is
entirex.server.properties
. The file is
searched for in the directory of the Start Script.
It can be changed by
assigning an arbitrary file name with a path to a property with the
name entirex.server.properties
.
A sample properties file is contained in subfolder config of the installation folder.
Property Name | Command-line Option | Default | Explanation | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
entirex.rpcserver.packagename. |
|
|
The RPC Server for Java can handle server programs with package names if the package name of each IDL library
(see library-definition ) is configured in the properties of the server.
For each library, the property entirex.rpcserver.packagename. has the value of the package.
Example for the library Example (as in example.idl):
The library name must be lowercase. A package name can be specified when the server is generated. See Preferences and Properties under Using the Java Wrapper. |
||||||||||||||
entirex.server.brokerid |
-broker |
localhost |
Broker ID. More info | ||||||||||||||
entirex.server.codepage |
-codepage |
The encoding configured for the Java virtual machine (JVM) is used to convert the Unicode (UTF-16) representation within Java to the encoding sent to or received from the broker by default. This encoding is also transferred as the codepage to the broker to tell the broker the encoding of the data. Changing the default encoding of the JVM has the side effect that the encoding for terminal and file IO is affected too. This may be undesired. With the codepage parameter you can override the encoding without the need to change the default encoding of the JVM. The codepage must be supported by your JVM. For a list of valid encodings, see Supported Encodings in your Java documentation. Note: Enable character conversion in the broker by setting the service-specific attribute |
|||||||||||||||
entirex.server.compresslevel |
-compresslevel |
0 (no compression)
|
Enter the text or the numeric value:
|
||||||||||||||
entirex.server.customclass |
-customclass |
This class is used for custom initialization and shutdown of the server. In addition, this class allows handling when closing a conversation and handling the termination of a worker thread. More info | |||||||||||||||
entirex.server.fixedservers |
no |
|
|||||||||||||||
-help |
Display usage of the command-line parameters. | ||||||||||||||||
entirex.server.logfile |
-logfile |
Path and name of the log file. Environment variables in the name are resolved only if used as command-line option. | |||||||||||||||
entirex.server.minservers |
1 |
Minimum number of server threads. | |||||||||||||||
entirex.server.maxservers |
32 |
Maximum number of server threads. | |||||||||||||||
entirex.server.name |
|
|
Server name. | ||||||||||||||
entirex.server.password |
-password |
yes |
The password for secured access to the broker. The password is encrypted and written to the property entirex.server.password.e .
|
||||||||||||||
entirex.server.properties |
-propertyfile |
entirex.server.properties |
The name of the property file. | ||||||||||||||
entirex.server.restartcycles |
-restartcycles |
15 |
Number of restart attempts if the Broker is not available. This can be used to keep the RPC Server for Java running while the Broker is down for a short time. | ||||||||||||||
entirex.server.security |
-security |
no |
Valid values:no | yes | auto | name of BrokerSecurity object.
|
||||||||||||||
entirex.server.serveraddress |
-server |
RPC/SRV1/CALLNAT |
Server address. | ||||||||||||||
entirex.server.serverlog |
-serverlog |
Name of the file where start and stop of the worker threads is logged. Used by the Windows RPC Service. | |||||||||||||||
entirex.server.userid |
-user |
JavaServer |
The user ID for access to the broker. | ||||||||||||||
entirex.server.waitattach |
600S |
Wait timeout for the attach server thread. | |||||||||||||||
entirex.server.waitserver |
300S |
Wait timeout for the worker threads. | |||||||||||||||
entirex.timeout |
20 |
TCP/IP transport timeout. More info | |||||||||||||||
entirex.trace |
-trace |
0 |
Trace level. More info
|
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 or Broker SSL Agent. 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 default certificates, but we strongly recommend that you create your own. See SSL/TLS Sample Certificates Delivered with EntireX in the EntireX Security documentation.
Set up the RPC Server for Java for an SSL connection.
Use the URL-style Broker ID with protocol ssl://
for the Broker ID. If no port number is specified, port 1958 is used as default. Example:
ssl://localhost:22101?trust_store=C:/SoftwareAG/EntireX/etc/ExxCACert.jks&verify_server=no
If the SSL client checks the validity of the SSL server only, this is known as one-way SSL. The mandatory trust_store
parameter
specifies the file name of a keystore that must contain the list of trusted certificate authorities for the certificate of
the SSL server.
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 Java connects is prepared for SSL connections as well. The SSL server can be EntireX Broker or Broker SSL Agent. See:
To start the RPC Server for Java
Use the Start Script.
Or:
At the command prompt, enter:
java com.softwareag.entirex.aci.RPCServer
You can pass command-line options and customize your environment as described under Start Script.
To stop the RPC Server for Java
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 | UNIX | Windows | BS2000.
Or:
Use CTRL-C
in the session where you started the RPC server instance.
Or:
Under UNIX, enter command kill -
.
process-id
To ping the RPC Server for Java
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.
Note:
This command is particularly useful in a high availability cluster context.
See Setting up your Environment for High Availability with Container Orchestration in the High Availability documentation.
For general information see Running an EntireX RPC Server as a Windows Service in the Windows Administration documentation.
To run the RPC Server for Java 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 reduced signalling of the JVM (option -Xrs
):
java -Xrs com.softwareag.entirex.aci.RPCServer %*
If -Xrs
is not used, the JVM stops and an entry 10164002 is written to the event log when the user logs off from Windows.
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 jrpcserver.bat, the command will be
RPCService -install -ext MyServer -script install_path
\EntireX\bin\jrpcserver.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".
The application identification is sent from the RPC server to the Broker. It is visible with Broker Command and Info Services.
The identification consists of four parts: name, node, type, and version. These four parts are sent with each Broker call and are visible in the trace information.
For the RPC Server for Java these values are:
Identification Part | Value |
---|---|
Application name | ANAME=RPC Server for Java |
Node name | ANODE= |
Application type | ATYPE=Java |
Version | AVERS=10.7.0.0 |