Hello Thanks for the analysis. I've created https://ops4j1.jira.com/browse/PAXWEB-1253 to track this issue.
I'm in the process of OSGi CMPN R7 implementation in Pax Web 8 and the model has changed slightly (servlet model may be associated with more osgi context models / servlet context models), so I need to reflect this change in Karaf commands as well... regards Grzegorz Grzybek sob., 8 lut 2020 o 02:19 Miroslav Beranič <[email protected]> napisał(a): > Hi all, > > I am back at the existing PAX Web Whiteboard sample, located at: > > https://github.com/ops4j/org.ops4j.pax.web/blob/master/samples/whiteboard-extended/src/main/java/org/ops4j/pax/web/extender/samples/whiteboard/internal/Activator.java > > In the example HttpContextMapping service has different name, all four of > them; also all four related URL Patterns are all different from each other > - /whiteboard, /whiteboard2, and /whiteboard3, /whiteboard4. > For now, let's say there are only two with context path defined - foo and > bar. > > When deployed in Karaf and checked from inside Karaf shell with command > http:list it prints all of the endpoints, but the Context path ( prefix ) > is missing. > > It just lists endpoints without the context path. Before you start to say, > this is a problem inside Karaf, let me explain. > > If we imagine for the moment, if one would change/align all the endpoint > URL Patterns to the same url pattern = /whiteboard, the expected output > would be something/exactly like this: > > /foo/whiteboard > /bar/whiteboard > > but it is not, it is just one line with endpoint: > > /whiteboard > > I've checked Karaf's source code, and this is a topic for another mailing > list, but for now what I can say is -- the client ( in this case Karaf ) > can not tell one servlet event from another. > > Because there is no "unique id" to distinguish one from another, when it > goes from one state to another. I would say, this is a root cause for how > Karaf ( incorrectly ) handles Servlet list. > > I would recommend that the already existing ID from ServletModel is > re-used, in a way, that additional field is added to the ServletEvent class > as final and set in the constructor ( final String id ). This has to be > updated in one place only - class HttpServiceStarted, in > method servletEvent, where servlet event is created from servlet model. > > I've changed this and with some minor updates in Karaf, I can see > different endpoints. > > /foo/whiteboard > /bar/whiteboard > > In Karaf, Servlet Events are stored in a map, by servlet name as a key. > Here is just a short rundown of some other updates I've done, but this is > for Karaf mailing list. But all was routed from this, that there is no way, > to identify one Servlet event from another - if they have the same Servlet > name and alias or url pattern -- but they are not the same, as the context > path is different. > > I ask here if this sounds like a valid solution/path or do you guys have > some other ways to go about this? If this sounds ok to you, I would be glad > to share my code changes. > > Apache Karaf 4.3.0 > PAX Web 7.2.13 ( but the code is the same in the master branch also ) > > > Kind Regards, > Miroslav > > > > -- > Miroslav Beranič > MIBESIS > [email protected] > https://www.mibesis.si > > -- > -- > ------------------ > OPS4J - http://www.ops4j.org - [email protected] > > --- > You received this message because you are subscribed to the Google Groups > "OPS4J" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/ops4j/CA%2B3Fds5EK8HaNU%3D3e32JxkO8StRjfCRhJ_vP-YVyD4LSPN405A%40mail.gmail.com > <https://groups.google.com/d/msgid/ops4j/CA%2B3Fds5EK8HaNU%3D3e32JxkO8StRjfCRhJ_vP-YVyD4LSPN405A%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- -- ------------------ OPS4J - http://www.ops4j.org - [email protected] --- You received this message because you are subscribed to the Google Groups "OPS4J" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ops4j/CAAdXmhpaHoRbMK9iQtMG8iM6GkbZjtwb%3De4G2B-8%3DfRyJDGpAQ%40mail.gmail.com.
