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 .
-
-
-
@@ -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 .
+
+
+
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 .
-
-
HTTP Endpoint Changes
@@ -450,22 +271,23 @@
For more information see .
-
- AMQP Outbound Gateway Header Mapping
+
@@ -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.
-