我尝试配置一个码头上下文(以编程方式)以使用服务于根上下文的 servlet。
对于我设置“/”的上下文路径和 servlet 映射“/*”。这完全按照我想要的方式工作,但 Jetty 抱怨(警告)上下文路径以“/”结尾。当我将上下文路径设置为“”(空字符串)时,会导致有关空字符串的警告。
Jetty 关于此问题的文档部分指出:
请注意
,Java Servlet 规范 2.5 不鼓励空的上下文路径字符串,而 Java Servlet 规范 3.0 有效地禁止它。
Jetty 源的部分是:
public void setContextPath(String contextPath)
{
if (contextPath == null)
throw new IllegalArgumentException("null contextPath");
if (contextPath.endsWith("/*"))
{
LOG.warn(this+" contextPath ends with /*");
contextPath=contextPath.substring(0,contextPath.length()-2);
}
else if (contextPath.endsWith("/"))
{
LOG.warn(this+" contextPath ends with /");
contextPath=contextPath.substring(0,contextPath.length()-1);
}
if (contextPath.length()==0)
{
LOG.warn("Empty contextPath");
contextPath="/";
}
_contextPath = contextPath;
if (getServer() != null && (getServer().isStarting() || getServer().isStarted()))
{
Handler[] contextCollections = getServer().getChildHandlersByClass(ContextHandlerCollection.class);
for (int h = 0; contextCollections != null && h < contextCollections.length; h++)
((ContextHandlerCollection)contextCollections[h]).mapContexts();
}
}
所以问题是,为了映射到上下文的根,我应该设置什么上下文路径。目前一切正常,但是通过规范或码头警告设置了禁止的上下文路径,我想我需要一些不同的东西。