What would be the cost to just get rid of atmos? (it can make all the discussion pointless doing this path and makes the compatibility with containers/environments way wider than using atmos and the setup way easier)
Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <https://rmannibucau.metawerx.net/> | Old Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book <https://www.packtpub.com/application-development/java-ee-8-high-performance> 2018-02-25 16:54 GMT+01:00 John D. Ament <[email protected]>: > Actually here's another way. > > Create a new property on bus for the default transport ID > Default it to the HTTP one > in the SSE extension, override it to SSE. > > On Sun, Feb 25, 2018 at 10:47 AM John D. Ament <[email protected]> > wrote: > > > Basically, yes. > > > > So here's what I'm thinking. > > > > - Determine that transportId is null > > - ask for the registered HTTP one ending with /configuration > > - If that's null, loop through all registered and return the first one > > ending with /configuration > > > > Thoughts? > > > > > > On Sun, Feb 25, 2018 at 10:44 AM Andriy Redko <[email protected]> wrote: > > > >> Hey John, > >> > >> You mean add the capability to DestinationFactoryManager to list all > >> registered > >> destination factories and in case transport id is not set, just pick the > >> first > >> one? We could try it out, may be we could also give a preference to HTTP > >> transport > >> in case more than one is available (at least to minimize the effect of > >> the change). > >> > >> Also, the documentation should be updated to reflect the SSE transport > >> presence, I > >> will do that shortly. Thanks for spotting it. > >> > >> Makes sense? > >> > >> Best Regards, > >> Andriy Redko > >> > >> JDA> Andriy, > >> > >> JDA> Sadly no. Honestly, this leads to broken apps. Just to clarify my > >> setup: > >> > >> JDA> - WAR File deployed to Tomcat > >> JDA> - Has Weld Servlet + CXF CDI + CXF SSE modules deployed > >> JDA> - Has no SSE server side components > >> > >> JDA> At this point, I may use the client to talk to a remote server (for > >> JDA> inter-node communication) but don't rely on it long term. I have > no > >> server > >> JDA> side components. But you're saying I must set the transportId to > >> SSE. > >> > >> JDA> The SSE transportId requirement is not documented anywhere as best > >> as I can > >> JDA> tell. SSE isn't listed at > >> http://cxf.apache.org/docs/transports.html for > >> JDA> Atmosphere. > >> > >> JDA> I think a better approach would be to modify > >> JDA> CXFNonSpringServlet.getDestinationRegistryFromBusOrDefault ( > >> JDA> > >> https://github.com/apache/cxf/blob/master/rt/transports/ > http/src/main/java/org/apache/cxf/transport/servlet/ > CXFNonSpringServlet.java#L119 > >> JDA> ) > >> JDA> so that instead of hard coding the HTTP transport as the default, > we > >> ask > >> JDA> for the first destination factory it finds registered (if one is). > >> > >> JDA> Thoughts? > >> > >> JDA> John > >> > >> JDA> On Sun, Feb 25, 2018 at 9:25 AM Andriy Redko <[email protected]> > >> wrote: > >> > >> >> I wish it could be as easy as that :) Hope my previous messages give > >> some > >> >> context and explanations why we have dedicated transport and why we > >> need > >> >> to set Transport Id in a few places, not just one. It would be ideal > to > >> >> enrich HTTP transport with SSE support but it will take some time, > not > >> >> an easy one (certainly doable). > >> > >> >> Best Regards, > >> >> Andriy Redko > >> > >> >> JDA> I see a bit more when this is failing. > >> > >> >> JDA> When the JAXRS bean has the transport ID set, In > >> >> DestinationFactoryManager > >> >> JDA> you have two factories created, both for SSE (regular & config > >> >> JDA> namespaces). However, since on the servlet the transportId is > >> null > >> >> when it > >> >> JDA> tries to look up the namespace it defaults to the HTTP > transport. > >> >> This > >> >> JDA> causes it to create a new destination factory where nothing has > >> been > >> >> found. > >> > >> >> JDA> So I think what I would recommend is coming up with a way for > CXF > >> to > >> >> figure > >> >> JDA> out a better default, instead of the using the default > >> transportId. > >> > >> >> JDA> Or do as Romain says and make it so that SSE works on the normal > >> >> JDA> transportId. > >> > >> >> JDA> John > >> > >> >> JDA> On Sun, Feb 25, 2018 at 3:05 AM Romain Manni-Bucau < > >> >> [email protected]> > >> >> JDA> wrote: > >> > >> >> >> +1 wondered the same and technically sse can just be activated for > >> http > >> >> >> transport IMHO > >> > >> >> >> Le 25 févr. 2018 05:10, "John D. Ament" <[email protected]> a > >> >> écrit : > >> > >> >> >> > Here's a reproducer app, if anyone else is curious. > >> >> >> > https://github.com/johnament/cxf-demo-reactive-cdi > >> >> >> > > >> >> >> > If you comment out > >> >> >> > https://github.com/johnament/cxf-demo-reactive-cdi/blob/ > >> >> >> > master/src/main/webapp/WEB-INF/web.xml#L10-L13 > >> >> >> > then > >> >> >> > you'll see the issue, but deploying this as is to tomcat will > work > >> >> just > >> >> >> > fine. > >> >> >> > > >> >> >> > On Sat, Feb 24, 2018 at 10:59 PM John D. Ament < > >> [email protected] > >> >> > > >> >> >> > wrote: > >> >> >> > > >> >> >> > > Hi, > >> >> >> > > > >> >> >> > > So I've finally been able to confirm an issue. > >> >> >> > > > >> >> >> > > When CXF's SSE libraries are on the classpath, if the > >> transportId of > >> >> >> the > >> >> >> > > servlet does not match the transport ID set with the SSE > >> component, > >> >> >> then > >> >> >> > no > >> >> >> > > services are discovered. > >> >> >> > > > >> >> >> > > IMHO, there may be cases where the SSE libraries are present > >> (client > >> >> >> > only) > >> >> >> > > and no server runtimes are there. In this case, the transport > >> ID > >> >> will > >> >> >> > not > >> >> >> > > match. > >> >> >> > > > >> >> >> > > I'm curious, do both need to be set? What is the benefit/need > >> on > >> >> the > >> >> >> > > servlet layer needing the transport ID set when the underlying > >> >> feature > >> >> >> > also > >> >> >> > > does it? > >> >> >> > > > >> >> >> > > John > >> >> >> > > > >> >> >> > > >> > >> > >> > >> >
