Atmosphere Changelog

What's new in Atmosphere 2.4.9

Nov 26, 2016
  • Fixed issues:
  • Servlet Filters applied in random order.

New in Atmosphere 2.4.8 (Nov 10, 2016)

  • Fix for issue #2224: onOpen no longer called after upgrading to 2.4.7
  • ISSUE #2221: Memory leak fix for SimpleDateFormat
  • More compact JSON data for JSONP transport, save 2 bytes for every response
  • Issue #2063: duplicate messages will be overriden with the help of #2216

New in Atmosphere 2.4.6 (Sep 24, 2016)

  • Add an option to reset the completion status when writing multiple responses over AtmosphereResponse
  • Fix exception preventing proper shutdown of Atmosphere.
  • Do not buffer data when using the completion-aware mode of SimpleRestInterceptor in certain situations.

New in Atmosphere 2.4.2 (Jan 6, 2016)

  • Avoid throwing JSR356 exception in modules/cpr unit tests
  • Some improvement for class loading detection
  • Add a configurable option to suppress detecting JSR356
  • Add some classes to 2.4.x and 2.3.x to make the changes less visible

New in Atmosphere 2.3.4 (Aug 6, 2015)

  • Use two-step write so Tomcat correctly reports a dead connection
  • ManagedAtmosphereHandler bypass the @Message method for the second broadcasted message
  • ConcurrentModificationException in WebSocket.shiftAttributes method
  • - cleaned up / fixed cache handling in DefaultBroadcaster
  • Shiro + Tomcat 8 websocket (JSR356
  • messages cached to wrong clients when broadcasting to subset (UUIDBroadcasterCache)

New in Atmosphere 2.3.3 (Jul 4, 2015)

  • messages cached to wrong clients when broadcasting to subset (UUIDBroadcasterCache)
  • Jetty 9.3 and Atmosphere do not play nicely together
  • @ManagedService unexpected behaviour with DeliverTo.DELIVER_TO.RESOURCE over long-polling
  • atmosphere-jersey @Suspend(writeEntity=false) not working

New in Atmosphere 2.3.2 (Jun 23, 2015)

  • atmosphere-runtime 2.3.1's bundle manifest does not mark CDI dependency as optional
  • [META-INF/services] broken for WebSocketProcessor and WebSocketProtocol
  • If AtmosphereFramework.isInit return true, execute immediately the StartupHook
  • Atmosphere 2.3.1: NPE on JSR356Endpoint close event
  • Invalid lookup class org.atmosphere.plugin.hazelcast.HazelcastBroadcaster. Cached class is: org.atmosphere.cpr.DefaultBroadcaster
  • Add support for WebSocketFactory
  • java.lang.IllegalStateException: No SessionManager in Atmosphere-2.3.1 with some jetty
  • Use ServiceLoader for loading Injectable instance
  • [Regression] PostConstruct called twice
  • ManagedAtmosphereHandler should not try to re-encode if no BroadcasterFilter are defined
  • @DeliverTo(DELIVER_TO.RESOURCE) does not work at all

New in Atmosphere 2.3.1 (May 9, 2015)

  • Small issue with Atmosphere on Websphere Liberty when shutting down the server.
  • Provide error page support
  • Add Support for ForkJoinPool when jdk7+ is used
  • Allow injection of declared and parent methods and fields.
  • Prevent NPE.
  • Possible NPE on close
  • AtmosphereSession: treat long-polling resources as single-use
  • Warn user when more than one WebSocketProcessor are defined.
  • Concurrency issue in WebSocket's write operation
  • Expose PIng/Pong Message API
  • Allow WebSocket to go through when only AtmosphereInterceptor are defined
  • NPE when no annotation defined
  • Current Version check done in AtmosphereFramework is wrong

New in Atmosphere 2.2.5 (Feb 7, 2015)

  • [Tomcat] Improve logging for IOException: java.net.SocketException: Broken pipe exceptions.
  • atmosphere WebSocket not using the right Response?
  • Not closing the WebSocket when closing ServletOutputStream returned by AtmosphereResponse.getOutputStream().
  • [jsr356] Wrong path calculation for servletContext == /*
  • [AtmosphereResourceStateRecover] Must not re-add filtered messages.
  • [AtmosphereResourceStateRecover] onSuspend must be called independently of the transport.
  • The AtmosphereResponse only return the header from its own "headers" map.
  • [Tomcat 7.x only] Reloading the servlet context (tomcat 7) does not close all active web sockets.
  • Default Serializer configuration isn't used by Meteor.
  • [jersey] JSONP is broken with rest-chat sample.
  • [Native] META-SERVICE missing.
  • [OSGi] MeteorServlet.init() - two calls to delegate servlet init() method.

New in Atmosphere 2.2.3 (Oct 13, 2014)

  • [JBossWeb] Prevent java.lang.IllegalStateException: Request object no longer valid when completing the request
  • [Heartbeat][enableXDR][IE] Allow changing padding bytes, in 2.3, change whitespace to 'X'
  • [WebSocket] onOpen called with wrong UUID on reconnect
  • Deadlock issue related to DefaultBroadcaster and OnDisconnectInterceptor 2.0.10
  • [JBossWeb] Messages are lost in long-polling when Heartbeat occurs at the same time a message arrives
  • [WebSphere] NPE on HttpServletRequest.getAttribute
  • Problem with WeblogicWebSocketHandler

New in Atmosphere 2.2.1 (Sep 11, 2014)

  • [Spring Boot] Atmosphere can't scan its annotations when packaged into an executable WAR file
  • Prevent AtmosphereInterceptor from being added more than once
  • AnnotationDetector doesn't understand all VFS protocols
  • RFE: Configure default Serializer
  • HeartbeatInterceptor should use out of scope Request/Response
  • ManagedAtmosphereHandler methods for resume and timeout
  • DefaultBroadcaster doesn't cleanup cache on broadcaster destroy
  • [OSGI] Annotation Scanning Broken

New in Atmosphere 2.2.0 (Jul 22, 2014)

  • Long-polling doesn't work on JBoss EAP 6.1 with APR (native support)
  • Force Resume on undetected disconnect for AtmosphereResource caused by broken clients
  • [heartbeat] Allow configuring if long-polling resume or not
  • @DeliverTo annotation for methods annotated with @Ready and @Message
  • Javascript (2.2.2) close() submission with different session ID
  • Disconnect Handler is called twice with JSR 356 in Tomcat 7
  • [curl issue] UUIDBroadcastCache and timeout/severed connections with Jersey
  • Infinite session timeout on Tomcat crashes AtmosphereResourceLifecycleInterceptor
  • [Tomcat] NIO error when the websocket is closed
  • [Tomcat] Tomcat call onClose several time when it fail to detect the connection is down
  • [Tomcat8] Jersey2 sample broken
  • [Tomcat] Possible NPE on close
  • [Jetty] X-Atmosphere-WebSocket-Proxy=true breaks Jetty 9.2.x
  • [Heartbeat] write operation must be synchronized
  • [Tomcat7] request.isAsyncEnabled() broken
  • onReady doesn't get called anymore when SuspendTrackerInterceptor is installed.
  • [SuspendTrackerInterceptor] Regression for long-polling
  • [Undertow] Undertow consider Headers are case sensitive causing NPE
  • [Firefox] Wrong closing logic in DefaultWebSocketProcessor
  • [Glassfish] Workaround Issue GRIZZLY-1676
  • [WebSocketHandler] Interceptor not called for websocket messages
  • [SuspendTrackerInterceptor] Possible leak is AtmosphereResource.resume() is called
  • [annotation] Scan all classes when getRealPath return null
  • [Webstart] Annotation Scanning Broken
  • Exception when war is not unpacked
  • [websocket] Tomcat goes in limbo when an evil load balancer close the connection
  • [Servlet30] Force BlockingIO if async-support missing in web.xml
  • Allow UUIDBroadcasterCache configuration of clientIdleTime and invalidateCacheInterval

New in Atmosphere 2.1.7 (Jul 11, 2014)

  • Atmosphere Broadcasters' Version
  • Infinite session timeout on Tomcat crashes AtmosphereResourceLifecycleInterceptor
  • [Tomcat8] Jersey2 sample broken
  • [Tomcat] Possible NPE on close

New in Atmosphere 2.1.5 (May 31, 2014)

  • [BroadcasterLIfeCyclePolicy] Timeout fires after twice the time
  • [Firefox] Wrong closing logic in DefaultWebSocketProcessor
  • [jsr356] Workaround https://java.net/jira/browse/WEBSOCKET_SPEC-228
  • [Glassfish] Workaround Issue GRIZZLY-1676
  • [SuspendTrackerInterceptor] Possible leak is AtmosphereResource.resume() is called
  • [annotation] Scan all classes when getRealPath return null
  • Atmosphere Servlet not starting in Weblogic 10.3.0
  • [Regression] Interceptor fail to install when detected from external dependecies
  • [Regression] AbstractBroadcasterProxy throw a Runtime exception
  • Exception when war is not unpacked
  • [Servlet30] For BlockingIO if async-support missing in web.xml
  • noOpsResource field in DefaultBroadcaster

New in Atmosphere 2.1.4 (May 6, 2014)

  • Allow UUIDBroadcasterCache configuration of clientIdleTime and invalidateCacheInterval
  • [jersey] runtime error about org.atmosphere.util.AbstractBroadcasterProxy's constructor method
  • [websocket ] SuspendTrackerInterceptor leaks UUID
  • Failed to start on weblogci 12.1.2.0.0
  • Remove message ID from clientQueue when clearing the message from the cache
  • Messages ids not deleted from UUIDBroadcasterCache
  • TrackMessageSizeInterceptor called multiple time

New in Atmosphere 2.1.3 (Apr 15, 2014)

  • Bug fixes:
  • getInputStream/Reader confused when an AtmosphereResquest.Body is used
  • Add support for @PathVariable annotation in ManagedService
  • wrong version range of catalina in atmosphere-runtime bundle
  • [websocket] [jsr356] Issue with /* mappin
  • wrong version range of catalina in atmosphere-runtime bundle

New in Atmosphere 2.0.7 (Jan 21, 2014)

  • Duplicate Broadcasters Created
  • [jsr356] Message can be lost if websocket closed
  • [annotation] BroadcasterCache defined too late
  • o.a.c.CometSupport.maxInactiveActivity not working OK in 2.0.6 with long-polling
  • [regression] Heartbeat interceptors creates too many inner classes
  • .lookup() synchronization on strings (or .equal objects)

New in Atmosphere 2.0.6 (Jan 15, 2014)

  • [jetty 9.1.1] ava.lang.NoClassDefFoundError: org/eclipse/jetty/websocket/api/io/WebSocketBlockingConnection
  • [UUIDBroadcasterCache] Possible minor leak when the cache is invalidated
  • Prevent Broadcaster from throwing java.lang.IllegalStateException: Request object no longer valid. This object has been cancelled
  • QueryString with value of '=' not parsed properly
  • Possible Concurrent Issue with AtmosphereStateRecovery Interceptor
  • Prevent AtmosphereInterceptor from crashing each others

New in Atmosphere 2.0.5 (Dec 19, 2013)

  • Backport JSONP encoding fixes
  • [regression] ManagedService.broadcasterCache broken
  • WebSocket draft-00 / hixie-76 doesn't work when request headers are attached in the query string
  • [websocket] Make sure parent's UUID resource is always removed from Broadcaster
  • Allow configuring which WebSocket versions Jetty 7/8 should accept Enhancement
  • [websocket] AtmosphereHandler not invoked when WebSocket is closed and enableProtocol == false
  • TrackMessageSizeInterceptor's AsyncIOInterceptorAdapter should be executed before eg. JSONPAtmosphereInterceptor

New in Atmosphere 2.0.4 (Nov 26, 2013)

  • [Servlet30] AsyncContext.complete() must be called in timeout
  • [regression] Broadcaster.broadcastOnResume(OBJ)
  • [Jboss EAP 5.1.0] ClassCastException on deployment
  • [websocket] OnDisconnectInterceptor broken
  • Meteor+Struts2: X-Atmosphere-tracking-id - BigDecimal cannot be cast to java.lang.String
  • [Tomcat] [websocket] Tomcat send wrong opcode when an exception happens inside onOpen
  • [websocket] Possible thread race when wildcard mapping is used and fast broadcasting
  • Atmosphere cannot scan annotations on JBoss 5.1

New in Atmosphere 2.0.3 (Oct 12, 2013)

  • Performance regression with WebSocket and 2.0.2
  • [runtime] Allow Listeners to handle a resumed connection BEFORE the connection is resumed
  • @ManagedService - auto broadcast executed unless @Message defined
  • [regression] [jsr356] Jersey broken with latest jsr356 implementation
  • [AtmosphereResourceLifecyleInterceptor] Add timeout support Enhancement
  • [Undertow/GlassFish4] JSR-356 Support is broken since 2.0.1
  • [AtmosphereResourceStateRecovery] java.util.ConcurrentModificationException

New in Atmosphere 2.0.2 (Oct 7, 2013)

  • Adding Programmatically AtmosphereInterceptor doesn't call the configure method
  • NPE with HeaderBroadcasterCache
  • [Graddle] Fallback to manual annotation scanning
  • @ManagedService object confusion
  • [websocket] If server times out the websocket, padding must be sent back Workaround Available
  • [dropWizard] Enable all classes scanning causes null pointer exception in org.atmosphere.cpr.AtmosphereFramework.setDefaultBroadcasterClassName()
  • AtmosphereResponse.addCookie() issue. Workaround Available
  • AtmosphereFramework.configureQueryStringAsRequest fails

New in Atmosphere 2.0.1 (Sep 27, 2013)

  • NPE in GrizzlyCometSupport.resume()
  • Wrong media type reported to Jersey
  • [jsr356] Session, Principal and Headers aren't set.
  • Turn off jsr356 by default
  • Applying filters to cached messages in AtmosphereResourceStateRecovery
  • Fix Tomcat 7.0.43 WebSocket runtime changes with JDK 6

New in Atmosphere 2.0.0 (Sep 20, 2013)

  • I/O Frameworks and Servers:
  • Atmosphere can now be deployed with Nettophere, Play! Framework and Vert.x. Atmosphere 2.0 also support WebSockets on JBoss 7.2.x and Wildfly's newly Servlet Container Undertow. Apache Tomcat 5 to 8, Jetty 6 to 9.1, GlassFish 2 to 4, Resin 3 to 4, JBoss 5 to the upcoming Wildfly, WebLogic 10 and 12, WebSphere 7 and up all of them works OUT OF THE BOX. Atmosphere 2.0 always picks the best configuration available, transparently.
  • Scary number of Frameworks supported:
  • Atmosphere 2.0 is natively supported in PrimeFaces, Wicket, Grails (in two favor!), Spring's Reactor, GWT, Jersey, Scalatra, Vaadin, RichFaces, Portal/Portal Java, Apache Tuscany, Apache Tapestry (coming soon) etc.
  • Atmosphere 2.0 also can be used with any Servlet based framework like RestEasy, Apache CFX, Apache Wink, framework like Akka, Cometd, Socket.IO, distributed solutions like Hazelcast, Redis, JGroups, JMS for extreme scaling!
  • Google 'Atmosphere + framework_name' for more information.
  • JSR 356: Java API for WebSocket:
  • Atmosphere 2.0 natively jsr 356 and will use it when available. Current supported servers are GlassFish 4.x, Tomcat 8.0.0-RC3 and Jetty 9.1.0.Mx
  • JSR 339: Java API for RESTful Services (JAX-RS2):
  • JAX-RS2 ships with a new asynchronous API ... without support for WebSocket!! Atmosphere 2.0 transparently brings WebSocket to JAX-RS2 implementation like Jersey 2 and RestEasy 3
  • JavaScript Client: You have choice! Node.js included:
  • Atmosphere 2.0 now ships with a pure Javascript Client, and with a JQuery Plug In. Our Javascript client also supports Node.js!!
  • JVM Client: wAsync: Android, Node.js and Atmosphere altogether:
  • Atmosphere 2.0 now ships with a new Java based Client called wAsync. Wasync supports Android, Node.jas and Atmosphere.
  • @Service Annotations: Use, create or inject your own annotation:
  • Atmosphere 2.0 now offers several annotations to make the development cycle super simple.
  • You can now delegate annotation processing to framework like Spring or Guice, and event creates your own annotations!
  • Many many more changes:
  • Improved BroadcasterCache, State Recovery after a network outage, Heart Beat Support for Proxy lover, GWT support completely re-written are amongst the new features. Hundreds and Hundreds of bugs fixed, new features, etc. Surf our Change logs