479865 IllegalStateException: Multiple servlets map to path: *.jsp: jsp,jsp
This commit is contained in:
parent
4134b1eca8
commit
b74a89bcb9
|
@ -65,6 +65,25 @@ public class ServletMapping
|
||||||
{
|
{
|
||||||
_pathSpecs = pathSpecs;
|
_pathSpecs = pathSpecs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/** Test if the list of path specs contains a particular one.
|
||||||
|
* @param pathSpec
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean containsPathSpec (String pathSpec)
|
||||||
|
{
|
||||||
|
if (_pathSpecs == null || _pathSpecs.length == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
for (String p:_pathSpecs)
|
||||||
|
{
|
||||||
|
if (p.equals(pathSpec))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* ------------------------------------------------------------ */
|
/* ------------------------------------------------------------ */
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -51,6 +51,7 @@ import org.eclipse.jetty.servlet.ServletHolder;
|
||||||
import org.eclipse.jetty.servlet.ServletMapping;
|
import org.eclipse.jetty.servlet.ServletMapping;
|
||||||
import org.eclipse.jetty.util.ArrayUtil;
|
import org.eclipse.jetty.util.ArrayUtil;
|
||||||
import org.eclipse.jetty.util.Loader;
|
import org.eclipse.jetty.util.Loader;
|
||||||
|
import org.eclipse.jetty.util.StringUtil;
|
||||||
import org.eclipse.jetty.util.log.Log;
|
import org.eclipse.jetty.util.log.Log;
|
||||||
import org.eclipse.jetty.util.log.Logger;
|
import org.eclipse.jetty.util.log.Logger;
|
||||||
import org.eclipse.jetty.util.security.Constraint;
|
import org.eclipse.jetty.util.security.Constraint;
|
||||||
|
@ -1210,8 +1211,9 @@ public class StandardDescriptorProcessor extends IterativeDescriptorProcessor
|
||||||
//remove ps from the path specs on the existing mapping
|
//remove ps from the path specs on the existing mapping
|
||||||
//if the mapping now has no pathspecs, remove it
|
//if the mapping now has no pathspecs, remove it
|
||||||
String[] updatedPaths = ArrayUtil.removeFromArray(sm.getPathSpecs(), ps);
|
String[] updatedPaths = ArrayUtil.removeFromArray(sm.getPathSpecs(), ps);
|
||||||
|
|
||||||
if (updatedPaths == null || updatedPaths.length == 0)
|
if (updatedPaths == null || updatedPaths.length == 0)
|
||||||
{
|
{
|
||||||
if (LOG.isDebugEnabled()) LOG.debug("Removed empty mapping {}",sm);
|
if (LOG.isDebugEnabled()) LOG.debug("Removed empty mapping {}",sm);
|
||||||
listItor.remove();
|
listItor.remove();
|
||||||
}
|
}
|
||||||
|
@ -1230,9 +1232,9 @@ public class StandardDescriptorProcessor extends IterativeDescriptorProcessor
|
||||||
paths.add(p);
|
paths.add(p);
|
||||||
context.getMetaData().setOrigin(servletName+".servlet.mapping."+p, descriptor);
|
context.getMetaData().setOrigin(servletName+".servlet.mapping."+p, descriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
mapping.setPathSpecs((String[]) paths.toArray(new String[paths.size()]));
|
mapping.setPathSpecs((String[]) paths.toArray(new String[paths.size()]));
|
||||||
if (LOG.isDebugEnabled()) LOG.debug("Added mapping {} ",mapping);
|
if (LOG.isDebugEnabled()) LOG.debug("Added mapping {} ",mapping);
|
||||||
|
|
||||||
_servletMappings.add(mapping);
|
_servletMappings.add(mapping);
|
||||||
return mapping;
|
return mapping;
|
||||||
}
|
}
|
||||||
|
@ -1367,10 +1369,52 @@ public class StandardDescriptorProcessor extends IterativeDescriptorProcessor
|
||||||
//add mappings to the jsp servlet from the property-group mappings
|
//add mappings to the jsp servlet from the property-group mappings
|
||||||
if (paths.size() > 0)
|
if (paths.size() > 0)
|
||||||
{
|
{
|
||||||
ServletMapping mapping = new ServletMapping();
|
ServletMapping jspMapping = null;
|
||||||
mapping.setServletName("jsp");
|
for (ServletMapping m: _servletMappings)
|
||||||
mapping.setPathSpecs(paths.toArray(new String[paths.size()]));
|
{
|
||||||
_servletMappings.add(mapping);
|
if (m.getServletName().equals("jsp"))
|
||||||
|
{
|
||||||
|
jspMapping = m;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (jspMapping != null)
|
||||||
|
{
|
||||||
|
if (jspMapping.getPathSpecs() == null)
|
||||||
|
{
|
||||||
|
//no paths in jsp servlet mapping, we will add all of ours
|
||||||
|
if (LOG.isDebugEnabled()) LOG.debug("Adding all paths from jsp-config to jsp servlet mapping");
|
||||||
|
jspMapping.setPathSpecs(paths.toArray(new String[paths.size()]));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//check if each of our paths is already present in existing mapping
|
||||||
|
ListIterator<String> piterator = paths.listIterator();
|
||||||
|
while (piterator.hasNext())
|
||||||
|
{
|
||||||
|
String p = piterator.next();
|
||||||
|
if (jspMapping.containsPathSpec(p))
|
||||||
|
piterator.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
//any remaining paths, add to the jspMapping
|
||||||
|
if (paths.size() > 0)
|
||||||
|
{
|
||||||
|
for (String p:jspMapping.getPathSpecs())
|
||||||
|
paths.add(p);
|
||||||
|
if (LOG.isDebugEnabled()) LOG.debug("Adding extra paths from jsp-config to jsp servlet mapping");
|
||||||
|
jspMapping.setPathSpecs((String[])paths.toArray(new String[paths.size()]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//no mapping for jsp yet, make one
|
||||||
|
ServletMapping mapping = new ServletMapping();
|
||||||
|
mapping.setServletName("jsp");
|
||||||
|
mapping.setPathSpecs(paths.toArray(new String[paths.size()]));
|
||||||
|
_servletMappings.add(mapping);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue