CXF-5855: Introduce support for Server Sent Events. Initial implementation 
based on Atmosphere


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/23d6d663
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/23d6d663
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/23d6d663

Branch: refs/heads/master-jaxrs-2.1
Commit: 23d6d663febbc397bf64771325f109fc53252cd0
Parents: ecb6eba
Author: reta <drr...@gmail.com>
Authored: Sun Apr 17 21:44:28 2016 -0400
Committer: reta <drr...@gmail.com>
Committed: Thu May 26 17:44:08 2016 -0400

----------------------------------------------------------------------
 .../src/main/release/samples/jax_rs/sse/LICENSE | 619 +++++++++++++++++++
 .../main/release/samples/jax_rs/sse/README.md   |   4 +
 .../src/main/release/samples/jax_rs/sse/pom.xml | 152 +++++
 .../sse/src/main/java/org/apache/sse/Stats.java |  56 ++
 .../java/org/apache/sse/StatsApplication.java   |  44 ++
 .../org/apache/sse/StatsRestServiceImpl.java    |  80 +++
 .../main/java/org/apache/sse/StatsServer.java   |  62 ++
 .../src/main/resources/META-INF/atmosphere.xml  |   6 +
 .../sse/src/main/resources/META-INF/beans.xml   |  10 +
 .../META-INF/cxf/org.apache.cxf.Logger          |   1 +
 .../sse/src/main/resources/log.properties       |   3 +
 .../jax_rs/sse/src/main/resources/logback.xml   |  16 +
 .../sse/src/main/resources/web-ui/index.html    |  49 ++
 .../resources/web-ui/javascripts/highcharts.js  | 270 ++++++++
 .../web-ui/javascripts/jquery-1.9.0.min.js      |   4 +
 distribution/src/main/release/samples/pom.xml   |   1 +
 parent/pom.xml                                  |  17 +-
 rt/rs/pom.xml                                   |   1 +
 rt/rs/sse/pom.xml                               |  70 +++
 .../jaxrs/sse/OutboundSseEventBodyWriter.java   | 139 +++++
 .../cxf/jaxrs/sse/OutboundSseEventImpl.java     | 171 +++++
 .../cxf/jaxrs/sse/SseBroadcasterImpl.java       |  65 ++
 .../cxf/jaxrs/sse/SseEventOutputProvider.java   |  53 ++
 .../org/apache/cxf/jaxrs/sse/SseFeature.java    |  41 ++
 .../SseAtmosphereContextProvider.java           |  57 ++
 .../SseAtmosphereEventOutputImpl.java           | 111 ++++
 .../atmosphere/SseAtmosphereInterceptor.java    | 180 ++++++
 .../SseAtmosphereInterceptorWriter.java         |  30 +
 .../SseAtmosphereResourceContext.java           |  60 ++
 .../cxf/jaxrs/sse/servlet/CXFSseServlet.java    |  41 ++
 30 files changed, 2412 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/23d6d663/distribution/src/main/release/samples/jax_rs/sse/LICENSE
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/sse/LICENSE 
b/distribution/src/main/release/samples/jax_rs/sse/LICENSE
new file mode 100644
index 0000000..9be94f5
--- /dev/null
+++ b/distribution/src/main/release/samples/jax_rs/sse/LICENSE
@@ -0,0 +1,619 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-- activemq-web
+=========================================================================
+== For the behaviour.js library                                        ==
+=========================================================================
+
+Copyright (c) 2005, Ben Nolan
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+    * Neither the name of the Ben Nolan nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=========================================================================
+== For the prototype.js library                                        ==
+=========================================================================
+
+Copyright (c) 2005 Sam Stephenson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+====================================================================
+== Licenses for non-apache libraries included in this assembly    ==
+====================================================================
+
+jetty
+jmdns
+mx4j
+spring
+tanuki wrapper
+xmlpull
+xstream
+
+=========================================================================
+== Jetty is licensed under the Apache License Version 2.0              ==
+=========================================================================
+=========================================================================
+== jmdns is licensed under the Apache License Version 2.0              ==
+=========================================================================
+=========================================================================
+== For the mx4j, mx4j-remote, and mx4j-tools library                   ==
+=========================================================================
+
+         The MX4J License, Version 1.0
+
+         Copyright (c) 2001-2004 by the MX4J contributors.  All rights 
reserved.
+
+         Redistribution and use in source and binary forms, with or without
+         modification, are permitted provided that the following conditions
+         are met:
+
+         1. Redistributions of source code must retain the above copyright
+            notice, this list of conditions and the following disclaimer.
+
+         2. Redistributions in binary form must reproduce the above copyright
+            notice, this list of conditions and the following disclaimer in
+            the documentation and/or other materials provided with the
+            distribution.
+
+         3. The end-user documentation included with the redistribution,
+            if any, must include the following acknowledgment:
+               "This product includes software developed by the
+                MX4J project (http://mx4j.sourceforge.net)."
+            Alternately, this acknowledgment may appear in the software itself,
+            if and wherever such third-party acknowledgments normally appear.
+
+         4. The name "MX4J" must not be used to endorse or promote
+            products derived from this software without prior written
+            permission.
+            For written permission, please contact
+            biorn_steedom [at] users [dot] sourceforge [dot] net
+
+         5. Products derived from this software may not be called "MX4J",
+            nor may "MX4J" appear in their name, without prior written
+            permission of Simone Bordet.
+
+         THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+         WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+         OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+         DISCLAIMED.  IN NO EVENT SHALL THE MX4J CONTRIBUTORS
+         BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+         SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+         LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+         USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+         ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+         OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+         OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+         SUCH DAMAGE.
+         ====================================================================
+
+         This software consists of voluntary contributions made by many
+         individuals on behalf of the MX4J project.  For more information on
+         MX4J, please see
+         <a href="http://mx4j.sourceforge.net"; target="_top">the MX4J 
website</a>.
+
+
+=========================================================================
+== Spring is licensed under the Apache License Version 2.0             ==
+=========================================================================
+
+=========================================================================
+== For the Tanuki Software libraries                                   ==
+=========================================================================
+Copyright (c) 1999, 2004 Tanuki Software
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of the Java Service Wrapper and associated
+documentation files (the "Software"), to deal in the Software
+without  restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sub-license,
+and/or sell copies of the Software, and to permit persons to
+whom the Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+
+Portions of the Software have been derived from source code
+developed by Silver Egg Technology under the following license:
+
+Copyright (c) 2001 Silver Egg Technology
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sub-license, and/or
+sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+
+=========================================================================
+== For the xmlpull library                                             ==
+=========================================================================
+
+XMLPULL API IS FREE
+-------------------
+
+All of the XMLPULL API source code, compiled code, and documentation
+contained in this distribution *except* for tests (see separate 
LICENSE_TESTS.txt)
+are in the Public Domain.
+
+XMLPULL API comes with NO WARRANTY or guarantee of fitness for any purpose.
+
+Initial authors:
+
+  Stefan Haustein
+  Aleksander Slominski
+
+2001-12-12
+
+=========================================================================
+== For the xstream library                                             ==
+=========================================================================
+
+(BSD Style License)
+
+Copyright (c) 2003-2004, Joe Walnes
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this 
list of
+conditions and the following disclaimer. Redistributions in binary form must 
reproduce
+the above copyright notice, this list of conditions and the following 
disclaimer in
+the documentation and/or other materials provided with the distribution.
+
+Neither the name of XStream nor the names of its contributors may be used to 
endorse
+or promote products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 
EVENT
+SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
ARISING IN ANY
+WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+=========================================================================
+== For jaxb-api and jaxb-impl (CDDL)                                   ==
+== Source code is at java.net                                          ==
+=========================================================================
+
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+Version 1.0
+
+    *
+
+      1. Definitions.
+          o
+
+            1.1. “Contributor” means each individual or entity that 
creates or contributes to the creation of Modifications.
+          o
+
+            1.2. “Contributor Version” means the combination of the 
Original Software, prior Modifications used by a Contributor (if any), and the 
Modifications made by that particular Contributor.
+          o
+
+            1.3. “Covered Software” means (a) the Original Software, or 
(b) Modifications, or (c) the combination of files containing Original Software 
with files containing Modifications, in each case including portions thereof.
+          o
+
+            1.4. “Executable” means the Covered Software in any form other 
than Source Code.
+          o
+
+            1.5. “Initial Developer” means the individual or entity that 
first makes Original Software available under this License.
+          o
+
+            1.6. “Larger Work” means a work which combines Covered 
Software or portions thereof with code not governed by the terms of this 
License.
+          o
+
+            1.7. “License” means this document.
+          o
+
+            1.8. “Licensable” means having the right to grant, to the 
maximum extent possible, whether at the time of the initial grant or 
subsequently acquired, any and all of the rights conveyed herein.
+          o
+
+            1.9. “Modifications” means the Source Code and Executable form 
of any of the following:
+                +
+
+                  A. Any file that results from an addition to, deletion from 
or modification of the contents of a file containing Original Software or 
previous Modifications;
+                +
+
+                  B. Any new file that contains any part of the Original 
Software or previous Modification; or
+                +
+
+                  C. Any new file that is contributed or otherwise made 
available under the terms of this License.
+          o
+
+            1.10. “Original Software” means the Source Code and Executable 
form of computer software code that is originally released under this License.
+          o
+
+            1.11. “Patent Claims” means any patent claim(s), now owned or 
hereafter acquired, including without limitation, method, process, and 
apparatus claims, in any patent Licensable by grantor.
+          o
+
+            1.12. “Source Code” means (a) the common form of computer 
software code in which modifications are made and (b) associated documentation 
included in or with such code.
+          o
+
+            1.13. “You” (or “Your”) means an individual or a legal 
entity exercising rights under, and complying with all of the terms of, this 
License. For legal entities, “You” includes any entity which controls, is 
controlled by, or is under common control with You. For purposes of this 
definition, “control” means (a) the power, direct or indirect, to cause the 
direction or management of such entity, whether by contract or otherwise, or 
(b) ownership of more than fifty percent (50%) of the outstanding shares or 
beneficial ownership of such entity.
+    *
+
+      2. License Grants.
+          o
+
+            2.1. The Initial Developer Grant.
+
+            Conditioned upon Your compliance with Section 3.1 below and 
subject to third party intellectual property claims, the Initial Developer 
hereby grants You a world-wide, royalty-free, non-exclusive license:
+                +
+
+                  (a) under intellectual property rights (other than patent or 
trademark) Licensable by Initial Developer, to use, reproduce, modify, display, 
perform, sublicense and distribute the Original Software (or portions thereof), 
with or without Modifications, and/or as part of a Larger Work; and
+                +
+
+                  (b) under Patent Claims infringed by the making, using or 
selling of Original Software, to make, have made, use, practice, sell, and 
offer for sale, and/or otherwise dispose of the Original Software (or portions 
thereof).
+                +
+
+                  (c) The licenses granted in Sections 2.1(a) and (b) are 
effective on the date Initial Developer first distributes or otherwise makes 
the Original Software available to a third party under the terms of this 
License.
+                +
+
+                  (d) Notwithstanding Section 2.1(b) above, no patent license 
is granted: (1) for code that You delete from the Original Software, or (2) for 
infringements caused by: (i) the modification of the Original Software, or (ii) 
the combination of the Original Software with other software or devices.
+          o
+
+            2.2. Contributor Grant.
+
+            Conditioned upon Your compliance with Section 3.1 below and 
subject to third party intellectual property claims, each Contributor hereby 
grants You a world-wide, royalty-free, non-exclusive license:
+                +
+
+                  (a) under intellectual property rights (other than patent or 
trademark) Licensable by Contributor to use, reproduce, modify, display, 
perform, sublicense and distribute the Modifications created by such 
Contributor (or portions thereof), either on an unmodified basis, with other 
Modifications, as Covered Software and/or as part of a Larger Work; and
+                +
+
+                  (b) under Patent Claims infringed by the making, using, or 
selling of Modifications made by that Contributor either alone and/or in 
combination with its Contributor Version (or portions of such combination), to 
make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) 
Modifications made by that Contributor (or portions thereof); and (2) the 
combination of Modifications made by that Contributor with its Contributor 
Version (or portions of such combination).
+                +
+
+                  (c) The licenses granted in Sections 2.2(a) and 2.2(b) are 
effective on the date Contributor first distributes or otherwise makes the 
Modifications available to a third party.
+                +
+
+                  (d) Notwithstanding Section 2.2(b) above, no patent license 
is granted: (1) for any code that Contributor has deleted from the Contributor 
Version; (2) for infringements caused by: (i) third party modifications of 
Contributor Version, or (ii) the combination of Modifications made by that 
Contributor with other software (except as part of the Contributor Version) or 
other devices; or (3) under Patent Claims infringed by Covered Software in the 
absence of Modifications made by that Contributor.
+    *
+
+      3. Distribution Obligations.
+          o
+
+            3.1. Availability of Source Code.
+
+            Any Covered Software that You distribute or otherwise make 
available in Executable form must also be made available in Source Code form 
and that Source Code form must be distributed only under the terms of this 
License. You must include a copy of this License with every copy of the Source 
Code form of the Covered Software You distribute or otherwise make available. 
You must inform recipients of any such Covered Software in Executable form as 
to how they can obtain such Covered Software in Source Code form in a 
reasonable manner on or through a medium customarily used for software exchange.
+          o
+
+            3.2. Modifications.
+
+            The Modifications that You create or to which You contribute are 
governed by the terms of this License. You represent that You believe Your 
Modifications are Your original creation(s) and/or You have sufficient rights 
to grant the rights conveyed by this License.
+          o
+
+            3.3. Required Notices.
+
+            You must include a notice in each of Your Modifications that 
identifies You as the Contributor of the Modification. You may not remove or 
alter any copyright, patent or trademark notices contained within the Covered 
Software, or any notices of licensing or any descriptive text giving 
attribution to any Contributor or the Initial Developer.
+          o
+
+            3.4. Application of Additional Terms.
+
+            You may not offer or impose any terms on any Covered Software in 
Source Code form that alters or restricts the applicable version of this 
License or the recipients’ rights hereunder. You may choose to offer, and to 
charge a fee for, warranty, support, indemnity or liability obligations to one 
or more recipients of Covered Software. However, you may do so only on Your own 
behalf, and not on behalf of the Initial Developer or any Contributor. You must 
make it absolutely clear that any such warranty, support, indemnity or 
liability obligation is offered by You alone, and You hereby agree to indemnify 
the Initial Developer and every Contributor for any liability incurred by the 
Initial Developer or such Contributor as a result of warranty, support, 
indemnity or liability terms You offer.
+          o
+
+            3.5. Distribution of Executable Versions.
+
+            You may distribute the Executable form of the Covered Software 
under the terms of this License or under the terms of a license of Your choice, 
which may contain terms different from this License, provided that You are in 
compliance with the terms of this License and that the license for the 
Executable form does not attempt to limit or alter the recipient’s rights in 
the Source Code form from the rights set forth in this License. If You 
distribute the Covered Software in Executable form under a different license, 
You must make it absolutely clear that any terms which differ from this License 
are offered by You alone, not by the Initial Developer or Contributor. You 
hereby agree to indemnify the Initial Developer and every Contributor for any 
liability incurred by the Initial Developer or such Contributor as a result of 
any such terms You offer.
+          o
+
+            3.6. Larger Works.
+
+            You may create a Larger Work by combining Covered Software with 
other code not governed by the terms of this License and distribute the Larger 
Work as a single product. In such a case, You must make sure the requirements 
of this License are fulfilled for the Covered Software.
+    *
+
+      4. Versions of the License.
+          o
+
+            4.1. New Versions.
+
+            Sun Microsystems, Inc. is the initial license steward and may 
publish revised and/or new versions of this License from time to time. Each 
version will be given a distinguishing version number. Except as provided in 
Section 4.3, no one other than the license steward has the right to modify this 
License.
+          o
+
+            4.2. Effect of New Versions.
+
+            You may always continue to use, distribute or otherwise make the 
Covered Software available under the terms of the version of the License under 
which You originally received the Covered Software. If the Initial Developer 
includes a notice in the Original Software prohibiting it from being 
distributed or otherwise made available under any subsequent version of the 
License, You must distribute and make the Covered Software available under the 
terms of the version of the License under which You originally received the 
Covered Software. Otherwise, You may also choose to use, distribute or 
otherwise make the Covered Software available under the terms of any subsequent 
version of the License published by the license steward.
+          o
+
+            4.3. Modified Versions.
+
+            When You are an Initial Developer and You want to create a new 
license for Your Original Software, You may create and use a modified version 
of this License if You: (a) rename the license and remove any references to the 
name of the license steward (except to note that the license differs from this 
License); and (b) otherwise make it clear that the license contains terms which 
differ from this License.
+    *
+
+      5. DISCLAIMER OF WARRANTY.
+
+      COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, 
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT 
LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, 
MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK 
AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD 
ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL 
DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, 
REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART 
OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT 
UNDER THIS DISCLAIMER.
+    *
+
+      6. TERMINATION.
+          o
+
+            6.1. This License and the rights granted hereunder will terminate 
automatically if You fail to comply with terms herein and fail to cure such 
breach within 30 days of becoming aware of the breach. Provisions which, by 
their nature, must remain in effect beyond the termination of this License 
shall survive.
+          o
+
+            6.2. If You assert a patent infringement claim (excluding 
declaratory judgment actions) against Initial Developer or a Contributor (the 
Initial Developer or Contributor against whom You assert such claim is referred 
to as “Participant”) alleging that the Participant Software (meaning the 
Contributor Version where the Participant is a Contributor or the Original 
Software where the Participant is the Initial Developer) directly or indirectly 
infringes any patent, then any and all rights granted directly or indirectly to 
You by such Participant, the Initial Developer (if the Initial Developer is not 
the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this 
License shall, upon 60 days notice from Participant terminate prospectively and 
automatically at the expiration of such 60 day notice period, unless if within 
such 60 day period You withdraw Your claim with respect to the Participant 
Software against such Participant either unilaterally or pursuant t
 o a written agreement with Participant.
+          o
+
+            6.3. In the event of termination under Sections 6.1 or 6.2 above, 
all end user licenses that have been validly granted by You or any distributor 
hereunder prior to termination (excluding licenses granted to You by any 
distributor) shall survive termination.
+    *
+
+      7. LIMITATION OF LIABILITY.
+
+      UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT 
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL 
DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR 
ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, 
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, 
WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, 
COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR 
LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH 
DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR 
PERSONAL INJURY RESULTING FROM SUCH PARTY’S NEGLIGENCE TO THE EXTENT 
APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE 
EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS 
EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+    *
+
+      8. U.S. GOVERNMENT END USERS.
+
+      The Covered Software is a “commercial item,” as that term is defined 
in 48 C.F.R. 2.101 (Oct. 1995), consisting of “commercial computer 
software” (as that term is defined at 48 C.F.R. § 252.227-7014(a)(1)) and 
“commercial computer software documentation” as such terms are used in 48 
C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 
227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users 
acquire Covered Software with only those rights set forth herein. This U.S. 
Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or 
other clause or provision that addresses Government rights in computer software 
under this License.
+    *
+
+      9. MISCELLANEOUS.
+
+      This License represents the complete agreement concerning subject matter 
hereof. If any provision of this License is held to be unenforceable, such 
provision shall be reformed only to the extent necessary to make it 
enforceable. This License shall be governed by the law of the jurisdiction 
specified in a notice contained within the Original Software (except to the 
extent applicable law, if any, provides otherwise), excluding such 
jurisdiction’s conflict-of-law provisions. Any litigation relating to this 
License shall be subject to the jurisdiction of the courts located in the 
jurisdiction and venue specified in a notice contained within the Original 
Software, with the losing party responsible for costs, including, without 
limitation, court costs and reasonable attorneys’ fees and expenses. The 
application of the United Nations Convention on Contracts for the International 
Sale of Goods is expressly excluded. Any law or regulation which provides that 
the language of a contr
 act shall be construed against the drafter shall not apply to this License. 
You agree that You alone are responsible for compliance with the United States 
export administration regulations (and the export control laws and regulation 
of any other countries) when You use, distribute or otherwise make available 
any Covered Software.
+    *
+
+      10. RESPONSIBILITY FOR CLAIMS.
+
+      As between Initial Developer and the Contributors, each party is 
responsible for claims and damages arising, directly or indirectly, out of its 
utilization of rights under this License and You agree to work with Initial 
Developer and Contributors to distribute such responsibility on an equitable 
basis. Nothing herein is intended or shall be deemed to constitute any 
admission of liability.

http://git-wip-us.apache.org/repos/asf/cxf/blob/23d6d663/distribution/src/main/release/samples/jax_rs/sse/README.md
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/sse/README.md 
b/distribution/src/main/release/samples/jax_rs/sse/README.md
new file mode 100644
index 0000000..3f98f8c
--- /dev/null
+++ b/distribution/src/main/release/samples/jax_rs/sse/README.md
@@ -0,0 +1,4 @@
+How to use
+==============
+
+http://localhost:8686/static/

http://git-wip-us.apache.org/repos/asf/cxf/blob/23d6d663/distribution/src/main/release/samples/jax_rs/sse/pom.xml
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/sse/pom.xml 
b/distribution/src/main/release/samples/jax_rs/sse/pom.xml
new file mode 100644
index 0000000..7dde933
--- /dev/null
+++ b/distribution/src/main/release/samples/jax_rs/sse/pom.xml
@@ -0,0 +1,152 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>jax_rs_sse</artifactId>
+
+    <parent>
+        <groupId>org.apache.cxf.samples</groupId>
+        <artifactId>cxf-samples</artifactId>
+        <version>3.2.0-SNAPSHOT</version>
+        <relativePath>../..</relativePath>
+    </parent>
+    
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <cxf.jetty9.version>9.3.5.v20151012</cxf.jetty9.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax.enterprise</groupId>
+            <artifactId>cdi-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-integration-cdi</artifactId>
+            <version>3.2.0-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-frontend-jaxrs</artifactId>
+            <version>3.2.0-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-rs-sse</artifactId>
+            <version>3.2.0-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.jaxrs</groupId>
+            <artifactId>jackson-jaxrs-json-provider</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.jboss.weld.servlet</groupId>
+            <artifactId>weld-servlet</artifactId>
+            <version>2.2.16.Final</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.jboss.weld</groupId>
+            <artifactId>weld-core</artifactId>
+            <version>2.2.16.Final</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-server</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-plus</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>apache-jsp</artifactId>
+            <version>${cxf.jetty9.version}</version>
+        </dependency>
+
+         <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-webapp</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-webapp</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.eclipse.jetty.websocket</groupId>
+            <artifactId>websocket-server</artifactId>
+            <version>${cxf.jetty9.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.atmosphere</groupId>
+            <artifactId>atmosphere-runtime</artifactId>
+            <version>2.4.3</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <version>1.6</version>
+                <configuration>
+                    <filters>
+                        <filter>
+                            <artifact>*:*</artifact>
+                            <excludes>
+                                <exclude>META-INF/*.SF</exclude>
+                                <exclude>META-INF/*.DSA</exclude>
+                                <exclude>META-INF/*.RSA</exclude>
+                            </excludes>
+                        </filter>
+                    </filters>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <configuration>
+                            <transformers>
+                                <transformer
+                                    
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                    
<mainClass>org.apache.sse.StatsServer</mainClass>
+                                </transformer>
+                                <transformer
+                                    
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+                                    
<resource>META-INF/cxf/bus-extensions.txt</resource>
+                                </transformer>
+                            </transformers>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

http://git-wip-us.apache.org/repos/asf/cxf/blob/23d6d663/distribution/src/main/release/samples/jax_rs/sse/src/main/java/org/apache/sse/Stats.java
----------------------------------------------------------------------
diff --git 
a/distribution/src/main/release/samples/jax_rs/sse/src/main/java/org/apache/sse/Stats.java
 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/java/org/apache/sse/Stats.java
new file mode 100644
index 0000000..44180df
--- /dev/null
+++ 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/java/org/apache/sse/Stats.java
@@ -0,0 +1,56 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sse;
+
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+@JsonInclude(value = Include.NON_NULL)
+public class Stats implements Serializable {
+    private static final long serialVersionUID = -6705829915457870975L;
+
+    private long timestamp;
+    private int load;
+    
+    public Stats() {
+    }
+
+    public Stats(long timestamp, int load) {
+        this.timestamp = timestamp;
+        this.load = load;
+    }
+
+    public long getTimestamp() {
+        return timestamp;
+    }
+    
+    public void setTimestamp(long timestamp) {
+        this.timestamp = timestamp;
+    }
+
+    public int getLoad() {
+        return load;
+    }
+
+    public void setLoad(int load) {
+        this.load = load;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cxf/blob/23d6d663/distribution/src/main/release/samples/jax_rs/sse/src/main/java/org/apache/sse/StatsApplication.java
----------------------------------------------------------------------
diff --git 
a/distribution/src/main/release/samples/jax_rs/sse/src/main/java/org/apache/sse/StatsApplication.java
 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/java/org/apache/sse/StatsApplication.java
new file mode 100644
index 0000000..5b8e40a
--- /dev/null
+++ 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/java/org/apache/sse/StatsApplication.java
@@ -0,0 +1,44 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sse;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.inject.Inject;
+import javax.ws.rs.ApplicationPath;
+import javax.ws.rs.core.Application;
+
+import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
+
+import org.apache.cxf.jaxrs.sse.SseFeature;
+
+@ApplicationPath("api")
+public class StatsApplication extends Application {
+    @Inject private StatsRestServiceImpl statsRestService;
+    
+    @Override
+    public Set<Object> getSingletons() {
+        final Set<Object> singletons = new HashSet<>();
+        singletons.add(new SseFeature());
+        singletons.add(statsRestService);
+        singletons.add(new JacksonJsonProvider());
+        return singletons;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cxf/blob/23d6d663/distribution/src/main/release/samples/jax_rs/sse/src/main/java/org/apache/sse/StatsRestServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/distribution/src/main/release/samples/jax_rs/sse/src/main/java/org/apache/sse/StatsRestServiceImpl.java
 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/java/org/apache/sse/StatsRestServiceImpl.java
new file mode 100644
index 0000000..85c5ac2
--- /dev/null
+++ 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/java/org/apache/sse/StatsRestServiceImpl.java
@@ -0,0 +1,80 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sse;
+
+import java.io.IOException;
+import java.util.Date;
+import java.util.Random;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.sse.OutboundSseEvent;
+import javax.ws.rs.sse.SseContext;
+import javax.ws.rs.sse.SseEventOutput;
+
+@Path("/stats")
+public class StatsRestServiceImpl {
+    private static final Random RANDOM = new Random();
+
+    private static OutboundSseEvent createStatsEvent(final 
OutboundSseEvent.Builder builder, final int eventId) {
+        return builder
+            .id("" + eventId)
+            .data(Stats.class, new Stats(new Date().getTime(), 
RANDOM.nextInt(100)))
+            .mediaType(MediaType.APPLICATION_JSON_TYPE)
+            .build();
+    }
+    
+    @GET
+    @Path("sse/{id}")
+    @Produces("text/event-stream")
+    public SseEventOutput stats(@Context SseContext sseContext, 
@PathParam("id") final String id) {
+        final SseEventOutput output = sseContext.newOutput();
+        
+        new Thread() {
+            public void run() {
+                try {
+                    
output.write(createStatsEvent(sseContext.newEvent().name("stats"), 1));
+                    Thread.sleep(1000);
+                    
output.write(createStatsEvent(sseContext.newEvent().name("stats"), 2));
+                    Thread.sleep(1000);
+                    
output.write(createStatsEvent(sseContext.newEvent().name("stats"), 3));
+                    Thread.sleep(1000);
+                    
output.write(createStatsEvent(sseContext.newEvent().name("stats"), 4));
+                    Thread.sleep(1000);
+                    
output.write(createStatsEvent(sseContext.newEvent().name("stats"), 5));
+                    Thread.sleep(1000);
+                    
output.write(createStatsEvent(sseContext.newEvent().name("stats"), 6));
+                    Thread.sleep(1000);
+                    
output.write(createStatsEvent(sseContext.newEvent().name("stats"), 7));
+                    Thread.sleep(1000);
+                    
output.write(createStatsEvent(sseContext.newEvent().name("stats"), 8));
+                    output.close();
+                } catch (final InterruptedException | IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }.start();
+
+        return output;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cxf/blob/23d6d663/distribution/src/main/release/samples/jax_rs/sse/src/main/java/org/apache/sse/StatsServer.java
----------------------------------------------------------------------
diff --git 
a/distribution/src/main/release/samples/jax_rs/sse/src/main/java/org/apache/sse/StatsServer.java
 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/java/org/apache/sse/StatsServer.java
new file mode 100644
index 0000000..dc36965
--- /dev/null
+++ 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/java/org/apache/sse/StatsServer.java
@@ -0,0 +1,62 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sse;
+
+import org.apache.cxf.cdi.CXFCdiServlet;
+import org.apache.cxf.jaxrs.sse.servlet.CXFSseServlet;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.handler.HandlerList;
+import org.eclipse.jetty.servlet.DefaultServlet;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
+import org.jboss.weld.environment.servlet.BeanManagerResourceBindingListener;
+import org.jboss.weld.environment.servlet.Listener;
+
+public final class StatsServer {
+    private StatsServer() {
+    }
+    
+    public static void main(final String[] args) throws Exception {
+        final Server server = new Server(8686);
+
+        final ServletHolder staticHolder = new ServletHolder(new 
DefaultServlet());
+        final ServletContextHandler staticContext = new 
ServletContextHandler();
+        staticContext.setContextPath("/static");
+        staticContext.addServlet(staticHolder, "/*");
+        
staticContext.setResourceBase(StatsServer.class.getResource("/web-ui").toURI().toString());
+
+         // Register and map the dispatcher servlet
+        final CXFSseServlet cxfServlet = new CXFSseServlet(new 
CXFCdiServlet());
+        final ServletHolder cxfServletHolder = new ServletHolder(cxfServlet);
+        final ServletContextHandler context = new ServletContextHandler();
+        context.setContextPath("/");
+        context.addEventListener(new Listener());
+        context.addEventListener(new BeanManagerResourceBindingListener());
+        context.addServlet(cxfServletHolder, "/rest/*");
+
+        HandlerList handlers = new HandlerList();
+        handlers.addHandler(staticContext);
+        handlers.addHandler(context);
+        
+        server.setHandler(handlers);
+        server.start();
+        server.join();
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/cxf/blob/23d6d663/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/META-INF/atmosphere.xml
----------------------------------------------------------------------
diff --git 
a/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/META-INF/atmosphere.xml
 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/META-INF/atmosphere.xml
new file mode 100644
index 0000000..9fc1344
--- /dev/null
+++ 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/META-INF/atmosphere.xml
@@ -0,0 +1,6 @@
+<atmosphere-handlers>
+    <!-- CXF -->
+    <atmosphere-handler support-session="false" context-root="/*" 
class-name="org.atmosphere.handler.ReflectorServletProcessor">
+        <property name="servletClassName" 
value="org.apache.cxf.cdi.CXFCdiServlet"/>
+    </atmosphere-handler>
+</atmosphere-handlers>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cxf/blob/23d6d663/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/META-INF/beans.xml
----------------------------------------------------------------------
diff --git 
a/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/META-INF/beans.xml
 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000..7e2559b
--- /dev/null
+++ 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/META-INF/beans.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<beans xmlns="http://java.sun.com/xml/ns/javaee";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
+       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://jboss.org/schema/cdi/beans_1_1.xsd";        
+       version="1.1">  
+
+       <scan>
+               <exclude name="org.apache.cxf.**" />
+       </scan>
+</beans>

http://git-wip-us.apache.org/repos/asf/cxf/blob/23d6d663/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/META-INF/cxf/org.apache.cxf.Logger
----------------------------------------------------------------------
diff --git 
a/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/META-INF/cxf/org.apache.cxf.Logger
 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/META-INF/cxf/org.apache.cxf.Logger
new file mode 100644
index 0000000..27dd788
--- /dev/null
+++ 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/META-INF/cxf/org.apache.cxf.Logger
@@ -0,0 +1 @@
+org.apache.cxf.common.logging.Slf4jLogger
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cxf/blob/23d6d663/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/log.properties
----------------------------------------------------------------------
diff --git 
a/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/log.properties
 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/log.properties
new file mode 100644
index 0000000..63477d3
--- /dev/null
+++ 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/log.properties
@@ -0,0 +1,3 @@
+handlers=java.util.logging.ConsoleHandler
+org.jboss.weld.level=FINEST
+java.util.logging.ConsoleHandler.level=FINEST
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cxf/blob/23d6d663/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/logback.xml
----------------------------------------------------------------------
diff --git 
a/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/logback.xml
 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/logback.xml
new file mode 100644
index 0000000..1052186
--- /dev/null
+++ 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/logback.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="5 seconds">
+       <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+               <encoder>
+                       <pattern>[%level] %d{yyyy-MM-dd HH:mm:ss.SSS} 
%logger{36} - [%X] %msg%n</pattern>
+               </encoder>
+       </appender>
+
+       <root level="DEBUG">
+               <appender-ref ref="STDOUT" />
+       </root>
+       
+       <logger category="org.jboss.weld">  
+       <level name="DEBUG"/>  
+       </logger>
+</configuration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cxf/blob/23d6d663/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/web-ui/index.html
----------------------------------------------------------------------
diff --git 
a/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/web-ui/index.html
 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/web-ui/index.html
new file mode 100644
index 0000000..2aaed6e
--- /dev/null
+++ 
b/distribution/src/main/release/samples/jax_rs/sse/src/main/resources/web-ui/index.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>SSE: Apache CXF example</title>
+        <script src="javascripts/jquery-1.9.0.min.js" 
type="text/javascript"></script>
+        <script src="javascripts/highcharts.js" 
type="text/javascript"></script>
+    </head>
+    
+    <body>
+               <div id="content">
+                       <div id="chart">
+                       </div>
+               </div>
+       </body>
+</html>
+
+<script type="text/javascript">
+       var chart = new Highcharts.Chart({
+           chart: {
+               renderTo: 'chart',
+               defaultSeriesType: 'spline'
+           },           
+           xAxis: {
+               type: 'datetime'
+           },   
+           series: [{
+               name: "CPU",
+               data: []
+              }
+           ]
+       }); 
+
+       if( !!window.EventSource ) {
+           var event = new 
EventSource("http://localhost:8686/rest/api/stats/sse/1";);
+       
+           event.addEventListener('message', function( event ) {       
+               var datapoint = jQuery.parseJSON( event.data );
+                
+               chart.series[ 0 ].addPoint({
+                   x: datapoint.timestamp,
+                   y: datapoint.load
+               }, true, chart.series[ 0 ].data.length >= 50 );
+           } );
+
+           $('#content').bind('unload',function() {
+               event.close();
+               });                            
+       }       
+</script>
\ No newline at end of file

Reply via email to