1. Introduction

The purpose of the document is to describe how to work with HTTP/HTTPS, TCP proxy, failover module and other parts of the Proxy Module from the developers’ point of view. The document also contains descriptions of error states and description of communication with the component. To run the module you'll need a valid license (Demo, Start-up or Production). In case the license is lacking, the application with the given module will not start, and there will be a log message with corresponding information (how to install a license?).

All modules extend functionality of Anypoint Studio, Mule runtime engine and add many new features. Find out more about all modules, licensing and pricing. In case you're still missing an information please visit our FAQ page or contact us directly.

2. XML namespace

copy
xmlns:ipm="http://www.integsoft.cz/schema/mule/proxy"
copy
xsi:schemaLocation="http://www.integsoft.cz/schema/mule/proxy http://www.integsoft.cz/schema/mule/proxy/current/mule‐ipm.xsd"

3. Components

Component name Description
http‐proxy‐config Proxy configuration. The relevant list of client and server certificates can be listed here.
client‐keystores List of client‐keystore certificates. At least one must be listed.
server‐keystore Server certificate (truststore).
http‐outbound‐endpoint Sends a custom http/https request to a remote server. The answer, if any, is always a string. When sending the request, it is possible to complete it with http‐headers.
http‐headers List of http headers to be sent along with the http request.
http‐header HTTP header.
via‐proxy Definition of a web proxy for access to the destination via an http tunnel.
authentication Basic, Digest or NTLM authentication.
tcp‐client‐socket‐properties Client TCP socket settings.
tcp‐server‐socket‐properties Server TCP socket settings.
proxy, ntlm‐proxy Global configuration of via‐proxy.
tcp‐proxy‐listener Server TCP. It produces events that are needed for the tcp‐outbound‐endpoint. Supports SSL/TLS.
tcp‐outbound‐endpoint Reads data from the input and sends it to a remote destination. Supports SSL/TLS. Depending on the configuration, it allows both one‐way and two‐way communication.
Important - data from the input is read here. If the remote parties do not stop the data streaming, then the method waits (asynchronously) for this termination. This allows proxying communication, such as MySQL client and MySQL server.
local‐address Local TCP port settings. It is used in tcp‐proxy‐listener and tcp‐outbound‐endpoint.
tcp‐proxy‐config Configuration of TCP outbound operations.
tcp‐proxy‐listener‐config Configuration of TCP listener.
address‐failover‐group Failover address group definition (IP and port, or username and password).
simple‐failover‐manager Failover manager. It verifies which addresses in the failover group are active and, if necessary, notifies the connected components such as circuit‐breaker.
failover‐config Configuration of failover operation.
circuit‐breaker Component (router) used to disconnect a path (group of message processors) if no active address is available.
get‐failover‐host This component gets an active address.
test‐strategy Testing strategies for the failover manager.

4. General HTTP proxy configuration

4.1. Prerequisites

Respective keystores with certificates must be available in the classpath or somewhere in the file system. The distinction of whether the module searches for a classpath is done by the prefix classpath:, for example, path="classpath:trustStore‐localhost.jks", where the module searches for the trustStore‐localhost.jks file in the classes directory.

4.2. Global configuration

copy
<ipm:http‐proxy‐config name="testSslCfg">
  <ipm:via‐proxy>
    <ipm:proxy name="viaProxy" host="localhost" port="8888" non‐proxy‐hosts="example.com" />
  </ipm:via‐proxy>
  <ipm:authentication>
    <ipm:basic‐authentication username="username" password="password" preemptive="true" />
  </ipm:authentication>
  <ipm:server‐keystore path="classpath:trustStore‐localhost.jks" password="changeit" />
  <ipm:client‐keystores>
    <ipm:client‐keystore path="classpath:ssl‐proxy.jks" alias="test‐client" password="changeit" key‐password="test‐client" mapping="/**/*/testEncoding" />
  </ipm:client‐keystores>
</ipm:http‐proxy‐config>
Attribute name Required Expressions Default value Type Description
name yes no String Configuration name used for configuration reference.
via‐proxy no One of:
proxy,
ntlm-proxy
Definition of web proxy (inline). It can also be defined as a global element.
authentication no One of:
basic-authentication,
digest-authentication,
ntlm-authentication
Authentication configuration of the HTTP request.
server‐keystore no server-keystore Server certificate configuration.
client‐keystores no Array of client-keystore List of client certificates.
tcp‐client‐socket‐properties no tcp-client-socket-properties Link to the global configuration of the client TCP socket.
ssl‐protocol no no TLSv1.2 Enumeration Type of SSL‐TLS. One of: SSLv3, TLSv1, TLSv1.1, TLSv1.2.
trust‐all no no false Boolean Value that is used to configure whether the server certificate is validated or not.
max‐connections no no 100 Number Is used to configure the total maximum number of connections to the destination.
max‐connections‐per‐route no no 10 Number Maximum number of connections according to host.
connection‐idle‐timeout no no 30000 Number Number of milliseconds of connection idle time. After that time, the connection will be closed.
connection‐ttl no no Number Time to live connection in milliseconds. Applies only if the connection is persistent. There is no default.
enable‐cookies no no true Boolean It is used to enable or disable cookies.
follow‐redirects no no true Boolean It is used to configure whether the service follows HTTP request directives.

4.3. Type server‐keystore

copy
<ipm:server‐keystore path="classpath:trustStore‐localhost.jks" password="changeit" />
Attribute name Required Expressions Default value Type Description
path yes yes String The name of the CA certificate file. Can be an absolute or relative path or start with the classpath: prefix for files available for the JVM class loader.
password no no String Password for the CA certificate file.

4.4. Type client‐keystore

copy
<ipm:client‐keystore path="classpath:ssl‐proxy.jks" alias="test‐client" password="changeit" key‐password="test‐client" mapping="/**/*/testEncoding" />
Attribute name Required Expressions Default value Type Description
path yes yes String The name of the file that contains the certificates. Can be an absolute or relative path or start with the classpath: prefix for files available for the JVM class loader.
alias no yes String Alias of the certificate in keystore.
password no no String Keystore password.
key‐password no no String Certificate password.
mapping yes no String URI mapping to the certificate.

4.5. Use of http-outbound-endpoint

copy
<ipm:http‐outbound‐endpoint config‐ref="testSslCfg" method="#['POST']" address="#['https://:' ++ attributes.requestPath replace /httpproxy\/test\//with '']">
  <ipm:http‐headers>
    <ipm:http‐header key="Content‐Type" value="#[attributes.headers['Content‐Type']]" />
  </ipm:http‐headers>
  <ipm:query-parameters>
    #[{'param 1':'param 1 value','id':vars.id,'messageCorrelationId':correlationId,'paramOverride':'paramOverrideValue'}]
  </ipm:query-parameters>
</ipm:http‐outbound‐endpoint>
copy
<ipm:http‐outbound‐endpoint config‐ref="testSslCfg" method="#['POST']" address="#['https://:' ++ attributes.requestPath replace /httpproxy\/test\//with '']">
  <ipm:dynamic-http‐headers>
    #[{'SOME_HEADER1':'headertest','SOME_HEADER2':attributes.host}]
  </ipm:dynamic-http‐headers>
  <ipm:query-parameters>
    #[{'param 1':'param 1 value','id':vars.id,'messageCorrelationId':correlationId,'paramOverride':'paramOverrideValue'}]
  </ipm:query-parameters>
</ipm:http‐outbound‐endpoint>
Attribute name Required Expressions Default value Type Description
config‐ref yes no String Reference to proxy configuration.
method no yes String Defines outgoing HTTP method. If not used, value incoming HTTP method is used.
address yes yes String HTTP address of the remote server.
http-headers no Array of http-header List of HTTP headers. Mutually exclusive with dynamic-http-headers attribute.
dynamic-http-headers no yes Object List of dynamic HTTP headers defined as DataWeave object. Mutually exclusive with http-headers attribute.
query-parameters no yes Object List of dynamic query parameters defined as DataWeave object. Overwrites existing query parameter with same name.

4.6. Type http‐header

copy
<ipm:http‐header key="Content‐Type" value="#[attributes.headers['Content‐Type']]" />
Attribute name Required Expressions Default value Type Description
key yes no String Key of HTTP header
value no yes String Value of HTTP header.

5. General TCP proxy configuration

5.1. Prerequisites

TCP proxy only works in combination with both tcp‐proxy‐listener and tcp‐outbound‐endpoint. Both components are described in next sections.

in development It is currently not possible to log passing data using Logging Module, this feature will be available in near future.

5.2. Global configuration

copy
<ipm:tcp‐proxy‐listener‐config name="testTcpListenerCfg" tcp‐server‐socket‐properties="globalTcpServerSocketProps" host="localhost" port="10000">
  <ipm:local‐address host="localhost" port="30000" />
</ipm:tcp‐proxy‐listener‐config>
Attribute name Required Expressions Default value Type Description
name yes no String Configuration name used for configuration reference.
tcp‐server‐socket‐properties no tcp‐server‐socket‐properties Link to the global configuration of the server TCP socket.
host yes yes String Hostname.
port yes yes Number The port number where the listener will work.
local‐address no local-address Configuration of the local port to which the listener will be connected.
tlsContext no no tls TLS context. Reference to the classic Mule tls:context.
copy
<ipm:tcp‐proxy‐config name="testTcpCfg" tcp‐client‐socket‐properties="globalTcpSocketProps" max‐connections="10">
  <ipm:local‐address host="localhost" port="20000" />
</ipm:tcp‐proxy‐config>
Attribute name Required Expressions Default value Type Description
name yes no String Configuration name used for configuration reference.
tcp‐client‐socket‐properties no tcp‐client‐socket‐properties Link to the global configuration of the server TCP socket.
max‐connections no yes 50 Number Maximum number of connections. Failure to close the connection may result in this limit being exceeded with the MULE: OVERLOAD error.
local‐address no local‐address Configuration of the local port to which the listener will be connected.
tlsContext no tls TLS context. Reference to the classic Mule tls:context.

5.3. Type local-address

copy
<ipm:local‐address host="localhost" port="20000" />
Attribute name Required Expressions Default value Type Description
host yes yes String Hostname of local address.
port yes yes Number Port number of local address.

5.4. Use of tcp‐proxy‐listener

copy
<ipm:tcp‐proxy‐listener config‐ref="testTcpListenerCfg" />
Attribute name Required Expressions Default value Type Description
config‐ref yes no String Listener configuration reference.

5.5. Use of tcp‐outbound‐endpoint

copy
<ipm:tcp‐outbound‐endpoint config‐ref="testTcpCfg" address="tcp://localhost:20000" one‐way="false" />
Attribute name Required Expressions Default value Type Description
config‐ref yes no String Proxy configuration reference.
address yes no String URI address of the TCP endpoint to which the data is to be sent. The protocol must be TCP, e.g. tcp://host:port
one‐way no no false Boolean Enables one-way (just) send data if true (indication whether the other party's response is being expected).
read‐buffer‐size no yes 8192 Number Buffer size for reading data.

6. Web proxy

Web proxy configuration for access to the destination through the HTTP tunnel.

6.1. Global configuration element

copy
<ipm:proxy host="localhost" port="8888" name="viaProxySettings" />
<ipm:ntlm‐proxy host="localhost" port="8888" name="viaNtlmProxySettings" />
<ipm:http‐proxy‐config name="testSslCfgProxyGlobal" via‐proxy="viaProxySettings">
  <ipm:server‐keystore path="classpath:trustStore‐localhost.jks" password="changeit" />
  <ipm:client‐keystores>
    <ipm:client‐keystore path="classpath:a1.jks" alias="t1" password="password" mapping="/**/*/path1" />
    <ipm:client‐keystore path="classpath:a2.jks" alias="t2" password="password" mapping="/**/*/path2" />
  </ipm:client‐keystores>
</ipm:http‐proxy‐config>
Attribute name Required Expressions Default value Type Description
proxy no proxy Web proxy settings.
ntlm-proxy no ntlm-proxy NTLM web proxy settings.
via‐proxy yes no String Proxy configuration reference.

6.2. Inline configuration element

copy
<ipm:http‐proxy‐config name="testSslCfgProxyInline">
  <ipm:via‐proxy>
    <ipm:proxy name="viaProxy" host="localhost" port="8888" non‐proxy‐hosts="example.com" />
  </ipm:via‐proxy>
  <ipm:server‐keystore path="classpath:trustStore‐localhost.jks" password="changeit" />
  <ipm:client‐keystores>
    <ipm:client‐keystore path="classpath:a1.jks" alias="t1" password="password" mapping="/**/*/path1" />
    <ipm:client‐keystore path="classpath:a2.jks" alias="t2" password="password" key‐password="keypassword" mapping="/**/*/path2" />
  </ipm:client‐keystores>
</ipm:http‐proxy‐config>
Attribute name Required Expressions Default value Type Description
via‐proxy yes One of:
proxy,
ntlm-proxy
Definition of web proxy (inline). It can also be defined as a global element.

6.3. Type proxy

copy
<ipm:proxy name="viaProxy" host="localhost" port="8888" non‐proxy‐hosts="example.com" />
Attribute name Required Expressions Default value Type Description
name yes no String Configuration name used for configuration reference.
host yes yes String Host where the proxy requests will be sent.
port no yes -1 Number Port where the proxy requests will be sent.
username no yes String The username to authenticate against the proxy.
password no yes String The password to authenticate against the proxy.
non‐proxy‐hosts no yes String A list of comma separated hosts against which the proxy should not be used.

6.4. Type ntlm-proxy

copy
<ipm:ntlm‐proxy name="viaNtlmProxy" host="localhost" port="8888" ntlm-domain="domain.example.com" />
Attribute name Required Expressions Default value Type Description
name yes no String Configuration name used for configuration reference.
host yes yes String Host where the proxy requests will be sent.
port no yes -1 Number Port where the proxy requests will be sent.
username no yes String The username to authenticate against the proxy.
password no yes String The password to authenticate against the proxy.
non‐proxy‐hosts no yes String A list of comma separated hosts against which the proxy should not be used.
ntlm-domain yes yes String The domain to authenticate against the proxy.

7. Authentication

Allows sending authentication data in an HTTP request.

copy
<ipm:http‐proxy‐config name="testSslCfgProxyInline" tcp‐client‐socket‐properties="globalTcpSocketProps" ssl‐protocol="TLSv1" trust‐all="false">
  <ipm:via‐proxy>
    <ipm:proxy name="viaProxy" host="localhost" port="8888" non‐proxy‐hosts="example.com" />
  </ipm:via‐proxy>
  <ipm:authentication>
    <ipm:basic‐authentication username="username" password="password" preemptive="true" />
  </ipm:authentication>
  <ipm:server‐keystore path="classpath:trustStore‐localhost.jks" password="changeit" />
</ipm:http‐proxy‐config>
Attribute name Required Expressions Default value Type Description
authentication yes One of:
basic-authentication,
digest-authentication,
ntlm-authentication
Authentication configuration of the http request.

7.1. Type basic-authentication

copy
<ipm:basic‐authentication username="username" password="password" preemptive="true" />
Attribute name Required Expressions Default value Type Description
username yes yes String The username to authenticate.
password yes yes String The password to authenticate.
preemptive no yes true Boolean Configures if authentication should be preemptive or not. Preemptive authentication will send the authentication header in the first request, instead of waiting for a 401 response code to send it.

7.2. Type digest-authentication

copy
<ipm:digest‐authentication username="username" password="password" preemptive="true" />
Attribute name Required Expressions Default value Type Description
username yes yes String The username to authenticate.
password yes yes String The password to authenticate.
preemptive no yes true Boolean Configures if authentication should be preemptive or not. Preemptive authentication will send the authentication header in the first request, instead of waiting for a 401 response code to send it.

7.3. Type ntlm-authentication

copy
<ipm:ntlm‐authentication username="username" password="password" preemptive="true" workstation="workstation" domain="example.com" />
Attribute name Required Expressions Default value Type Description
username yes yes String The username to authenticate.
password yes yes String The password to authenticate.
preemptive no yes true Boolean Configures if authentication should be preemptive or not. Preemptive authentication will send the authentication header in the first request, instead of waiting for a 401 response code to send it.
workstation no yes String The workstation to authenticate.
domain no yes String The domain to authenticate.

8. General failover configuration

8.1. Prerequisites

A failover group defines a set of addresses where the same service is running and which are therefore interchangeable. The addresses defined in the group are considered the same if the hostname and port are the same (i.e. username and password do not matter).

In addition to operations, the module allows the use of the DataWeave function to obtain a failover address (see below).

When using failover within the passthrough proxy (Squid,...), it is necessary to use the so‐called dynamic configuration. It can be done either by embedding the proxy element directly in the configuration or by using default‐http‐headers, e.g.

copy
<ipm:http‐proxy‐config name="testPlainProxyCfgProxyAuth" tcp‐client‐socket‐properties="globalTcpSocketProps">
  <ipm:via‐proxy>
    <ipm:proxy host="#[Ipm::getFailoverHost(app.registry.passThroughProxyFailoverManager).hostname default 'none']" port="#[Ipm::getFailoverHost(app.registry.passThroughProxyFailoverManager).port default ‐1]" username="test" password="password" />
  </ipm:via‐proxy>
  <ipm:server‐keystore path="classpath:trustStore‐localhost.jks" password="changeit" />
  <!‐‐ This trick makes this configuration dynamic, which is needed for correct failover ‐‐>
  <ipm:default‐http‐headers>
    <ipm:http‐header key="X‐MULE‐ID" value="#[null]"/>
  </ipm:default‐http‐headers>
</ipm:http‐proxy‐config>

In addition, when using HTTP request from the Mule HTTP Connector, it is necessary to use the library in the Integsoft version, i.e., for example, version 1.5.22‐integsoft‐1.

8.2. Global configuration

copy
<ipm:address‐failover‐group name="failoverGroup">
  <ipm:failover‐hosts>
    <ipm:host hostname="localhost" port="10100" username="username" password="password" />
    <ipm:host hostname="localhost" port="10101" username="username" password="password" />
  </ipm:failover‐hosts>
</ipm:address‐failover‐group>
Attribute name Required Expressions Default value Type Description
name yes no String Configuration name used for configuration reference.
failover‐hosts yes Array of host List of addresses/hosts in the group.
copy
<ipm:simple‐failover‐manager name="failoverManager" failover‐group="failoverGroup" exception‐on‐no‐hosts="true" enable‐notifications="true">
  <ipm:test‐strategy>
    <ipm:ping timeout="500" />
  </ipm:test‐strategy>
</ipm:simple‐failover‐manager>
Attribute name Required Expressions Default value Type Description
name yes no String Configuration name used for configuration reference.
failover-group yes no String Link to the global definition of a failover group.
exception‐on‐no‐hosts no no false Boolean Switch that allows configuring whether the manager should throw an exception if no address is active.
enable‐notifications no no true Boolean Switch that allows configuring whether should notify (asynchronously) all observers, e.g., circuit‐breaker.
period no no 5000 Number Time (in milliseconds) how often test strategies should be run on the address group.
test-strategy yes One of:
ping
Type of test strategy to use. Every testing strategy is pluggable.
copy
<ipm:failover‐config name="failoverConfig" failover‐manager="failoverManager" />
Attribute name Required Expressions Default value Type Description
name yes no String Configuration name used for configuration reference.
failover‐manager yes no String Reference to the defined failover manager.

8.3. Type host

copy
<ipm:host hostname="localhost" port="10100" username="username" password="password" />
Attribute name Required Expressions Default value Type Description
hostname yes no String IP/DNS address.
port yes no Number Port number.
username no no String Username.
port no no String User password.

8.4. Strategy type ping

copy
<ipm:ping timeout="500" />
Attribute name Required Expressions Default value Type Description
timeout no no 1000 Number Timeout in milliseconds. After this time, the address will be considered unavailable.

8.5. Use of get‐failover‐host

The operation returns the active address. There may be an edge‐case when an address that has expired a short time ago is returned. It depends on the period settings of the failover manager and the frequency of the operation call.

copy
<ipm:get‐failover‐host config‐ref="failoverConfig" target="failoverHost" ignore‐exceptions="false" />
Attribute name Required Expressions Default value Type Description
config‐ref yes no String Reference to failover configuration.
ignore‐exceptions no no false Boolean Switch that allows configuring whether operations should throw exceptions or silently ignore them.
target yes no String The name of the variable through which it is possible to access the failover host that is active. Access to individual data from the address (for example, if the name is set to fhost):
vars.fhost.hostname returns hostname
vars.fhost.port returns port
vars.fhost.username returns username, if defined
vars.fhost.password returns password, if defined
vars.fhost.address returns String that has the following format: [username[:password]@]hostname:port

8.6. Use of circuit‐breaker

Router representing a circuit breaker. Allows fail‐fast if no address is available. It has two states: open and closed. The closed state means that the circuit is closed, i.e., the messages pass through the router. On the contrary, the open state means the circuit is open and the messages will not go through; in this case, an error CIRCUIT_OPEN is immediately displayed.

It allows calling specific flow asynchronously (flow does not return values) according to certain events. Important - if a flow (see below) is referenced, then that flow must exist, otherwise the application will not find it.

Event name Description
onOpen Circuit breaker has opened (no address is active).
onClose Circuit breaker has closed (there is at least one active address).
onHostDown An address has become unavailable. Information about it can then be found in Mule message attributes.
onHostUp An address has become available again. Information about it can then be found in the Mule message attributes.
copy
<ipm:circuit‐breaker failoverManager="genericFailoverManager" enabled="true" enableNotifications="true" 
    onOpen="GenericOnOpenFlow" onClose="GenericOnCloseFlow" onHostDown="GenericOnHostDownFlow" onHostUp="GenericOnHostUpFlow">
  <ipm:route>
    <set‐payload value="payload" />
  </ipm:route>
</ipm:circuit‐breaker>
Attribute name Required Expressions Default value Type Description
failoverManager yes no String Reference to failover manager.
enabled no yes true Boolean Switch that allows configuring whether the circuit breaker should be enables or not.
enableNotifications no no true Boolean Enables notification to linked failoverManager
onClose no no String The name of the flow to be run.
onOpen no no String The name of the flow to be run.
onHostUp no no String The name of the flow to be run.
onHostDown no no String The name of the flow to be run.
route true Array of Message Processor Reference to the classic Mule Message Processors.

8.7. Use of getFailoverHost function

The module contains getFailoverHost function that returns a failover address, the same as get‐failover‐host operation. It is the equivalent to be used with DataWeave.
Important - when using it in passthrough proxy, it is necessary to provide a default value in the DataWeave script if no failover host is available. Otherwise, deployment will fail.

copy
<set‐variable variableName="failoverHost" value="#[Ipm::getFailoverHost(app.registry.failoverManager)]" />
Input argument Required Expressions Default value Type Description
reference to the failover manager yes no String It is defined via app.registry.managerName.

9. Type tcp‐client‐socket‐properties

copy
<ipm:tcp‐client‐socket‐properties name="globalTcpSocketProps" keep‐alive="true" connection‐timeout="30000" client‐timeout="10000" />
<ipm:http‐proxy‐config name="testSslCfg" tcp‐client‐socket‐properties="globalTcpSocketProps" ssl‐protocol="TLSv1" trust‐all="false" max‐connections="20" 
    max‐connections‐per‐route="10" connection‐idle‐timeout="30000" connection‐ttl="60000" enable‐cookies="false" follow‐redirects="false">
  <ipm:server‐keystore path="classpath:trustStore‐localhost.jks" password="changeit" />
</ipm:http‐proxy‐config>
Attribute name Required Expressions Default value Type Description
name yes no String Configuration name used for configuration reference.
keep‐alive no yes false Boolean It is used to set SO_KEEPALIVE.
connection‐timeout no yes 30000 Number Connection timeout in milliseconds, ‐1 means system default and 0 means unlimited.
client‐timeout no yes 0 Number Socket timeout for reading data SO_TIMEOUT in milliseconds, ‐1 means system default and 0 means unlimited.
send‐buffer‐size no yes Number The size of the sending buffer in bytes on the socket.
receive‐buffer‐size no yes Number The size of the receiving buffer in bytes on the socket.
reuse‐address no yes true Boolean It is used to set SO_REUSEADDRESS on the socket.
send‐tcp‐no‐delay no yes true Boolean Indicates whether the transmitted data should not be collected together for greater efficiency and sent immediately.
linger no yes Number It is used to set SO_LINGER in milliseconds.
fail‐on‐unresolved‐host no yes true Boolean It is used to set whether the socket must fail during creation if the host name is not resolved.

10. Type tcp‐server‐socket‐properties

copy
<ipm:tcp‐server‐socket‐properties name="globalTcpServerSocketProps" keep‐alive="true" server‐timeout="10000" receive‐backlog="100" send‐tcp‐no‐delay="true" fail‐on‐unresolved‐host="true" />
<ipm:tcp‐proxy‐listener‐config name="Sockets_Listener_config" tcp‐server‐socket‐properties="globalTcpServerSocketProps" host="localhost" port="10000">
  <ipm:local‐address host="localhost" port="30000" />
</ipm:tcp‐proxy‐listener‐config>
Attribute name Required Expressions Default value Type Description
name yes no String Configuration name used for configuration reference.
keep‐alive no yes false Boolean It is used to set SO_KEEPALIVE.
server‐timeout no yes Number Socket timeout for accepting input data SO_TIMEOUT in milliseconds, ‐1 means default system and 0 means it waits infinitely long for incoming connections.
client‐timeout no yes 0 Number Socket timeout for reading data SO_TIMEOUT in milliseconds, ‐1 means system default and 0 means unlimited.
receive‐backlog no yes 50 Number Maximum queue size for incoming connections.
send‐buffer‐size no yes Number The size of the sending buffer in bytes on the socket.
receive‐buffer‐size no yes Number The size of the receiving buffer in bytes on the socket.
reuse‐address no yes true Boolean It is used to set SO_REUSEADDRESS on the socket.
send‐tcp‐no‐delay no yes true Boolean Indicates whether the transmitted data should not be collected together for greater efficiency and sent immediately.
linger no yes Number It is used to set SO_LINGER in milliseconds.
fail‐on‐unresolved‐host no yes true Boolean It is used to set whether the socket must fail during creation if the host name is not resolved.

11. Errors thrown by the module

Errors are caught using on‐error‐propagate in error‐handler element. For the list of module specific exceptions, see the table below.

copy
<error‐handler name="globalErrorHandler">
  <on‐error‐propagate type="IPM:READ_TIMEOUT">
    <set‐variable value="#[error.errorMessage.attributes.statusCode]" variableName="httpStatus" />
    <set‐payload value="#[error.errorMessage.payload]" mimeType="text/plain" />
  </on‐error‐propagate>
  <on‐error‐propagate type="ANY">
    <set‐variable value="#[error.errorMessage.attributes.statusCode default 500]" variableName="httpStatus" />
    <set‐payload value="#[error.errorMessage.attributes.reason]" mimeType="text/plain" />
  </on‐error‐propagate>
</error‐handler>
Exception name Description
NO_LICENSE License error.
MAX_CALLS_REACHED Maximum number of calls allowed within the demo license has been exceeded.
GENERIC_ERROR Generic error.
INITIALIZATION Error during component initialization.
PROCESSING Error during processing.
READ_TIMEOUT Error during remote server response processing.
CONNECTION Error during establishing the connection.
NO_HOST_AVAILABLE Error thrown by get‐failover‐host if no address is active.
CIRCUIT_OPEN Error thrown by circuit‐breaker if the circuit is opened (open means that no messages can pass).

12. Download

There are several download options available. Please use our official download page to get all Integration Eye™ modules.

13. License

To run the module you'll need a valid license (Demo, Start-up or Production). In case the license is lacking, the application with the given module will not start, and there will be a log message with corresponding information. Register to get a free Start-up license now!

Already have a license? Please visit our FAQ: how to install a license?