Thanks Sergey!

Merged to the master.

Cheers
-------------
Freeman(Yue) Fang

Red Hat, Inc. 
FuseSource is now part of Red Hat



> On Apr 20, 2017, at 7:41 PM, Sergey Beryozkin <[email protected]> wrote:
> 
> Hi Freeman
> 
> Thanks, looks like it is all very much consistent with the way either Servlet 
> (JSR356) or Container-specific (Jetty and now Undertow) WebSocket support is 
> activated, nice work
> 
> Thanks, Sergey
> On 20/04/17 07:18, Freeman Fang wrote:
>> Hi Sergey,
>> 
>> I just pushed my commit to websocket-undertow branch.
>> 
>> The main purpose is for the standalone CXF endpoint(not CXF endpoint 
>> deployed into servlet container, as the 
>> AtmosphereWebSocketServletDestination should work with all servlet container 
>> implementing JSR365 now), using AtmosphereWebSocketUndertowDestination or 
>> UndertowWebSocketDestination when jetty isn’t available on the class path. 
>> The original AtmosphereWebSocketJettyDestination still use jetty to handle 
>> the transport level stuff like read request and send response. Now in the 
>> WebSocketDestinationFactory I check if the jetty is available, keep things 
>> work as is, but if there’s no jetty on the class path but instead undertow 
>> available, use the undertow counterpart ones. The logic here is quiet 
>> similar as before, when Atmosphere is available, use 
>> AtmosphereWebSocketXXXXDestination, if there’s no Atmosphere, just use 
>> XXXXXXWebSocketDestination to create websocket connection and handle the 
>> incoming websocket request. The test cases are also added to guarantee it 
>> works.
>> 
>> Please let me know your thoughts.
>> Thanks
>> 
>> -------------
>> Freeman(Yue) Fang
>> 
>> Red Hat, Inc.
>> FuseSource is now part of Red Hat
>> 
>> 
>> 
>>> On Feb 28, 2017, at 10:07 PM, Sergey Beryozkin <[email protected]> wrote:
>>> 
>>> Hey Freeman
>>> 
>>> You can with a JAXRSClientServerWebSocketTest (copy it to the undertow 
>>> systests), add a CXF websocket transport dep and see if it can already 
>>> work. Next try JAXRSClientServerWebSocketSpringWebAppTest in the undertow 
>>> tests...
>>> 
>>> Cheers, Sergey
>>> On 28/02/17 13:44, Sergey Beryozkin wrote:
>>>> Hi Freeman,
>>>> 
>>>> yeah, please try your new module idea on the branch and see if you can
>>>> make a JAXRS sys test working with it, but also
>>>> try to run a websocket web demo with Tomcat 7 first to confirm it is
>>>> working, then with Tomcat 8 and somehow get it actually running :-), and
>>>> I think if you make it happen then it will also work with Undertow
>>>> 
>>>> Thanks, Sergey
>>>> On 28/02/17 13:39, Sergey Beryozkin wrote:
>>>>> Hi Freeman
>>>>> On 28/02/17 13:12, Freeman Fang wrote:
>>>>>> Hi Sergey,
>>>>>> 
>>>>>> Thanks for the detailed response.
>>>>>> 
>>>>>> I wanna add websocket transport with undertow because just like jetty,
>>>>>> we have http-jetty transport and we have websocket transport with
>>>>>> jetty websocket implementation.
>>>>> 
>>>>> We don't have a web socket transport with a Jetty web socket
>>>>> implementation. We have a web socket transport which can use Atmosphere
>>>>> and it is is not available - then *delegates* to a Jetty implementation
>>>>> if it is available. Please have a look at the code.
>>>>> 
>>>>> And the most important thing is, this CXF web socket transport makes
>>>>> sure that irrespectively of which WebSocket implementation is loaded it
>>>>> does the proper formatting of the response and processing of the request
>>>>> as per the CXF docs/tests/demos which is what you'd need to duplicate
>>>>> somehow otherwise.
>>>>> 
>>>>> 
>>>>>> As we also have http-undertow transport and so have websocket
>>>>>> transport with undertow websocket implementation should make sense IMHO.
>>>>>> 
>>>>>> And yeah, the websocket transport with undertow websocket
>>>>>> implementation should be just as its counterpart, the websocket
>>>>>> transport with jetty websocket implementation do.
>>>>>> 
>>>>>> And yes, undertow implement JSR356, but I’m more looking at the
>>>>>> embedded undertow server which can support the websocket, not sure how
>>>>>> the JSR356 code can kick in here though.
>>>>>> 
>>>>> If Undertow implements JSR356 then the CXF WebSocket Transport can or
>>>>> should be able to load it which is what I was referring to.
>>>>> For example, a CXF WebSocket demo works with Tomcat 7 but we do not have
>>>>> any Tomcat code in CXF not we use Jetty in that case, see what I mean ?
>>>>> If it gets fixed to work in Tomcat 8 then it will also work with
>>>>> Undertow JSR356 which I expect to be effectively a wrapper around
>>>>> Undertow internal WebSocket code. IMHO it is really worth pursuing.
>>>>> 
>>>>> Otherwise you'd have something like undertow_websocket which would
>>>>> duplicate a fair bit of the existing CXF web socket transport code.
>>>>> 
>>>>> Think about it please, if we can avoid adding one more module by
>>>>> enhancing the existing one and achieving the same result for CXF
>>>>> endpoints using WebSocket on top of Undertow then it will be good IMHO...
>>>>> 
>>>>> You can try and go a new module route and add say a JAXRS Undertow
>>>>> WebSocket test by copying one of the existing JAXRS web socket tests
>>>>> on a new branch and we can discuss it further - I hope once you end up
>>>>> doing it you will see why enhancing the existing Web Socket transport
>>>>> may be better :-).
>>>>> 
>>>>> If we can have the existing transport enhanced to load JSR356s correctly
>>>>> then we can get rid of the Jetty delegation code, have only Atmosphere
>>>>> linking to Tomcat/Jetty/Netty/Undertow JSR356s...
>>>>> 
>>>>> Sergey
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>>> Best Regards
>>>>>> -------------
>>>>>> Freeman(Yue) Fang
>>>>>> 
>>>>>> Red Hat, Inc.
>>>>>> FuseSource is now part of Red Hat
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On Feb 28, 2017, at 6:38 PM, Sergey Beryozkin <[email protected]>
>>>>>>> wrote:
>>>>>>> 
>>>>>>> Hi Freeman
>>>>>>> On 27/02/17 23:44, Freeman Fang wrote:
>>>>>>>> Hi Team,
>>>>>>>> 
>>>>>>>> We have websocket transport in CXF for a while, I wanna know how
>>>>>>>> wide is this used by CXF users, if this is widely used, is it
>>>>>>>> feasible to also add undertow websocket implementation in CXF?
>>>>>>>> 
>>>>>>> The existing CXF web socket transport is meant to support JAX-RS
>>>>>>> flows over WebSocket given that the JSR356 API is not synchronized to
>>>>>>> either JAX-RS or JAX-WS at all. Please check systests/jaxrs
>>>>>>> WebSockets tests.
>>>>>>> I do not remember Aki trying it with JAXWS but with a bit of the
>>>>>>> extra work it will work with JAXWS too.
>>>>>>> Aki started documenting it here:
>>>>>>> http://cxf.apache.org/docs/websocket.html
>>>>>>> 
>>>>>>> and I recall we were discussing enhancing the transport for it to
>>>>>>> load the custom bindings to support SOAP etc
>>>>>>> 
>>>>>>> This transport uses Atmosphere if it is available and was tested with
>>>>>>> Tomcat 7 and Jetty, Tomcat 8 was problematic due to the issues with
>>>>>>> the way JSR356 implementation was picked up. Otherwise, if Jetty is
>>>>>>> available, it tries to use the Jetty implementation... This transport
>>>>>>> will work side by side with either the HTTP Servlet or Http Jetty
>>>>>>> transports.
>>>>>>> 
>>>>>>> Users are asking and trying it now and then not sure how widely it is
>>>>>>> used but it has to be supported IMHO and enhanced (custom bindings.
>>>>>>> etc).
>>>>>>> 
>>>>>>> As far as the Undertow WebSocket implementation is concerned, why
>>>>>>> would you like to get it into CXF ?
>>>>>>> 
>>>>>>> If it can support the JAXRS flows and possibly JAXWS flows the way
>>>>>>> the current transport can then why not, but IMHO this should be a
>>>>>>> prerequisite, given that CXF transports are here to support JAXWS &
>>>>>>> JAXRS.
>>>>>>> 
>>>>>>> The other question is, does Undertow implement JSR356 ? If yes then
>>>>>>> may be a better idea would be to fix the existing CXF websocket
>>>>>>> transport to correctly load JSR356 code, which would make it work
>>>>>>> with the Undertow or Tomcat8 etc JSR356 code.
>>>>>>> 
>>>>>>> Thanks, Sergey
>>>>>>> 
>>>>>>> 
>>>>>>>> Any input is appreciated.
>>>>>>>> 
>>>>>>>> Thanks!
>>>>>>>> -------------
>>>>>>>> Freeman(Yue) Fang
>>>>>>>> 
>>>>>>>> Red Hat, Inc.
>>>>>>>> FuseSource is now part of Red Hat
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>>> 
>>> 
>>> 
>>> --
>>> Sergey Beryozkin
>>> 
>>> Talend Community Coders
>>> http://coders.talend.com/
>> 
>> 
> 
> 
> -- 
> Sergey Beryozkin
> 
> Talend Community Coders
> http://coders.talend.com/

Reply via email to