Hi JB, Team,

I'm upgrading various OSGi deps in Apache Brooklyn and have hit three
curious issues:


(1) bin/client disconnects immediately after authentication if no command
specified; this is after enabling the karaf user in etc/users/properties,
`bin/client bundle:list` works, but `bin/client` now disconnects
immediately.  `ssh karaf@localhost -p 8101` still works.

At first I thought it was related to (2) but since commands actually work
and an ssh shell works I now suspect a TTY issue.  Logging on client (`-l
4`) and server don't show much apart from the sudden closing after the
server says "no command provided".


(2) The log shows scary stack traces when
enabling org.apache.karaf.shell.core/4.3.8 about config commands failing to
load, eg:

2022-12-19T10:47:40,020Z - INFO   64 o.a.k.s.i.a.o.CommandExtension
[tures-3-thread-1] Inspection of class
org.apache.karaf.config.command.CancelCommand failed.
java.lang.NoClassDefFoundError: org/apache/karaf/shell/api/action/Action

This is almost certainly due to loading karaf.config earlier (
https://github.com/apache/karaf/commit/b783f279c78f79005d15657f10fbe3a84bfdd863).
The stack traces are at INFO level and it doesn't have noticeable impact so
not a big deal but thought I would say.


(3) Using Eclipse Jetty, servlets and WARs no longer start unless geronimo
jaspi specs _and_ provider are explicitly added; I was getting errors such
as:

Unable to resolve org.eclipse.jetty.security.jaspi/9.4.49.v20220914:
missing requirement [org.eclipse.jetty.security.jaspi/9.4.49.v20220914]
osgi.wiring.package;
filter:="(&(osgi.wiring.package=javax.security.auth.message)(version>=1.0.0)(!(version>=2.0.0)))"

Could not start the servlet context for context path []
java.lang.SecurityException: AuthConfigFactory error:
java.lang.ClassNotFoundException:
org.apache.geronimo.components.jaspi.AuthConfigFactoryImpl not found by
org.apache.geronimo.specs.geronimo-jaspic_1.0_spec [46]

The first was solved by explicitly adding this:

<bundle>mvn:org.apache.geronimo.specs/geronimo-jaspic_1.0_spec/1.1</bundle>

That used to come with pax, but doesn't any more, and is needed for
jetty-websocket, so makes sense.  But that caused the second error, which I
could only solve by adding a new (never before included) bundle:

<bundle>mvn:org.apache.geronimo.components/geronimo-jaspi/2.0.0</bundle>

It looks like in the old versions possibly something had been setting a
BasicAuthenticator prior to this code block which meant it previously
bypassed this jaspi lookup altogether.  No idea why now it is doing this
lookup.  Also I note there is an ecilpse jetty
jaspi DefaultAuthConfigFactory but can't see how to wire it.  It works fine
with geronimo-jaspi -- though we don't do anything special with that; I
don't even really know what it is, just the WARs stopping launching.

(Probably this is nothing to do with the Karaf changes, but since they are
all version-linked and it was the most irritating, I figured I'd say!)


The versions being upgraded are:

* CXF 3.4.1 -> 3.4.10
* Pax web 7.3.23 -> 7.3.27
* Karaf 4.3.6 -> 4.3.8
* Eclipse Jetty 9.4.43.v20210629 -> 9.4.49.v20220914


It all seems to be working now but I thought people might want to know, and
quite possibly there are better solutions you can point me at!

Many thanks,
Alex

Reply via email to