Paul,

Jetty will extract from to a temp web-inf directory to avoid the jar inside
war class loading issues when a war file is not unpacked.   It should not
be doing this if the webapp is unpacked.  It should definitely not put both
on the classpath.

I think we may have a bug here.  We will investigate.  To better track
this, can you open an issue <https://github.com/jetty/jetty.project/issues>
and paste your message in as the description.

regards



On Tue, 26 Mar 2024 at 04:54, Paul B. Henson via jetty-users <
jetty-users@eclipse.org> wrote:

> I'm currently running the shibboleth idp webapp 4 under jetty 9, and
> trying to migrate to idp 5 using jetty 12. I've run into an odd problem,
> I get the following error:
>
> Caused by: org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'flowRegistry' defined in class path resource
> [net/shibboleth/idp/conf/webflow-config.xml]: Illegal attempt to register
> pre-existing flow ID 'authn/DuoOIDC'via resource: URL
> [jar:file:/var/lib/jetty/tmp/jetty-127_0_0_1-80-idp_war-_idp-any-10824638488520165161/webapp/WEB-INF/lib/idp-plugin-duo-impl-2.0.0.jar!/META-INF/net/shibboleth/idp/flows/authn/DuoOIDC/duo-oidc-authn-flow.xml]
>
> This generally occurs if there are multiple copies of the jar on the
> classpath, such as if the war accidentally included more than one (which
> isn't the case here).
>
> The deployment descriptor for the idp app is:
>
> <Configure class="org.eclipse.jetty.ee9.webapp.WebAppContext">
>         <Set name="war">/opt/shibboleth-idp/war/idp.war</Set>
>         <Set name="contextPath">/idp</Set>
>         <Set name="extractWAR">false</Set>
>         <Set name="copyWebDir">false</Set>
>         <Set name="copyWebInf">true</Set>
> </Configure>
>
> which is the recommended config per the idp documentation. With this
> config, I see two separate copies of the jar in the jetty tmp directory,
> one in webapp and one in webinf:
>
> # find | grep duo
>
> ./webapp/WEB-INF/lib/idp-plugin-duo-nimbus-client-impl-2.0.0.jar
>
> ./webapp/WEB-INF/lib/idp-plugin-duo-impl-2.0.0.jar
>
> ./webapp/WEB-INF/lib/idp-plugin-duo-api-2.0.0.jar
>
> ./webinf/WEB-INF/lib/idp-plugin-duo-nimbus-client-impl-2.0.0.jar
>
> ./webinf/WEB-INF/lib/idp-plugin-duo-impl-2.0.0.jar
>
> ./webinf/WEB-INF/lib/idp-plugin-duo-api-2.0.0.jar
>
>
> If I update the config and set copyWebInf=false, there's only one copy
> of the jar in the tmp directory (in webapp) and everything works fine.
>
> Looking at my existing jetty 9 deployment, there's only the webinf
> directory in the tmp dir, not the webapp one. If I update my jetty 9
> config and set extractWAR=true, then I get the same multiple copies (one
> in webapp, one in webinf) as I do with extractWAR=false in jetty 12,
> although this doesn't cause an error under jetty 9. If I set
> extractWAR=true under jetty 12, I see no change in the content of the
> tmp directory as compared to extractWAR=false.
>
> So I'm confused. Why is jetty 12 apparently extracting the war when
> extractWAR=false? And when it does, how come the same jar file seems to
> get processed twice, when that doesn't occur under jetty 9 with
> extractWAR=true?
>
> I'm not sure if I'm hitting a bug or have something misconfigured. It
> seems to be working now with copyWebInf=false, but that also seems more
> of a workaround than a resolution. This feels buggy, that jetty is
> extracting the war when it shouldn't be, and also loading the same jars
> from two different places when the war is extracted *and* copyWebInf=true.
> But I'm far from a jetty expert :).
>
> Thanks for any hints...
>
> _______________________________________________
> jetty-users mailing list
> jetty-users@eclipse.org
> To unsubscribe from this list, visit
> https://www.eclipse.org/mailman/listinfo/jetty-users
>


-- 
Greg Wilkins <gr...@webtide.com> CTO http://webtide.com
_______________________________________________
jetty-users mailing list
jetty-users@eclipse.org
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/jetty-users

Reply via email to