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 > >> >> > > > >> >> > > > > >
