デフォルトのサーブレット・マッピングには、/ 文字のみのマッピングがあります。WebLogic では、デフォルト・サーブレット・マッピングに対する javax.servlet.http.HttpServletRequest.getServletPath メソッドの呼び出しは空のストリングを返し、javax.servlet.http.HttpServletRequest.getPathInfo メソッドの呼び出しは null を返します。
WebSphere traditional では、デフォルト・サーブレット・マッピングに対する getServletPath の呼び出しは空のストリングを返しますが、getPathInfo メソッドの呼び出しは / 文字を返します。
同様に、Liberty にマイグレーションして Servlet 3.0 または 3.1 フィーチャー実装を使用している場合、デフォルト・サーブレット・マッピングに対する getServletPath の呼び出しは空のストリングを返しますが、getPathInfo メソッドの呼び出しは / 文字を返します。ただし、Servlet 4.0 フィーチャーを使用している場合、getServletPath の呼び出しは / 文字を返し、getPathInfo への呼び出しは null を返します。
例えば、次のコードについて考えてみます。
WebLogic で、このコードの出力は以下のようになります。
Servlet 3.0 または 3.1 を使用する WebSphere traditional および Liberty では、コードの出力は以下のようになります。
Servlet 4.0 を使用する Liberty では、コードの出力は以下のようになります。
Servlet 3.0 または 3.1 実装を使用する WebSphere traditional または Liberty にマイグレーションする場合は、getPathInfo が null ではなく / 文字を返すことをコードで考慮するようにしてください。
Servlet 4.0 実装を使用する Liberty にマイグレーションする場合は、getServletPath が空のストリングではなく / 文字を返すことをコードで考慮するようにしてください。
追加情報については、以下を参照してください。