TCPIP Server policy (TCPIPServer)

Attach a TCP/IP Server policy to one or more TCP/IP nodes in a message flow to control connection details to a TCP/IP server at run time.

You use a TCP/IP server node in a message flow to create a server connection to a raw TCP/IP socket, and to send or receive data over the connection to or from an external application. The TCPIPServerOutput node listens on a TCP/IP port and waits for a client node to make a connection with the port. When the client node connects to the port, the server node creates a connection for the client. The connections are not made directly by the node but are obtained from a connection pool that is managed by an integration server. The integration server uses the default TCPIP Server policy to determine which attributes are used for the socket connection. However, if the policy is set on the node, the policy is used for all the properties, including the host and port number.

You can view the statistics that are associated with TCP/IP connections by using the mqsireportproperties command. For example:
mqsireportproperties INODE -c TCPIPClient -o AllReportableEntityNames -r

To attach a TCPIP Server policy to a TCPIP Server node, set the Connection details property of the TCPIPServerInput, TCPIPServerOutput, or TCPIPServerReceive node to the name of the policy, in the format {policyProjectName}:policyName. You must deploy this policy before the associated message flow is started.

If you redeploy a TCPIPServer policy, all message flows that are using the policy are stopped and restarted.

The properties of this policy are described in the following table.
Table 1. Properties of the TCPIP Server policy
Property Property name in .policyxml file Value
Port number Port This property specifies the port number to use for this policy. The default value is 0 (zero), which means no port number is used. By default, the policy is not used and the value of the port that is provided on the node is used instead.

A port number can be assigned to only one policy at a time; if you try to assign a port number to more than one policy, an error occurs.

Value type: Integer

SSL protocol SSLProtocol
This property specifies the SSL protocol to use. Valid values are:
  • "" or none (the default), which indicates that SSL is not used.
  • SSL
  • SSLv3
  • TLS
Note: SSLv3 is disabled by default in IBM® App Connect Enterprise 13.0, because SSLv3 is no longer considered secure. For more information, see Migrating a flow that uses SSLv3.

Value type: String

Cipher suites SSLCiphers

This property consists of a semicolon-delimited list of cipher suites that can be used for the SSL handshake. The default value "" means that all available cipher suites can be used.

Value type: String

SSL client authentication SSLClientAuth This property specifies whether the client must provide authentication information about itself. Valid values are:
  • "" (the default): Client authentication is not used.
  • Want: Client authentication is requested. The connection is allowed even if the client does not give authorization information.
  • Request: Client authentication is requested. The connection is allowed even if the client does not give authorization information.
  • Need: Client authentication is requested. If the client fails to give the required authorization information, the connection is closed.
  • Require: Client authentication is requested. If the client fails to give the required authorization information, the connection is closed.

Value type: String

SSL key alias SSLKeyAlias This property specifies the key alias that identifies the key in the integration server keystore that is to be used for the SSL connection. Set this property if your keystore contains more than one key. The default value ("", or none) indicates that an SSL key alias is not used. Any other string value identifies the alias.
Note: If the keystore contains more than one key, and no key alias is defined, the Java™ virtual machine arbitrarily chooses a key at run time.

Value type: String

Maximum number of connections MaximumConnections This property specifies the maximum number of server connections that can be made on this port. The default value is 100.

Value type: Integer

Maximum record size (bytes) MaxReceiveRecordBytes This property specifies the maximum size that a record can reach before an exception is issued. The default value is 100000000, which means that the integration server accepts messages with a maximum size of 100 MB. The record size is taken to be the size of the data, including any delimiters.

Value type: Integer

Connection expiry time (seconds) ExpireConnectionSec This property specifies the length of time (in seconds) that a connection is kept open without being used. The value can be any integer. A value of 0 (zero) causes the connection to be closed immediately. This property has a default value of -1, which causes the connection to remain open indefinitely without expiring.

Value type: Integer

SO_RCVBUF SO_RCVBUF This property specifies the size (in bytes) of the SO_RCVBUF property on the socket. Valid values vary according to the operating system that you are using. This property is a standard TCP/IP property. The default value is 0 (zero), which sets the size of the SO_RCVBUF property to the operating system default.

Value type: Integer

SO_SNDBUF SO_SNDBUF This property specifies the size (in bytes) of the SO_SNDBUF property on the socket. Valid values vary according to the operating system that you are using. This property is a standard TCP/IP property. The default value is 0 (zero), which sets the size of the SO_SNDBUF property to the operating system default.

Value type: Integer

SO_KEEPALIVE SO_KEEPALIVE This property specifies the value of the KEEPALIVE property on the socket. If the value is set to True, the socket checks that it is still connected after a specified time. The length of time depends on the TCP/IP implementation on the operating system, but is typically two hours. Keep-alive processing works only if the underlying operating system supports SO_KEEPALIVE. This property is a standard TCP/IP property. The default value is False, which means that no keep-alive processing is completed.

Value type: Boolean

TCP_NODELAY TCP_NODELAY This property specifies the value of the TCP_NODELAY property on the socket. This property has a default value of True, which means that the socket sends data as soon as it is sent to its buffer.

Value type: Boolean

Traffic class TrafficClass This property specifies the traffic class on any connection that is established. Valid values are positive integers. The default value is -1, which leaves the traffic class set to the operating system default.

Value type: Integer

SO_LINGER SO_LINGER This property specifies the SO_LINGER property on any connection that is established. This property is a standard TCP/IP property. The default value is False.

Value type: Boolean

SO_LINGER_TIMEOUT_SEC SO_LINGER_TIMEOUT_SEC This property specifies the SO_LINGER_TIMEOUT_SEC property on any connection that is established. This property is a standard TCP/IP property. Valid values are positive integers. The default value is -1, which leaves the SO_LINGER_TIMEOUT_SEC value set to the operating system default.

Value type: Integer

Close with unprocessed data CloseWithUnprocessedData This property specifies whether the integration node reads ahead up to 1 MB on the stream to look for TCP/IP closure events from the steam. If a closure event is found, the connection is allowed to close if it is not owned by an input node. This process is used by flows that contain connections that are owned by receive nodes to respond to TCP/IP closure events, even if execution never proceeds to another receive node (for example, if the flow's input node is idle when the close occurs). This property has a default value of False.

Value type: Boolean