That sounds like a great opportunity for a new feature in PAX Web, i.e. the ability to consume a set of rewrite rules in the org.ops4j.pax.web.cfg file. I would conjecture that many others have needed this capability and just probably gave up.
Troy -----Original Message----- From: general-boun...@lists.ops4j.org [mailto:general-boun...@lists.ops4j.org] On Behalf Of Achim Nierbeck Sent: Friday, June 03, 2011 2:14 PM To: general@lists.ops4j.org Subject: Re: PAX Web Fragment Bundle Issue Ok, from finally realizing on what you are trying to do, I have to tell you this won't work. Not for 0.7.x nor for the 1.0.x version of pax web. Since pax web starts and configures the jetty server during runtime there is no easy way to get a hold of the specialized HandlerCollection. And to make it even worse, I think the RewriteHandler will never work since pax web does it's own rewriting and handling of requests and request contexts. Regards, Achim Am 03.06.2011 19:38, schrieb Troy Waldrep: > The "addHandler" approach doesn't work (at least for me) in a custom > jetty.xml in 6.1.26 standalone. The following DOES work. > > <Set name="handler"> > <New id="Handlers" class="org.mortbay.jetty.handler.RewriteHandler"> > <Set name="rewriteRequestURI">false</Set> > <Set name="rewritePathInfo">false</Set> > <Set name="originalPathAttribute">requestedPath</Set> > <Call > name="addRewriteRule"><Arg>/howdy/*</Arg><Arg>/hello</Arg></Call> > <Call > name="addRewriteRule"><Arg>/docs/*</Arg><Arg>/javadoc</Arg></Call> > <Set name="handler"> > <New id="Handlers" > class="org.mortbay.jetty.handler.HandlerCollection"> > <Set name="handlers"> > <Array type="org.mortbay.jetty.Handler"> > <Item> > <New id="Contexts" > class="org.mortbay.jetty.handler.ContextHandlerCollection"/> > </Item> > <Item> > <New id="DefaultHandler" > class="org.mortbay.jetty.handler.DefaultHandler"/> > </Item> > <Item> > <New id="RequestLog" > class="org.mortbay.jetty.handler.RequestLogHandler"/> > </Item> > </Array> > </Set> > </New> > </Set> > </New> > </Set> > > Here, I'm setting the RewriteHandler as the handler that is returned for name > "handler". I then add the other required handlers as an array to it. This > works fine in standalone. Seems like I could do something similar with PAX > Web, but I don't really know anything about PAX Web 0.7.4 handler > customizations. If this was exposed, I could simply add PAX Web's customized > Handler(s) to the array. > > Troy > ________________________________________ > From: general-boun...@lists.ops4j.org [general-boun...@lists.ops4j.org] on > behalf of Achim Nierbeck [bcanh...@googlemail.com] > Sent: Friday, June 03, 2011 11:47 AM > To: general@lists.ops4j.org > Subject: Re: PAX Web Fragment Bundle Issue > > Hi Troy, > > the only other idea that crosses my mind is to test it on a vanilla > Jetty server if that configuration works > out of the box since if the jetty server supports it it should also work > inside the pax-web context. > > regards, Achim > > Am 03.06.2011 00:49, schrieb Troy Waldrep: >> We're too close to product release to try such a risky move, so no we >> haven't. I was hoping that it would work with the version of PAX Web that's >> already in our stack. >> >> I can run a test on 1.0.3 to see if it works. I'll have to change the >> jetty.xml if I do that since the RewriteHandler's API changed pretty >> significantly, so it won't be an apples to apples comparison. >> >> Troy >> >> -----Original Message----- >> From: general-boun...@lists.ops4j.org >> [mailto:general-boun...@lists.ops4j.org] On Behalf Of Achim Nierbeck >> Sent: Thursday, June 02, 2011 3:48 PM >> To: general@lists.ops4j.org >> Subject: Re: PAX Web Fragment Bundle Issue >> >> Did you try with the latest pax web version, 1.0.3 and jetty 7? >> I never tried with the 0.7 version of pax web and it's kind of outdated. >> >> regards, Achim >> >> Am 02.06.2011 16:39, schrieb Troy Waldrep: >>> I read the documented APIs of the exact version of Jetty 6 that is used by >>> PAX Web 0.7.4, and it does support the methods and signatures that I'm >>> using. I also double-checked by opening the jetty jar and looked at the >>> signatures of the associated classes. So... I'm at a bit of a loss. >>> >>> Troy >>> ________________________________ >>> From: general-boun...@lists.ops4j.org [general-boun...@lists.ops4j.org] on >>> behalf of Achim Nierbeck [bcanh...@googlemail.com] >>> Sent: Thursday, June 02, 2011 4:07 AM >>> To: general@lists.ops4j.org >>> Subject: Re: PAX Web Fragment Bundle Issue >>> >>> Hi Troy, >>> >>> you might stop banging your head, it's not due to a failure of you :-) >>> >>> The thing is, pax-web needs to create a specialized Context Handler, >>> >>> the steps in >>> http://ops4j1.jira.com/wiki/display/paxweb/Advanced+Jetty+Configuration >>> for adding specialized handlers was tested with pax-web 1.0.3 and Jetty 7.x >>> So this might be an issue of Jetty itself. >>> I don't know if jetty 6 supports the addHandle method at all. >>> You have to take a look at the jetty documentation. >>> Besides that your jetty.xml looks good so far I can not see >>> why this wouldn't work, besides that jetty might not support it. :( >>> >>> >>> regards, Achim >>> >>> Am 02.06.2011 00:45, schrieb Troy Waldrep: >>> Hello, >>> >>> We're hooking up a fragment bundle that contains a custom jetty.xml file to >>> the jetty bundle of PAX Web 0.7.4 (bundles Jetty 6.1.26.1). Part of the >>> jetty.xml works as expected and exposes jetty& PAX Web MBeans. The >>> second part attempts to add a custom Handler to rewrite shortcut URLs to >>> our *real* URLs. For some reason, the second part throws an illegal >>> argument error. I banged my head on this one for a day before deciding to >>> ask the list. No further information beyond the illegal argument error is >>> provided, even at debug-level logging. The actual error message is >>> provided below the message below. >>> >>> The jetty.xml file: >>> >>> <Configure class="org.mortbay.jetty.Server"> >>> <!-THIS PART WORKS GREAT!!! --> >>> <Call id="jettyMBeanServer" >>> class="java.lang.management.ManagementFactory" >>> name="getPlatformMBeanServer"/> >>> <Get id="Container" name="container"> >>> <Call name="addEventListener"> >>> <Arg> >>> <New class="org.mortbay.management.MBeanContainer"> >>> <Arg> >>> <Ref id="jettyMBeanServer"/> >>> </Arg> >>> <Call name="start"/> >>> </New> >>> </Arg> >>> </Call> >>> </Get> >>> >>> <!-THIS PART THROWS AN ILLEGAL ARGUMENT ERROR --> >>> <Get id="Handler" name="handler"> >>> <Call name="addHandler"> >>> <Arg> >>> <New class="org.mortbay.jetty.handler.RewriteHandler"> >>> <Set name="rewriteRequestURI">true</Set> >>> <Set name="rewritePathInfo">false</Set> >>> <Set name="originalPathAttribute">requestedPath</Set> >>> <Call >>> name="addRewriteRule"><Arg>/designers</Arg><Arg>/Designers/DesignManager.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/design</Arg><Arg>/Designers/DesignManager.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/digui</Arg><Arg>/Designers</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/home</Arg><Arg>/Designers/HomePage.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/pd</Arg><Arg>/Designers/ProcessDesigner.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/md</Arg><Arg>/Designers/MapDesigner.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/im</Arg><Arg>/Designers/IntegrationManager.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/admin</Arg><Arg>/Designers/Admin.html</Arg></Call> >>> </New> >>> </Arg> >>> </Call> >>> </Get> >>> </Configure> >>> >>> The error from the log file: >>> >>> 01 Jun 2011 17:14:24,083 | DEBUG | guration Updater | jetty >>> | service.jetty.internal.JCLLogger 85 | XML get handler >>> 01 Jun 2011 17:14:24,084 | WARN | guration Updater | jetty >>> | service.jetty.internal.JCLLogger 122 | Config error at<Call >>> name="addHandler"> >>> <Arg> >>> <New class="org.mortbay.jetty.handler.RewriteHandler"> >>> <Set name="rewriteRequestURI">true</Set> >>> <Set name="rewritePathInfo">false</Set> >>> <Set name="originalPathAttribute">requestedPath</Set> >>> <Call >>> name="addRewriteRule"><Arg>/designers</Arg><Arg>/Designers/DesignManager.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/design</Arg><Arg>/Designers/DesignManager.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/digui</Arg><Arg>/Designers</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/home</Arg><Arg>/Designers/HomePage.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/index.html</Arg><Arg>/Designers</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/pd</Arg><Arg>/Designers/ProcessDesigner.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/md</Arg><Arg>/Designers/MapDesigner.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/im</Arg><Arg>/Designers/IntegrationManager.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/admin</Arg><Arg>/Designers/Admin.html</Arg></Call> >>> </New> >>> </Arg> >>> </Call> >>> 01 Jun 2011 17:14:24,084 | WARN | guration Updater | jetty >>> | service.jetty.internal.JCLLogger 122 | Config error at<Get >>> id="Handler" name="handler"> >>> <Call name="addHandler"> >>> <Arg> >>> <New class="org.mortbay.jetty.handler.RewriteHandler"> >>> <Set name="rewriteRequestURI">true</Set> >>> <Set name="rewritePathInfo">false</Set> >>> <Set name="originalPathAttribute">requestedPath</Set> >>> <Call >>> name="addRewriteRule"><Arg>/designers</Arg><Arg>/Designers/DesignManager.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/design</Arg><Arg>/Designers/DesignManager.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/digui</Arg><Arg>/Designers</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/home</Arg><Arg>/Designers/HomePage.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/index.html</Arg><Arg>/Designers</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/pd</Arg><Arg>/Designers/ProcessDesigner.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/md</Arg><Arg>/Designers/MapDesigner.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/im</Arg><Arg>/Designers/IntegrationManager.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/admin</Arg><Arg>/Designers/Admin.html</Arg></Call> >>> </New> >>> </Arg> >>> </Call> >>> </Get> >>> 01 Jun 2011 17:14:24,084 | ERROR | guration Updater | JettyServerImpl >>> | e.jetty.internal.JettyServerImpl 78 | >>> java.lang.IllegalArgumentException:<Call name="addHandler"> >>> <Arg> >>> <New class="org.mortbay.jetty.handler.RewriteHandler"> >>> <Set name="rewriteRequestURI">true</Set> >>> <Set name="rewritePathInfo">false</Set> >>> <Set name="originalPathAttribute">requestedPath</Set> >>> <Call >>> name="addRewriteRule"><Arg>/designers</Arg><Arg>/Designers/DesignManager.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/design</Arg><Arg>/Designers/DesignManager.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/digui</Arg><Arg>/Designers</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/home</Arg><Arg>/Designers/HomePage.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/index.html</Arg><Arg>/Designers</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/pd</Arg><Arg>/Designers/ProcessDesigner.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/md</Arg><Arg>/Designers/MapDesigner.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/im</Arg><Arg>/Designers/IntegrationManager.html</Arg></Call> >>> <Call >>> name="addRewriteRule"><Arg>/admin</Arg><Arg>/Designers/Admin.html</Arg></Call> >>> </New> >>> </Arg> >>> </Call> >>> >>> Thanks in advance for any pointers that can be provided. >>> >>> Troy Waldrep >>> >>> >>> _______________________________________________ >>> general mailing list >>> general@lists.ops4j.org<mailto:general@lists.ops4j.org> >>> http://lists.ops4j.org/mailman/listinfo/general >>> >>> >>> >>> >>> _______________________________________________ >>> general mailing list >>> general@lists.ops4j.org >>> http://lists.ops4j.org/mailman/listinfo/general >> _______________________________________________ >> general mailing list >> general@lists.ops4j.org >> http://lists.ops4j.org/mailman/listinfo/general >> >> >> >> _______________________________________________ >> general mailing list >> general@lists.ops4j.org >> http://lists.ops4j.org/mailman/listinfo/general > > _______________________________________________ > general mailing list > general@lists.ops4j.org > http://lists.ops4j.org/mailman/listinfo/general > > > > _______________________________________________ > general mailing list > general@lists.ops4j.org > http://lists.ops4j.org/mailman/listinfo/general _______________________________________________ general mailing list general@lists.ops4j.org http://lists.ops4j.org/mailman/listinfo/general _______________________________________________ general mailing list general@lists.ops4j.org http://lists.ops4j.org/mailman/listinfo/general