ルート コンテキストを提供するサーブレットを使用するために、jetty コンテキストを (プログラムで) 構成しようとしています。
コンテキスト パスには「/」を設定し、サーブレット マッピングには「/*」を設定します。これはまさに私が望んでいた方法で動作しますが、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();
}
}
問題は、コンテキストのルートにマップするためにどのコンテキスト パスを設定する必要があるかということです。現在、すべて正常に動作していますが、仕様または Jetty 警告によってコンテキスト パスの設定が禁止されているため、別のものが必要だと思います。