I can now deploy my app that uses Solr via Jetty similar to my previous tomcat/tomee+ stack war deployment thanks to the Jetty team (Simone Bordet). It turned out to be very straightforward. Per his suggestion I commented out the RewriteHandler def and reference in $solr/server/etc/jetty.xml. Then I add standard servlet or static content at “/“ in server/etc/ dir:
CLJServlet.xml: <?xml version="1.0"?> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd <http://www.eclipse.org/jetty/configure_9_0.dtd>"> <Configure class="org.eclipse.jetty.webapp.WebAppContext"> <!-- set "root context" .e.g. "/" --> <Set name="contextPath"><Property name="hostContext" default="/"/></Set> <!-- set non-root context, e.g. "/CLJServlet" --> <!-- <Set name="contextPath"><Property name="hostContext" default="/CLJServlet"/></Set> --> <Set name="war"><Property name="jetty.base"/>/webapps/CLJServlet</Set> <Set name="defaultsDescriptor"><Property name="jetty.base"/>/etc/webdefault.xml</Set> </Configure> foo.xml: <?xml version="1.0"?> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd <http://www.eclipse.org/jetty/configure_9_0.dtd>"> <Configure class="org.eclipse.jetty.server.handler.ContextHandler"> <!-- set "root context" .e.g. "/" --> <!-- <Set name="contextPath"><Property name="hostContext" default="/"/></Set> --> <!-- set non-root context, e.g. "/foo" --> <Set name="contextPath"><Property name="hostContext" default="/foo"/></Set> <Set name="resourceBase"><Property name="jetty.home" />/webapps/foo</Set> <Set name="handler"> <New class="org.eclipse.jetty.server.handler.ResourceHandler"> <!-- nothing required here --> </New> </Set> </Configure> I did report an interesting Jetty warning that tomcat/tomee+ did not catch for my servlet: Log4j (org.slf4j.impl.Log4jLoggerFactory) warnings: {/CLJServlet} has uncovered http methods for path: / The Jetty team (Jan Bartel) responded back and suggested a fix and suggested that I notify the Solr team, here is his reply in case it might help Solr Team: Looks like a little bug on solr. In jetty 9.1.something we changed the definition of the webdefault.xml file to avoid the "Uncovered http methods" warning. This is related to the security-constraint for the TRACE method. We used to have: <security-constraint> <web-resource-collection> <web-resource-name>Disable TRACE</web-resource-name> <url-pattern>/</url-pattern> <http-method>TRACE</http-method> </web-resource-collection> <auth-constraint/> </security-constraint> Which meant that according to the servlet spec there were indeed uncovered methods. So we changed it to this couplet instead: <security-constraint> <web-resource-collection> <web-resource-name>Disable TRACE</web-resource-name> <url-pattern>/</url-pattern> <http-method>TRACE</http-method> </web-resource-collection> <auth-constraint/> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>Enable everything but TRACE</web-resource-name> <url-pattern>/</url-pattern> <http-method-omission>TRACE</http-method-omission> </web-resource-collection> </security-constraint> However, I notice that solr has the old definition in their etc/webdefault.xml file, and they have chosen to add the extra definition only to the web.xml file of their solr-webapp. So the easiest thing for you to do is: 1. copy the extra security-constraint into the etc/webdefault.xml file so it applies to all webapps 2. let solr know :) > On Nov 7, 2016, at 12:14 PM, matthew grisius <matthew.gris...@comcast.net> > wrote: > > I previously asked this question and did not receive any suggestions. > I also asked on Jetty-Users and one person suggested I ask again here so I > thought it might be worth it to ask again. > > Solr is deployed to “/solr” and is then mapped to “/“, e.g. > http://localhost:8983/ <http://localhost:8983/> gets mapped to > http://localhost:8983/solr/# <http://localhost:8983/solr/#>. > I want to put a different servlet at “/“ while preserving Solr functionality > at “/solr”. > The reason for this is that I previously deployed my app with Solr on > tomcat/tomee via war file and now want to use a current Solr release using > Solr/Jetty. > > I thought the way to accomplish that was to re-assign the "root context", > e.g. contextPath =“/“ but cannot find a way to do this with Solr/Jetty. > > My unsuccessful attempts included: > > - edit contexts/solr-jetty-context.xml (contextPath, add resourceBase, etc.) > - unmap solr rewrite rule to pass thru . . . > - edit other '/contexts/' . . . > - edit etc/webdefault.xml . . . > - bin/solr does not appear to affect "/" > - org.apache.solr.util.SolrCLI does not appear to affect "/" > > Perhaps I’m not trying the right combination of things in the right order to > solve the issue, but I’ve run out of simple ideas to try. > > Does anyone have any other suggestions? > Thank you, any help would be appreciated! > > -matt.