diff --git a/src/reference/docbook/handler-advice.xml b/src/reference/docbook/handler-advice.xml index 8a7a25e383..3756066b2e 100644 --- a/src/reference/docbook/handler-advice.xml +++ b/src/reference/docbook/handler-advice.xml @@ -295,10 +295,11 @@ Caused by: java.lang.RuntimeException: foo Spring Retry has a great deal of flexibility for determining which exceptions can invoke retry. The default configuration will retry - for all exceptions. Given that, user exceptions may be wrapped in - a MessagingException in the underlying handler, - we need to ensure that the classification examines the exception causes. - The default classifier just looks at the top level exception. + for all exceptions and the exception classifier just looks at the + top level exception. If you configure it to, say, only retry + on BarException and your application throws + a FooException where the cause is a + BarException, retry will not occur. Since Spring Retry 1.0.3, the diff --git a/src/reference/docbook/whats-new.xml b/src/reference/docbook/whats-new.xml index 74796356c8..4db5c8ddf5 100644 --- a/src/reference/docbook/whats-new.xml +++ b/src/reference/docbook/whats-new.xml @@ -5,104 +5,25 @@ What's new in Spring Integration 3.0? This chapter provides an overview of the new features and improvements - that have been introduced with Spring Integration 3.0 If you are interested - in even more detail, please take a look at the Issue Tracker tickets that + that have been introduced with Spring Integration 3.0. If you are interested + in more details, please see the Issue Tracker tickets that were resolved as part of the 3.0 development process.
New Components -
- TCP/IP Connection Events and Connection Management +
+ HTTP Request Mapping - The (supplied) TcpConnections now emit - ApplicationEvents (specifically - TcpConnectionEvents) when connections are - opened, closed, or an exception occurs. This allows applications - to be informed of changes to TCP connections using the normal - Spring ApplicationListener - mechanism. - - - AbstractTcpConnection has been renamed - TcpConnectionSupport; custom connections that - are subclasses of this class, can use its methods to publish events. - Similarly, AbstractTcpConnectionInterceptor has - been renamed to TcpConnectionInterceptorSupport. - - - In addition, a new <int-ip:tcp-connection-event-inbound-channel-adapter/> - is provided; by default, this adapter sends all TcpConnectionEvents - to a Channel. - - - Further, the TCP Connection Factories, now provide a new method - getOpenConnectionIds(), which returns a list of identifiers for all - open connections; this allows applications, for example, to broadcast to all - open connections. - - - Finally, the connection factories also provide a new method - closeConnection(String connectionId) which allows applications - to explicitly close a connection using its ID. - - - For more information see . - -
-
- Syslog Support - - Building on the 2.2 SyslogToMapTransformer Spring - Integration 3.0 now introduces - UDP and TCP inbound channel adapters especially tailored - for receiving SYSLOG messages. For more information, see - . - -
-
- JMX Support - - - - A new <int-jmx:tree-polling-channel-adapter/> is provided; this - adapter queries the JMX MBean tree and sends a message with a payload that is the - graph of objects that matches the query. By default the MBeans are mapped to - primitives and simple Objects like Map, List and arrays - permitting simple - transformation, for example, to JSON. - - - The IntegrationMBeanExporter now allows the configuration of - a custom ObjectNamingStrategy using the naming-strategy - attribute. - - - - - For more information, see . - -
-
- 'Tail' Support - - File 'tail'ing inbound channel adapters are now provided to generate messages when - lines are added to the end of text files; see . - -
-
- Inbound Channel Adapter Script Support - - The <int:inbound-channel-adapter/> now supports <expression/> - and <script/> sub-elements to create a - MessageSource; see . - -
-
- Content Enricher: Headers Enrichment Support - - The Content Enricher now provides configuration for <header/> - sub-elements, to enrich the outbound Message with headers based on the reply Message from the underlying - message flow. For more information see . + The HTTP module now provides powerful Request Mapping support for Inbound Endpoints. Class UriPathHandlerMapping + was replaced by IntegrationRequestMappingHandlerMapping, which is registered under the bean name + integrationRequestMappingHandlerMapping in the application context. Upon parsing of the HTTP Inbound Endpoint, + a new IntegrationRequestMappingHandlerMapping bean is either registered or an existing bean is being reused. + To achieve flexible Request Mapping configuration, Spring Integration provides the <request-mapping/> + sub-element for the <http:inbound-channel-adapter/> and the <http:inbound-gateway/>. + Both HTTP Inbound Endpoints are now fully based on the Request Mapping infrastructure that was introduced with Spring MVC 3.1. + For example, multiple paths are supported on a single inbound endpoint. + For more information see .
@@ -131,20 +52,6 @@ For more information see .
-
- HTTP Request Mapping - - The HTTP module now provides powerful Request Mapping support for Inbound Endpoints. Class UriPathHandlerMapping - was replaced by IntegrationRequestMappingHandlerMapping, which is registered under the bean name - integrationRequestMappingHandlerMapping in the application context. Upon parsing of the HTTP Inbound Endpoint, - a new IntegrationRequestMappingHandlerMapping bean is either registered or an existing bean is being reused. - To achieve flexible Request Mapping configuration, Spring Integration provides the <request-mapping/> - sub-element for <http:inbound-channel-adapter/> and <http:inbound-gateway/>. - Both HTTP Inbound Endpoints are now fully based on the Request Mapping infrastructure that was introduced with Spring MVC 3.1. - For example, multiple paths are supported on a single inbound endpoint. - For more information see . - -
Redis: New Components @@ -191,11 +98,113 @@ See for more information.
+
+ Syslog Support + + Building on the 2.2 SyslogToMapTransformer Spring + Integration 3.0 now introduces + UDP and TCP inbound channel adapters especially tailored + for receiving SYSLOG messages. For more information, see + . + +
+
+ 'Tail' Support + + File 'tail'ing inbound channel adapters are now provided to generate messages when + lines are added to the end of text files; see . + +
+
+ JMX Support + + + + A new <int-jmx:tree-polling-channel-adapter/> is provided; this + adapter queries the JMX MBean tree and sends a message with a payload that is the + graph of objects that matches the query. By default the MBeans are mapped to + primitives and simple Objects like Map, List and arrays - permitting simple + transformation, for example, to JSON. + + + The IntegrationMBeanExporter now allows the configuration of + a custom ObjectNamingStrategy using the naming-strategy + attribute. + + + + + For more information, see . + +
+
+ TCP/IP Connection Events and Connection Management + + TcpConnections now emit + ApplicationEvents (specifically + TcpConnectionEvents) when connections are + opened, closed, or an exception occurs. This allows applications + to be informed of changes to TCP connections using the normal + Spring ApplicationListener + mechanism. + + + AbstractTcpConnection has been renamed + TcpConnectionSupport; custom connections that + are subclasses of this class, can use its methods to publish events. + Similarly, AbstractTcpConnectionInterceptor has + been renamed to TcpConnectionInterceptorSupport. + + + In addition, a new <int-ip:tcp-connection-event-inbound-channel-adapter/> + is provided; by default, this adapter sends all TcpConnectionEvents + to a Channel. + + + Further, the TCP Connection Factories, now provide a new method + getOpenConnectionIds(), which returns a list of identifiers for all + open connections; this allows applications, for example, to broadcast to all + open connections. + + + Finally, the connection factories also provide a new method + closeConnection(String connectionId) which allows applications + to explicitly close a connection using its ID. + + + For more information see . + +
+
+ Inbound Channel Adapter Script Support + + The <int:inbound-channel-adapter/> now supports <expression/> + and <script/> sub-elements to create a + MessageSource; see . + +
+
+ Content Enricher: Headers Enrichment Support + + The Content Enricher now provides configuration for <header/> + sub-elements, to enrich the outbound Message with headers based on the reply Message from the underlying + message flow. For more information see . + +
General Changes - +
+ Message ID Generation + + Previously, message ids were generated using the JDK UUID.randomUUID() method. With this + release, the default mechanism has been changed to use a more efficient algorithm which + is significantly faster. In addition, the ability to change + the strategy used to generate message ids has been added. + For more information see . + +
<gateway> Changes @@ -208,204 +217,16 @@ It is now possible to entirely customize the way that gateway method calls are mapped to messages. + + The GatewayMethodMetadata is now public class and it makes possible flexibly + to configure the GatewayProxyFactoryBean programmatically from Java code. + For more information see .
-
- Aggregator 'empty-group-min-timeout' property - AbstractCorrelatingMessageHandler provides a new property - empty-group-min-timeout - to allow empty group expiry to run on a longer schedule than expiring partial groups. Empty groups will - not be removed from the MessageStore until they have not been modified - for at least this number of milliseconds. For more information see . - -
-
- Advising Filters - - Previously, when a <filter/> had a <request-handler-advice-chain/>, the discard - action was all performed within the scope of the advice chain (including any downstream flow - on the discard-channel). The filter element now has an attribute - discard-within-advice (default true), to allow the discard action to - be performed after the advice chain completes. See . - -
-
- Advising Endpoints using Annotations - - Request Handler Advice Chains can now be configured using annotations. See - . - -
-
- ObjectToStringTransformer Improvements - - This transformer now correctly transforms byte[] and char[] - payloads to String. For more information see . - -
-
- Web Service Outbound URI Configuration - - Web Service Outbound Gateway 'uri' attribute now supports <uri-variable/> substitution for all - URI-schemes supported by Spring Web Services. For more information see . - -
-
- FTP, SFTP and FTPS Cached Sessions - - The FTP, SFTP and FTPS endpoints no longer cache sessions by default. - - - The deprecated cached-sessions attribute has been removed from all endpoints. - Previously, the embedded caching mechanism controlled by this attribute's value didn't - provide a way to limit the size of the cache, which could - grow indefinitely. The CachingConnectionFactory was introduced in - release 2.1 and it became the preferred (and is now the only) way to cache sessions. - For more information, see - and . - - - The CachingConnectionFactory now provides a new method - resetCache(). This immediately closes idle sessions and causes in-use - sessions to be closed as and when they are returned to the cache. - - - The DefaultSftpSessionFactory (in conjunction with a - CachingSessionFactory) now supports multiplexing channels over - a single SSH connection (SFTP Only). - -
-
- FTP, SFTP and FTPS Inbound Adapters - - Previously, there was no way to override the default filter used to process files retrieved - from a remote server. The filter attribute determines which files are retrieved - but the FileReadingMessageSource uses an - AcceptOnceFileListFilter. This means that if a new copy of a file - is retrieved, with the same name as a previously copied file, no message was sent from the - adapter. - - - With this release, a new attribute local-filter allows you to override the - default filter, for example with an AcceptAllFileListFilter, or some - other custom filter. - - - For users that wish the behavior of the AcceptOnceFileListFilter - to be maintained across JVM executions, a custom filter that retains state, perhaps on - the file system, can now be configured. - - - Inbound Channel Adapters now support the preserve-timestamp attribute, which - sets the local file modified timestamp to the timestamp from the server (default false). - - - For more information, see - and . - -
-
- FTP, SFTP and FTPS Gateways - - - - The gateways now support the mv command, enabling - the renaming of remote files. - - - The gateways now support recursive ls and - mget commands, enabling - the retrieval of a remote file tree. - - - The gateways now support put and - mput commands, enabling - sending file(s) to the remote server. - - - The local-filename-generator-expression attribute is now supported, - enabling the naming of local files during retrieval. By default, the same - name as the remote file is used. - - - The local-directory-expression attribute is now supported, - enabling the naming of local directories during retrieval based on the remote directory. - - - - - For more information, see and . - -
-
- Remote File Template - - A new higher-level abstraction (RemoteFileTemplate) is provided over the - Session implementations used by the FTP and SFTP modules. While it is - used internally by endpoints, this abstraction can also be used programmatically and, like all - Spring *Template implemenations, reliably closes the underlying session while allowing - low level access to the session when needed. - - - For more information, see - and . - -
-
- JDBC Message Store Improvements - - Spring Integration 3.0 adds a new set of DDL - scripts for MySQL version 5.6.4 and higher. - Now MySQL supports fractional - seconds and is thus improving the FIFO ordering when - polling from a MySQL-based Message Store. For more information, - please see . - -
-
- JPA Support: Improvements - - Payloads to persist or - merge can now be of type - java.lang.Iterable. - - - In that case, each object returned by the - Iterable is treated as - an entity and persisted or merged using the underlying - EntityManager. - NULL values returned by the iterator are ignored. - - - The JPA adapters now have additional attributes to optionally 'flush' and 'clear' - entities from the associated persistence context after performing persistence operations. - - For more information see . -
-
- Jackson Support (JSON) - - - - A new abstraction for JSON conversion has been introduced. Implementations for Jackson 1.x - and Jackson 2 are currently provided, with the version being determined by presence on - the classpath. Previously, only Jackson 1.x was supported. - - - The ObjectToJsonTransformer and JsonToObjectTransformer - now emit/consume headers containing type information. - - - - - For more information, see 'JSON Transformers' in . - -
HTTP Endpoint Changes @@ -450,22 +271,23 @@ For more information see .
-
- AMQP Outbound Gateway Header Mapping +
+ Jackson Support (JSON) - Previously, the <int-amqp:outbound-gateway/> mapped headers before invoking the message - converter, and the converter could overwrite headers such as content-type. The - outbound adapter maps the headers after the conversion, which means headers like - content-type from the outbound Message (if present) are used. + + + A new abstraction for JSON conversion has been introduced. Implementations for Jackson 1.x + and Jackson 2 are currently provided, with the version being determined by presence on + the classpath. Previously, only Jackson 1.x was supported. + + + The ObjectToJsonTransformer and JsonToObjectTransformer + now emit/consume headers containing type information. + + - Starting with this release, the gateway now maps the headers after the message conversion, - consistent with the adapter. If your application relies on the previous behavior (where the - converter's headers overrode the mapped headers), you either need to filter those headers - (before the message reaches the gateway) - or set them appropriately. The headers affected by the SimpleMessageConverter - are content-type and content-encoding. Custom message converters - may set other headers. + For more information, see 'JSON Transformers' in .
@@ -479,85 +301,145 @@ For more information see .
-
- JMS Message Driven Channel Adapter +
+ Aggregator 'empty-group-min-timeout' property - Previously, when configuring a <message-driven-channel-adapter/>, if you wished to - use a specific TaskExecutor, it was necessary to declare a container - bean and provide it to the adapter using the container attribute. The - task-executor is now provided, allowing it to be set directly on the adapter. This is - in addition to several other container attributes that were already available. + The AbstractCorrelatingMessageHandler provides a new property + empty-group-min-timeout + to allow empty group expiry to run on a longer schedule than expiring partial groups. Empty groups will + not be removed from the MessageStore until they have not been modified + for at least this number of milliseconds. For more information see .
-
- RMI Inbound Gateway +
+ Persistent File List Filters (file, (S)FTP) - The RMI Inbound Gateway now supports an error-channel attribute. See - . + New FileListFilters that use a persistent MetadataStore are + now available. These can be used to prevent duplicate files after a system restart. See + , , and for more information.
-
- Stored Procedure Components Improvements +
+ Scripting Support: Variables Changes - For more complex database-specific types, not supported by the standard - CallableStatement.getObject method, 2 new additional - attributes were introduced to the <sql-parameter-definition/> - element with OUT-direction: - - - type-name - return-type - - - - The row-mapper attribute of the Stored Procedure Inbound Channel Adapter - <returning-resultset/> sub-element - now supports a reference to a RowMapper bean - definition. Previously, it contained just a class name (which is still supported). - - - For more information see . - + A new variables attribute has been introduced for scripting components. + In addition, variable bindings are now allowed for inline scripts. + See and for more information.
-
- IMAP Idle Connection Exceptions +
+ Direct Channel Load Balancing configuration - Previously, if an IMAP idle connection failed, it was logged but there was no mechanism to - inform an application. Such exceptions now generate ApplicationEvents. - Applications can obtain these events using an <int-event:inbound-channel-adapter> - or any ApplicationListener configured to receive an - ImapIdleExceptionEvent or one of its super classes. + Previously, when configuring LoadBalancingStrategy on the channel's 'dispatcher' sub-element, + the only available option was to use a pre-defined enumeration of values which did not allow one to set a custom implementation + of the LoadBalancingStrategy. You can now use load-balancer-ref to provide + a reference to a custom implementation of the LoadBalancingStrategy. + For more information see .
-
- Message ID Generation +
+ PublishSubscribeChannel Behavior - Previously, message ids were generated using the JDK UUID.randomUUID() method. With this - release, the default mechanism has been changed to use a more efficient algorithm which - is significantly faster. In addition, the ability to change - the strategy used to generate message ids has been added. - For more information see . + Previously, sending to a <publish-subscribe-channel/> that had + no subscribers would return a false result. If used in conjunction with + a MessagingTemplate, this would result in an exception being thrown. + Now, the PublishSubscribeChannel has a property + minSubscribers (default 0). If the message is sent to at least the minimum + number of subscribers, the send is deemed to be successful (even if zero). If an application + is expecting to get an exception under these conditions, set the minimum subscribers to at + least 1.
-
- XsltPayloadTransformer +
+ FTP, SFTP and FTPS Changes - You can now specify the transformer factory class name using the - transformer-factory-class attribute. See + The FTP, SFTP and FTPS endpoints no longer cache sessions by default -
-
- Message Headers and TCP - The TCP connection factories now enable the configuration of a flexible mechanism to - transfer selected headers (as well as the payload) over TCP. A new - TcpMessageMapper - enables the selection of the headers, and an appropriate (de)serializer needs to be - configured to write the resulting Map to the - TCP stream. A MapJsonSerializer is provided as a convenient - mechanism to transfer headers and payload over TCP. - For more information see . + The deprecated cached-sessions attribute has been removed from all endpoints. + Previously, the embedded caching mechanism controlled by this attribute's value didn't + provide a way to limit the size of the cache, which could + grow indefinitely. The CachingConnectionFactory was introduced in + release 2.1 and it became the preferred (and is now the only) way to cache sessions. + + + The CachingConnectionFactory now provides a new method + resetCache(). This immediately closes idle sessions and causes in-use + sessions to be closed as and when they are returned to the cache. + + + The DefaultSftpSessionFactory (in conjunction with a + CachingSessionFactory) now supports multiplexing channels over + a single SSH connection (SFTP Only). + + + FTP, SFTP and FTPS Inbound Adapters + + + Previously, there was no way to override the default filter used to process files retrieved + from a remote server. The filter attribute determines which files are retrieved + but the FileReadingMessageSource uses an + AcceptOnceFileListFilter. This means that if a new copy of a file + is retrieved, with the same name as a previously copied file, no message was sent from the + adapter. + + + With this release, a new attribute local-filter allows you to override the + default filter, for example with an AcceptAllFileListFilter, or some + other custom filter. + + + For users that wish the behavior of the AcceptOnceFileListFilter + to be maintained across JVM executions, a custom filter that retains state, perhaps on + the file system, can now be configured. + + + Inbound Channel Adapters now support the preserve-timestamp attribute, which + sets the local file modified timestamp to the timestamp from the server (default false). + + + FTP, SFTP and FTPS Gateways + + + + + The gateways now support the mv command, enabling + the renaming of remote files. + + + The gateways now support recursive ls and + mget commands, enabling + the retrieval of a remote file tree. + + + The gateways now support put and + mput commands, enabling + sending file(s) to the remote server. + + + The local-filename-generator-expression attribute is now supported, + enabling the naming of local files during retrieval. By default, the same + name as the remote file is used. + + + The local-directory-expression attribute is now supported, + enabling the naming of local directories during retrieval based on the remote directory. + + + + + Remote File Template + + + A new higher-level abstraction (RemoteFileTemplate) is provided over the + Session implementations used by the FTP and SFTP modules. While it is + used internally by endpoints, this abstraction can also be used programmatically and, like all + Spring *Template implementations, reliably closes the underlying session while allowing + low level access to the session when needed. + + + For more information, see + and .
@@ -593,64 +475,53 @@ set requires-reply to false.
-
- Delayer: delay expression +
+ AMQP Outbound Gateway Header Mapping - Previously, the <delayer> provided a delay-header-name attribute - to determine the delay value at runtime. In complex cases it was necessary - to precede the <delayer> with a <header-enricher>. - Spring Integration 3.0 introduced the expression attribute and expression - sub-element for dynamic delay determination. The delay-header-name attribute is now deprecated - because the header evaluation can be specified in the expression. In addition, - the ignore-expression-failures was introduced to control the behavior when an - expression evaluation fails. - For more information see . + Previously, the <int-amqp:outbound-gateway/> mapped headers before invoking the message + converter, and the converter could overwrite headers such as content-type. The + outbound adapter maps the headers after the conversion, which means headers like + content-type from the outbound Message (if present) are used. + + + Starting with this release, the gateway now maps the headers after the message conversion, + consistent with the adapter. If your application relies on the previous behavior (where the + converter's headers overrode the mapped headers), you either need to filter those headers + (before the message reaches the gateway) + or set them appropriately. The headers affected by the SimpleMessageConverter + are content-type and content-encoding. Custom message converters + may set other headers.
-
- PublishSubscribeChannel Behavior +
+ Stored Procedure Components Improvements - Previously, sending to a <publish-subscribe-channel/> that had - no subscribers would return a false result. If used in conjunction with - a MessagingTemplate, this would result in an exception being thrown. - Now, the PublishSubscribeChannel has a property - minSubscribers (default 0). If the message is sent to at least the minimum - number of subscribers, the send is deemed to be successful (even if zero). If an application - is expecting to get an exception under these conditions, set the minimum subscribers to at - least 1. + For more complex database-specific types, not supported by the standard + CallableStatement.getObject method, 2 new additional + attributes were introduced to the <sql-parameter-definition/> + element with OUT-direction: + + + type-name + return-type + + + + The row-mapper attribute of the Stored Procedure Inbound Channel Adapter + <returning-resultset/> sub-element + now supports a reference to a RowMapper bean + definition. Previously, it contained just a class name (which is still supported). + + + For more information see . +
-
- Direct Channel Load Balancing configuration +
+ Web Service Outbound URI Configuration - Previously, when configuring LoadBalancingStrategy on the channel's 'dispatcher' sub-element - the only available option was to use a pre-defined enumeration of values which did not allow one to set a custom implementation - of the LoadBalancingStrategy. Starting with v3.0 you can now use 'load-balancer-ref' to provide - a reference to a custom implementation of the LoadBalancingStrategy. - For more information see . - -
-
- JPA Adapters: first-result attribute - - Retrieving gateways had no mechanism to specify the first record to be retrieved which - is a common use case. The retrieving gateways now support specifying this parameter - using a first-result and first-result-expression attributes - to the gateway definition. . - -
-
- JPA Adapters: max-results and max-results-expression Attributes - - The JPA retrieving gateway and inbound adapter now have an attribute to specify the maximum - number of results in a result set as an expression. In addition, the - max-results attribute has been introduced to replace - max-number-of-results, which has been deprecated. - max-results and max-results-expression - are used to provide the maximum number of results, - or an expression to compute the maximum number of results, respectively, in the - result set. - For more information see . + Web Service Outbound Gateway 'uri' attribute now supports <uri-variable/> substitution for all + URI-schemes supported by Spring Web Services. For more information see .
@@ -675,20 +546,137 @@ For more information, see .
-
- Persistent File List Filters (file, (S)FTP) +
+ Advising Filters - New FileListFilters that use a persistent MetadataStore are - now available. These can be used to prevent duplicate files after a system restart. See - , , and for more information. + Previously, when a <filter/> had a <request-handler-advice-chain/>, the discard + action was all performed within the scope of the advice chain (including any downstream flow + on the discard-channel). The filter element now has an attribute + discard-within-advice (default true), to allow the discard action to + be performed after the advice chain completes. See .
-
- Scripting Support: Variables Changes +
+ Advising Endpoints using Annotations - A new variables attribute has been introduced for scripting components. - In addition, variable bindings are now allowed for inline scripts. - See and for more information. + Request Handler Advice Chains can now be configured using annotations. See + . + +
+
+ ObjectToStringTransformer Improvements + + This transformer now correctly transforms byte[] and char[] + payloads to String. For more information see . + +
+
+ JPA Support Changes + + Payloads to persist or + merge can now be of type + java.lang.Iterable. + + + In that case, each object returned by the + Iterable is treated as + an entity and persisted or merged using the underlying + EntityManager. + NULL values returned by the iterator are ignored. + + + The JPA adapters now have additional attributes to optionally 'flush' and 'clear' + entities from the associated persistence context after performing persistence operations. + + + Retrieving gateways had no mechanism to specify the first record to be retrieved which + is a common use case. The retrieving gateways now support specifying this parameter + using a first-result and first-result-expression attributes + to the gateway definition. . + + + The JPA retrieving gateway and inbound adapter now have an attribute to specify the maximum + number of results in a result set as an expression. In addition, the + max-results attribute has been introduced to replace + max-number-of-results, which has been deprecated. + max-results and max-results-expression + are used to provide the maximum number of results, + or an expression to compute the maximum number of results, respectively, in the + result set. + + For more information see . +
+
+ Delayer: delay expression + + Previously, the <delayer> provided a delay-header-name attribute + to determine the delay value at runtime. In complex cases it was necessary + to precede the <delayer> with a <header-enricher>. + Spring Integration 3.0 introduced the expression attribute and expression + sub-element for dynamic delay determination. The delay-header-name attribute is now deprecated + because the header evaluation can be specified in the expression. In addition, + the ignore-expression-failures was introduced to control the behavior when an + expression evaluation fails. + For more information see . + +
+
+ JDBC Message Store Improvements + + Spring Integration 3.0 adds a new set of DDL + scripts for MySQL version 5.6.4 and higher. + Now MySQL supports fractional + seconds and is thus improving the FIFO ordering when + polling from a MySQL-based Message Store. For more information, + please see . + +
+
+ IMAP Idle Connection Exceptions + + Previously, if an IMAP idle connection failed, it was logged but there was no mechanism to + inform an application. Such exceptions now generate ApplicationEvents. + Applications can obtain these events using an <int-event:inbound-channel-adapter> + or any ApplicationListener configured to receive an + ImapIdleExceptionEvent or one of its super classes. + +
+
+ Message Headers and TCP + + The TCP connection factories now enable the configuration of a flexible mechanism to + transfer selected headers (as well as the payload) over TCP. A new + TcpMessageMapper + enables the selection of the headers, and an appropriate (de)serializer needs to be + configured to write the resulting Map to the + TCP stream. A MapJsonSerializer is provided as a convenient + mechanism to transfer headers and payload over TCP. + For more information see . + +
+
+ JMS Message Driven Channel Adapter + + Previously, when configuring a <message-driven-channel-adapter/>, if you wished to + use a specific TaskExecutor, it was necessary to declare a container + bean and provide it to the adapter using the container attribute. The + task-executor is now provided, allowing it to be set directly on the adapter. This is + in addition to several other container attributes that were already available. + +
+
+ RMI Inbound Gateway + + The RMI Inbound Gateway now supports an error-channel attribute. See + . + +
+
+ XsltPayloadTransformer + + You can now specify the transformer factory class name using the + transformer-factory-class attribute. See