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
xmlns:ipm="http://www.integsoft.cz/schema/mule/proxy"
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.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
<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
<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
<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
<ipm:http‐outbound‐endpoint config‐ref="testSslCfg" 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:http‐outbound‐endpoint>
Attribute name | Required | Expressions | Default value | Type | Description |
---|---|---|---|---|---|
config‐ref | yes | no | String | Reference to proxy configuration. | |
address | yes | yes | String | HTTP address of the remote server. | |
http-headers | no | – | Array of http-header | List of HTTP headers. |
4.6. Type http‐header
<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.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
<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. |
<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
<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
<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
<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.1. Global configuration element
<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
<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
<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
<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.
<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
<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
<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
<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.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.
<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
<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. |
<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. |
<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
<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
<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.
<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. |
<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.
<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
<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
<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.
<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?