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 <johndam...@apache.org> 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 <drr...@gmail.com> 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 <drr...@gmail.com> >> 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 < >> >> rmannibu...@gmail.com> >> >> 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" <johndam...@apache.org> 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 < >> johndam...@apache.org >> >> > >> >> >> > 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 >> >> >> > > >> >> >> > >> >> >> >>