forked from spring-projects/spring-integration
/
changes-2.0-2.1.xml
325 lines (318 loc) · 16.1 KB
/
changes-2.0-2.1.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
<?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/application-platform/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>