326 lines
16 KiB
XML
326 lines
16 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="migration-2.0-2.1"
|
|
xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>Changes between 2.0 and 2.1</title>
|
|
<section id="2.1-new-components">
|
|
<title>New Components</title>
|
|
<section id="2.1-new-scripting-support">
|
|
<title>JSR-223 Scripting Support</title>
|
|
<para>
|
|
In Spring Integration 2.0, support for
|
|
<ulink url="http://groovy.codehaus.org/">Groovy</ulink> was added. With
|
|
Spring Integration 2.1 we expanded support for additional languages
|
|
substantially by implementing support for
|
|
<ulink url="http://www.jcp.org/en/jsr/detail?id=223">JSR-223</ulink>
|
|
(Scripting for the Java™ Platform). Now you have the
|
|
ability to use any scripting language that supports JSR-223 including:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>Javascript</listitem>
|
|
<listitem>Ruby/JRuby</listitem>
|
|
<listitem>Python/Jython</listitem>
|
|
<listitem>Groovy</listitem>
|
|
</itemizedlist>
|
|
<para>
|
|
For further details please see <xref linkend="scripting"/>.
|
|
</para>
|
|
</section>
|
|
<section id="2.1-new-gemfire-support">
|
|
<title>GemFire Support</title>
|
|
<para>
|
|
Spring Integration provides support for
|
|
<ulink url="http://www.vmware.com/products/vfabric-gemfire/overview.html">GemFire</ulink> by providing
|
|
inbound adapters for entry and continuous query events, an outbound
|
|
adapter to write entries to the cache, and
|
|
<ulink url="http://static.springsource.org/spring-integration/api/org/springframework/integration/store/MessageStore.html">
|
|
<interfacename>MessageStore</interfacename></ulink> and
|
|
<ulink url="http://static.springsource.org/spring-integration/api/org/springframework/integration/store/MessageGroupStore.html">
|
|
<interfacename>MessageGroupStore</interfacename></ulink>
|
|
implementations. Spring integration leverages
|
|
the <ulink url="http://www.springsource.org/spring-gemfire"><emphasis>Spring Gemfire</emphasis></ulink> project, providing a thin wrapper over its
|
|
components.
|
|
</para>
|
|
<para>
|
|
For further details please see <xref linkend="gemfire"/>.
|
|
</para>
|
|
</section>
|
|
<section id="2.1-new-amqp-support">
|
|
<title>AMQP Support</title>
|
|
<para>
|
|
Spring Integration 2.1 adds several Channel Adapters for receiving and
|
|
sending messages using the
|
|
<ulink url="http://www.amqp.org/"><emphasis>Advanced Message Queuing Protocol</emphasis></ulink> (AMQP).
|
|
Furthermore, Spring Integration also provides a point-to-point
|
|
Message Channel, as well as a publish/subscribe Message Channel
|
|
that are backed by AMQP Exchanges and Queues.
|
|
</para>
|
|
<para>
|
|
For further details please see <xref linkend="amqp"/>.
|
|
</para>
|
|
</section>
|
|
<section id="2.1-new-mongodb-support">
|
|
<title>MongoDB Support</title>
|
|
<para>
|
|
As of version 2.1 Spring Integration provides support for
|
|
<ulink url="http://www.mongodb.org/">MongoDB</ulink>
|
|
by providing a MongoDB-based MessageStore.
|
|
</para>
|
|
<para>
|
|
For further details please see <xref linkend="mongodb"/>.
|
|
</para>
|
|
</section>
|
|
<section id="2.1-new-redis-support">
|
|
<title>Redis Support</title>
|
|
<para>
|
|
As of version 2.1 Spring Integration supports
|
|
<ulink url="http://redis.io/">Redis</ulink>, an advanced key-value
|
|
store, by providing a Redis-based MessageStore as well as
|
|
Publish-Subscribe Messaging adapters.
|
|
</para>
|
|
<para>
|
|
For further details please see <xref linkend="redis"/>.
|
|
</para>
|
|
</section>
|
|
<section id="2.1-new-resource-support">
|
|
<title>Support for Spring's Resource abstraction</title>
|
|
<para>
|
|
As of version 2.1, we've introduced a new <emphasis>Resource Inbound Channel Adapter</emphasis> that builds upon
|
|
Spring's Resource abstraction to support greater flexibility across a variety of actual types of
|
|
underlying resources, such as a file, a URL, or a class path resource. Therefore, it's similar to but
|
|
more generic than the <emphasis>File Inbound Channel Adapter</emphasis>.
|
|
</para>
|
|
<para>
|
|
For further details please see <xref linkend="resource-inbound-channel-adapter"/>.
|
|
</para>
|
|
</section>
|
|
<section id="2.1-new-stored-proc-support">
|
|
<title>Stored Procedure Components</title>
|
|
<para>
|
|
With Spring Integration 2.1, the <code>JDBC</code> Module also provides
|
|
Stored Procedure support by adding several new components, including
|
|
inbound/outbound channel adapters and an Outbound Gateway. The Stored
|
|
Procedure support leverages Spring's
|
|
<ulink url="http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/jdbc/core/simple/SimpleJdbcCall.html"><classname>SimpleJdbcCall</classname></ulink>
|
|
class and consequently supports stored procedures for:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>Apache Derby</listitem>
|
|
<listitem>DB2</listitem>
|
|
<listitem>MySQL</listitem>
|
|
<listitem>Microsoft SQL Server</listitem>
|
|
<listitem>Oracle</listitem>
|
|
<listitem>PostgreSQL</listitem>
|
|
<listitem>Sybase</listitem>
|
|
</itemizedlist>
|
|
<para>
|
|
The Stored Procedure components also support Sql Functions for
|
|
the following databases:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>MySQL</listitem>
|
|
<listitem>Microsoft SQL Server</listitem>
|
|
<listitem>Oracle</listitem>
|
|
<listitem>PostgreSQL</listitem>
|
|
</itemizedlist>
|
|
<para>
|
|
For further details please see <xref linkend="stored-procedures"/>.
|
|
</para>
|
|
</section>
|
|
<section id="2.1-new-xpath-filter-support">
|
|
<title>XPath and XML Validating Filter</title>
|
|
<para>
|
|
Spring Integration 2.1 provides a new XPath-based Message Filter,
|
|
that is part of the <code>XML</code> module. The XPath Filter
|
|
allows you to filter messages using provided XPath Expressions.
|
|
|
|
Furthermore, documentation was added for the XML Validating Filter.
|
|
</para>
|
|
<para>
|
|
For more details please see <xref linkend="xml-xpath-filter"/>
|
|
and <xref linkend="xml-validating-filter"/>.
|
|
</para>
|
|
</section>
|
|
<section id="2.1-new-payload-enricher-support">
|
|
<title>Payload Enricher</title>
|
|
<para>
|
|
Since Spring Integration 2.1, the Payload Enricher is provided. A
|
|
Payload Enricher defines an endpoint that typically passes a
|
|
<ulink url="http://static.springsource.org/spring-integration/api/org/springframework/integration/Message.html"><interfacename>Message</interfacename></ulink>
|
|
to the exposed request channel and then expects a reply message.
|
|
The reply message then becomes the root object for evaluation of
|
|
expressions to enrich the target payload.
|
|
</para>
|
|
<para>
|
|
For further details please see <xref linkend="payload-enricher"/>.
|
|
</para>
|
|
</section>
|
|
<section id="2.1-new-ftp-outbound-gateway">
|
|
<title>FTP and SFTP Outbound Gateways</title>
|
|
<para>
|
|
Spring Integration 2.1 provides two new Outbound Gateways in order
|
|
to interact with remote File Transfer Protocol (FTP) or
|
|
Secure File Transfer Protocol (SFT) servers. These two gateways allow
|
|
you to directly execute a limited set of remote commands.
|
|
</para>
|
|
<para>
|
|
For instance, you can use these Outbound Gateways to list, retrieve and
|
|
delete remote files and have the Spring Integration message flow
|
|
continue with the remote server's response.
|
|
</para>
|
|
<para>
|
|
For further details please see <xref linkend="ftp-outbound-gateway"/>
|
|
and <xref linkend="sftp-outbound-gateway"/>.
|
|
</para>
|
|
</section>
|
|
<section id="2.1-new-ftp-session-caching">
|
|
<title>FTP Session Caching</title>
|
|
<para>
|
|
As of version 2.1, we have exposed more flexibility with regards to
|
|
session management for remote file adapters (e.g., FTP, SFTP etc).
|
|
</para>
|
|
<para>
|
|
Specifically, the <code>cache-sessions</code> attribute, which is
|
|
available via the XML namespace support, is now
|
|
<emphasis>deprecated</emphasis>. Alternatively, we added the
|
|
<code>sessionCacheSize</code> and <code>sessionWaitTimeout</code>
|
|
attributes on the <classname>CachingSessionFactory</classname>.
|
|
</para>
|
|
<para>
|
|
For further details please see <xref linkend="ftp-session-caching"/>
|
|
and <xref linkend="sftp-session-caching"/>.
|
|
</para>
|
|
</section>
|
|
|
|
</section>
|
|
<section id="2.1-framework-refactorings">
|
|
<title>Framework Refactoring</title>
|
|
<section id="2.1-router-standardization">
|
|
<title>Standardizing Router Configuration</title>
|
|
<para>
|
|
Router parameters have been standardized across all router
|
|
implementations with Spring Integration 2.1 providing a more
|
|
consistent user experience.
|
|
</para>
|
|
<para>
|
|
With Spring Integration 2.1 the <code>ignore-channel-name-resolution-failures</code>
|
|
attribute has been removed in favor of consolidating its behavior
|
|
with the <code>resolution-required</code> attribute. Also,
|
|
the <code>resolution-required</code> attribute now defaults to <code>true</code>.
|
|
</para>
|
|
<para>
|
|
Starting with Spring Integration 2.1, routers will no longer silently
|
|
drop any messages, if no default output channel was defined. This means,
|
|
that by default routers now require at least one resolved channel (if no
|
|
<code>default-output-channel</code> was set) and
|
|
by default will throw a <classname>MessageDeliveryException</classname>
|
|
if no channel was determined (or an attempt to send was not successful).
|
|
</para>
|
|
<para>
|
|
If, however, you do desire to drop messages silently, simply set
|
|
<code>default-output-channel="nullChannel"</code>.</para>
|
|
<important>
|
|
With the standardization of Router parameters and the consolidation
|
|
of the parameters described above, there is the possibility of
|
|
breaking older Spring Integration based applications.
|
|
</important>
|
|
<para>
|
|
For further details please see <xref linkend="router"/>
|
|
</para>
|
|
</section>
|
|
<section id="2.1-schema-updated">
|
|
<title>XML Schemas updated to 2.1</title>
|
|
<para>
|
|
Spring Integration 2.1 ships with an updated XML Schema (version 2.1),
|
|
providing many improvements, e.g. the Router standardizations
|
|
discussed above.
|
|
</para>
|
|
<para>
|
|
From now on, users <emphasis>must</emphasis> always declare the
|
|
latest XML schema (currently version 2.1). Alternatively, they can
|
|
use the version-less schema. Generally, the best option is to
|
|
use version-less namespaces, as these will automatically use the
|
|
latest available version of Spring Integration.
|
|
</para>
|
|
<para>
|
|
Declaring a version-less Spring Integration namespace:
|
|
</para>
|
|
<programlisting language="xml"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
|
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xmlns:int="http://www.springframework.org/schema/integration"
|
|
xsi:schemaLocation="http://www.springframework.org/schema/integration
|
|
http://www.springframework.org/schema/integration/spring-integration.xsd
|
|
http://www.springframework.org/schema/beans
|
|
http://www.springframework.org/schema/beans/spring-beans.xsd">
|
|
...
|
|
</beans>]]></programlisting>
|
|
|
|
<para>
|
|
Declaring a Spring Integration namespace using an explicit version:
|
|
</para>
|
|
|
|
<programlisting language="xml"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
|
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xmlns:int="http://www.springframework.org/schema/integration"
|
|
xsi:schemaLocation="http://www.springframework.org/schema/integration
|
|
http://www.springframework.org/schema/integration/spring-integration-2.2.xsd
|
|
http://www.springframework.org/schema/beans
|
|
http://www.springframework.org/schema/beans/spring-beans.xsd">
|
|
...
|
|
</beans>]]></programlisting>
|
|
|
|
|
|
<para>
|
|
The old 1.0 and 2.0 schemas are still there, but if an Application
|
|
Context still references one of those deprecated schemas, the validator
|
|
will fail on initialization.
|
|
</para>
|
|
</section>
|
|
</section>
|
|
<section id="2.1-source-control-infrastructure">
|
|
<title>Source Control Management and Build Infrastructure</title>
|
|
<section id="2.1-move-to-github">
|
|
<title>Source Code now hosted on Github</title>
|
|
<para>
|
|
Since version 2.0, the Spring Integration project uses <ulink url="http://git-scm.com/">Git</ulink> for
|
|
version control. In order to increase community visibility even
|
|
further, the project was moved from SpringSource hosted Git
|
|
repositories to <ulink url="http://www.github.com/">Github</ulink>.
|
|
The Spring Integration Git repository is located at:
|
|
<ulink url="https://github.com/SpringSource/spring-integration/"/>
|
|
</para>
|
|
<para>
|
|
For the project we also improved the process of providing code
|
|
contributions and we ensure that every commit is peer-reviewed.
|
|
In fact, core committers now follow the same process as contributors.
|
|
For more details please see:
|
|
</para>
|
|
<para><ulink url="https://github.com/SpringSource/spring-integration/wiki/Contributor-Guidelines"/></para>
|
|
</section>
|
|
<section id="2.1-sonar">
|
|
<title>Improved Source Code Visibility with Sonar</title>
|
|
<para>
|
|
In an effort to provide better source code visibility and consequently
|
|
to monitor the quality of Spring Integration's source code, an instance
|
|
of <ulink url="http://www.sonarsource.org/">Sonar</ulink> was setup
|
|
and metrics are gathered nightly and made avaiblable at:
|
|
</para>
|
|
<para><ulink url="https://sonar.springsource.org/"/></para>
|
|
</section>
|
|
</section>
|
|
|
|
<section id="2.1-new-samples">
|
|
<title>New Samples</title>
|
|
<para>
|
|
For the 2.1 release of Spring Integration we also expanded the Spring
|
|
Integration Samples project and added many new samples, e.g. samples
|
|
covering AMQP support, the new payload enricher, a sample illustrating
|
|
techniques for testing Spring Integration flow fragments, as well as
|
|
an example for executing Stored Procedures against Oracle. For details
|
|
please visit:
|
|
</para>
|
|
<para><ulink url="https://github.com/SpringSource/spring-integration-samples"/></para>
|
|
</section>
|
|
</section>
|