Closed cmark closed 6 months ago
It looks like our packaged runtime is also failing with a similar error when it tries to boot the webapp bundle. Just guessing, but I think the cause is related to the fact that this is not a war
but a jar
and the WebInfConfiguration
fails to detect that in the preConfigure
step for an unknown reason. When running the dev version locally where the webapp bundle is not packaged yet (imported as an Eclipse project) the deployment works without any issue, but packaging it into an OSGi Web App and trying to deploy it fails.
The jetty code base changed from using the Resource
class to resolve locations to using the jvm Path
class instead. Resource
was very flexible with the way it resolved locations, it could handle URI
or just a file location, but Path
is more finicky.. Can you try just passing in the location as C:/jettyhome
?
I can try but that can only work around the osgi.boot related issue.
The other is about accessing and extracting the contents of the webapp jar file which fails because the URI starts with file:/
. It looks like it does some conversion to jar:/
but the code uses the war location path, which is still a file:/
and that does not work with jvm Path
.
Correct me if I'm wrong, but shouldn't the code in this block alter the value of the war variable? It seems like that even if jvm Path
would resolve the location without errors to a Path object unpack would not happen because the webapp is not a war file.
Can you try just passing in the location as C:/jettyhome?
Setting both the jetty.home.bundle
and jetty.home
together won't work as the system will ignore the jetty.home.bundle
altogether.
[2024-02-07T10:19:00.360] WARN main org.eclipse.jetty.osgi.JettyBootstrapActivator Both jetty.home and jetty.home.bundle property defined: jetty.home.bundle ignored.
[2024-02-07T10:19:00.360] WARN main org.eclipse.jetty.osgi.JettyBootstrapActivator Unable to locate the jetty.home folder C:/jettyhome
We need the osgi.boot bundle to boot up the jetty context with defaults in OSGi context and also to recognize and boot our webapp bundle.
According to my understanding, the C:/jettyhome
path is a fake path generated/set by the osgi.boot bundle during init, at least that was the case with Jetty 9 and 10.
After a bit of further testing, it looks like Jetty 12 and the web app can successfully boot on Unix machines without any Path issues. So this could be only affecting deployments on Windows machines.
@cmark yeah, I think the change to Path
is our issue here, I'll work on a PR to fix it.
@cmark you might like to build and test the PR #11418 in your environment and see if I've fixed it?
@cmark you might like to build and test the PR #11418 in your environment and see if I've fixed it?
Hey, I can take a look. I'll let you know if the issue is still present or not. Thanks!
@janbartel
Fixes in #11418 do resolve the osgi.boot path issue when running our integration tests on a developer machine with Windows 10. With that we can start using the osgi.boot bundle again in our tests. ☺️
Unfortunately, the other error thrown at org.eclipse.jetty.ee10.webapp.WebInfConfiguration.unpack(WebInfConfiguration.java:242)
is still present if we build our modules on Windows via Maven.
Thans @cmark I'll take a look at the WebInfConfiguration
issue.
@joakime as you're looking into windows issues, can you also look at the Exception generated when performing a WebInfConfiguration.unpack
on windows with a url like file:/C:/xxx/yyy/zzz.jar
(Note, the .jar
could be a .war
also).
The OP here has the full stack trace: https://github.com/jetty/jetty.project/issues/11377#issue-2120498800
@cmark I've pushed a speculative fix for WebInfConfiguration.unpack
to that branch, any chance you could retest??
@cmark I've pushed a speculative fix for
WebInfConfiguration.unpack
to that branch, any chance you could retest??
Yeah sure, I will rebuild and retest now.
@janbartel I'm happy to report that the speculative fix resolves the other error. Nice! Thanks!
Jetty version(s) Jetty 12.0.6
Jetty Environment ee10
Java version/vendor
(use: java -version)
openjdk version "17.0.10" 2024-01-16 OpenJDK Runtime Environment Temurin-17.0.10+7 (build 17.0.10+7) OpenJDK 64-Bit Server VM Temurin-17.0.10+7 (build 17.0.10+7, mixed mode, sharing)OS type/version Microsoft Windows 10 22H2 (OS Build 19045.3930)
Description
Thank you for fixing the osgi.boot bundle config errors (#11280) and releasing it as part of 12.0.6. Unfortunately, we are still unable to our tests and our runtime due to an invalid path exception error.
Local dev env error when starting our test launch configuration from Eclipse:
We are configuring the osgi.boot bundle using the
jetty.home.bundle
jvm argument:The error is similar in our build regardless of whether we use the osgi.boot bundle or using custom
jetty*.xml
configuration:Our web app bundle should boot based on a WEB-INF/web.xml file, but it looks like there is a preConfigure step that runs for every recognized configuration class and if one of them fails then the boot process fails. While this is a warning, there is no other error that can be found in the logs regarding the boot process and everything seems to work if we use explicit
jetty.xml
configuration files and not embedded ones (or the boot bundle).Could this be a configuration issue on our end?
How to reproduce?