* Add Lightweight WebSocket Server Support
* Run WebSocketServerTests and open ws.html in a browser.
- Sending 'start' begins sending an incrementing # once per second.
- 'stop' stops the stream (leaving the socket open), 'start' resumes again.
- Test terminates after 60 seconds.
* Fixes and Improvements for WebSocket Server
- fix masking
- fix bytes sent
- add error handling to remove dead sockets
- create new web page instead of using vert.x example
- add status box
- automatically update message to send to start/stop appropriately
- update SI to 2.2.0.RELEASE
- change test to a main()
* Use Interceptor for Handshake
* Move handshake to an interceptor instead of doing it in the SI flow.
* Add close button to web page.
* Add code to remove state from deserializer on close.
* Implement Orderly Close Per RFC6455
* Rename Packages - org.springframework.integration.x.*
* Change Version to 0.1.0.
* Autbahn Test Suite - All Tests Pass
- 1.1.x tests from the Autobahn Test Suite.
- Autobahn 1.2.x Tests (Binary)
- Autobahn Test 2.* (Ping/Pong)
- Autobahn Tests 3.* (Reserved Bits)
- Autobahn Tests 4.* (Invalid Opcodes)
- Autobahn 5.* (Fragmentation)
- Autobahn 6.* (UTF-8 Handling)
- Autobahn Tests 7.* (Close Handling)
* "non-strict" results - fast fail on bad UTF-8. We currently don't detect the bad UTF-8 until all fragments are received.
* Run AutobahnTests.java and add the following to fuzzingclient.json...
{"agent": "SIServer", "url": "ws://localhost:18080", "options": {"version": 18}}
* Remove sysout
* Replace with logger.debug().
* Remove SockJS Dependencies
- Project started as a SockJS client; WebSocket classes were incorrectly dependent on some SockJS code.
* Extracted the WebSocket code to its own class hierarchy.
* Test Autobahn with SSL (wss://...)
- Add trust store and key store.
- Add config to listen for wss: as well as ws: connections
* To test Autobahn for both ws and wss - In the wstest config file use:
"servers": [
{"agent": "SIServer", "url": "ws://localhost:18080", "options": {"version": 18}},
{"agent": "SIServerSSL", "url": "wss://localhost:28080", "options": {"version": 18}}
],
* Polishing + Resequence when Using NIO
- Improve debug logging
- Clear fragments
- Add ResequencingMessageHandler to resequence messages when using NIO (frames can arrive on different threads, out of order; this causes issues with the Autobahn tests.
* Reject Non WS Connections
- only apply Resequencer if NIO Connection factory is configured with apply-sequence.
- check protocol version - only 13 is supported.
Spring Integration Extensions
The Spring Integration Extensions project provides extension modules for Spring Integration. This project is part of the SpringSource organization on GitHub.
Available Modules
- SMB Support
- Print Support
- Atmosphere Support (Websockets)
- XQuery Support
- Splunk Support
Getting support
Check out the Spring Integration forums and the spring-integration tag on Stack Overflow. Commercial support is available too.
Related GitHub projects
- Spring Integration
- Spring Integration Samples
- Spring Integration Templates
- Spring Integration Dsl Groovy
- Spring Integration Dsl Scala
- Spring Integration Pattern Catalog
Issue Tracking
Report issues via the Spring Integration Extensions JIRA.
Building from source
Each module of the Spring Integration Extensions project is hosted as independent project with its own release cycle. For the build process of individual modules we recomend using a Gradle-based build system modelled after the Spring Integration project. Also, the Spring Integration Adapter Template for SpringSource Tool Suite (STS) provides a Gradle-based build system. For more information, please see How to Create New Components.
Therefore, the following build instructions should generally apply for most, if not all, Spring Integration Extensions. In the instructions below, ./gradlew is invoked from the root of the source tree and serves as a cross-platform, self-contained bootstrap mechanism for the build. The only prerequisites are Git and JDK 1.6+.
Check out the sources
git clone git://github.com/SpringSource/spring-integration-extensions.git
Go into the directory of a specific module
cd module-name
Compile and test, build all jars
./gradlew build
Install the modules jars into your local Maven cache
./gradlew install
... and discover more commands with ./gradlew tasks. See also the Gradle build and release FAQ.
Import sources into your IDE
Using Eclipse / STS
When using SpringSource Tool Suite you can directly import Gradle based projects:
File -> Import -> Gradle Project
Just make sure that the Gradle Support for STS is installed. Alternatively, you can also generate the Eclipse metadata (.classpath and .project files) using Gradle:
./gradlew eclipse
Once complete, you may then import the projects into Eclipse as usual:
File -> Import -> Existing projects into workspace
Using IntelliJ IDEA
To generate IDEA metadata (.iml and .ipr files), do the following:
./gradlew idea
Contributing
Pull requests are welcome. Please see the contributor guidelines for details. Additionally, if you are contributing, we recommend following the process for Spring Integration as outlined in the administrator guidelines.
Creating Custom Adapters
In order to simplify the process of writing custom components for Spring Integration, we provide a Template project for SpringSource Tool Suite (STS) version 3.0.0 and greater. This template is part of the [Spring Integation Templates][] project. For more information please read How to Create New Components.
Staying in touch
Follow the Spring Integration team members and contributors on Twitter:
- @m_f_ - Mark Fisher
- @ghillert - Gunnar Hillert
- @z_oleg - Oleg Zhurakousky
- @gprussell - Gary Russell
License
The Spring Integration Extensions Framework is released under version 2.0 of the Apache License unless noted differently for individual extension Modules, but this should be the rare exception.
We look forward to your contributions!!