Tomcat が余分なパス情報をサーブレット名の一部として扱っているという問題があります。これにより、Web アプリケーションの一連の RESTFul 機能が壊れています (クローラーに適したリンクに ?name=value のペアではなく、追加のパス情報を使用しています)。
以前は正しく機能していましたが、明示的なマッピングを追加し、Invoker
サーブレットを提供するために以前使用していたサーブレットを削除すると、機能しなくなりました。たとえば、次のリンクを考えてみましょう。
MyServlet
以前は正しく呼び出され、「/param1/param2/param3」が によって返されgetPathInfo()
ましたHttpServletRequest
。
現在、Tomcat は MyServlet/param1/param2/param3 をサーブレットとしてロードしようとしているようです。
[2008/09/23:16:44:23 -0700] "GET /servlet/MyServlet/param1/param2/param3 HTTP/1.0" 404
これらを web.xml で定義およびマッピングする方法を次に示します。「http://mydomain.com/servlet/MyServlet」を押すだけで問題なく動作します。
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.myclass.etcetera.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/servlet/MyServlet</url-pattern>
</servlet-mapping>