Add general capability to advise just the handleRequestMessage part of an AbstractReplyProducingMessageHandler. This is to advise just the immediate operation, and not the entire downstream flow. Uses include: * outbound gateway post processing * adding retry behavior using spring-retry * adding circuit breaker functionality Initial commit for review. Also need to advise simple message handlers (such as file etc) to allow them to post-process file operations with payload.delete(), payload.renameTo(...) etc. INT-2250 Add Circuit Breaker Advice INT-343 Add Retry Advice Stateless and Stateful retry using spring-retry. Stateless means the RetryTemplate performs the retries internally. Stateful means the exception is thrown (e.g. to JMS container) and the retry state is maintained by spring-retry. INT-2215, INT-343, INT-2250 Refactoring Factor out common abstract Advice class. INT-2214 Catch Evaluation Expression Exceptions If an onSuccess expression evaluation fails, add an option so the user can decide whether such an exception is caught, or propagated to the caller. INT-2214 etc PR Review Polishing INT-2214 etc Namespace Core, File, FTP Add <request-handler-advice-chain/> to outbound endpoints. INT-2214 etc. More Namespace Support amqp, event, gemfire, groovy, http, ip, jdbc, jms, jmx, jpa, mail, rmi, sftp, twitter, ws, xmpp INT-2214 etc Polishing PR Review INT-2214 etc Polishing Don't catch Throwable. Move Advice classes to handler.advice package.
Spring Integration
Checking out and Building
To check out the project and build from source, do the following:
git clone git://github.com/SpringSource/spring-integration.git
cd spring-integration
./gradlew build
If you encounter out of memory errors during the build, increase available heap and permgen for Gradle:
GRADLE_OPTS='-XX:MaxPermSize=1024m -Xmx1024m'
To build and install jars into your local Maven cache:
./gradlew install
To build api Javadoc (results will be in build/api):
./gradlew api
To build reference documentation (results will be in build/reference):
./gradlew reference
To build complete distribution including -dist, -docs, and -schema zip files (results will be in build/distributions)
./gradlew dist
Using Eclipse
To generate Eclipse metadata (.classpath and .project files), do the following:
./gradlew eclipse
Once complete, you may then import the projects into Eclipse as usual:
File -> Import -> Existing projects into workspace
Browse to the 'spring-integration' root directory. All projects should import free of errors.
Using IntelliJ IDEA
To generate IDEA metadata (.iml and .ipr files), do the following:
./gradlew idea
OSGI Notes
- Dependency on Third Party Bundles Some adapters depend on third party libraries (bundles). Spring hosts the Enterprise Bundle Repository (EBR) at https://ebr.springsource.com/repository/app/, where you can download many third-party JARs as valid OSGi bundles. If a particular bundle is not available in Spring's EBR, there are tools that can convert a regular JAR to a bundle JAR. One of them is Bundlor http://www.springsource.org/bundlor which can auto-generate an OSGi MANIFEST.MF as part of standard project lifecycle or simply convert a non-bundle JAR to a bundle JAR.
- Boot delegation Some adapters depend on extension packages that are available to the boot class loader. As a case in point, the Feed Adapter depends on com.sun.syndication.feed. Since by default OSGi only loads java.* from the boot class loader, other packages that must be loaded from the boot class loader can therefore be specified with the 'org.osgi.framework.bootdelegation' System property. For example: org.osgi.framework.bootdelegation=com.sun.,org.w3c.. . . .
Resources
For more information, please visit the Spring Integration website at: http://www.springsource.org/spring-integration