2017-02-15 6 views
4

最近私はweb-common_X_X.xsdで定義された "mime-mapping"要素を私に導き、Webアプリケーションweb.xmlで利用されている問題を掘り下げました。ファイル。ここでの目標は、特定のサーブレットに応答を返すときに特定のContent-Typeヘッダを含めるようにTomcatを設定することです。Tomcat 8.0 - mime-mapping&content-type

私はこの機能に言及しているprevious stack overflow postsを見つけましたが、私はTomcat 8.0.33で動作する簡単な例を得ることができません。

public class SimpleServlet extends HttpServlet { 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     IOUtils.write("Hello There!", resp.getOutputStream()); 
     resp.setStatus(202); 
    } 
} 

そして、次のweb.xmlがあります:私は、付属の文字セットせずにこのテストをしようとしました

<web-app 
     version="3.0" 
     xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 

    <servlet> 
    <servlet-name>SimpleServlet</servlet-name> 
    <servlet-class>com.jamf.swa.SimpleServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>SimpleServlet</servlet-name> 
    <url-pattern>*.swa</url-pattern> 
    </servlet-mapping> 

    <mime-mapping> 
    <extension>swa</extension> 
    <mime-type>text/rtf;charset=UTF-8</mime-type> 
    </mime-mapping> 

</web-app> 

このテストのために

、私は次のサーブレットを作成しました"mime-type"要素に追加します。 "text/rtf"タイプも任意です。私は他人をテストしました。

アプリケーションが開始されると、私は/testing.swaするには、次のリクエストます

curl --trace-ascii - http://localhost:8080/testing.swa 
== Info: Trying ::1... 
== Info: TCP_NODELAY set 
== Info: Connected to localhost (::1) port 8080 (#0) 
=> Send header, 89 bytes (0x59) 
0000: GET /testing.swa HTTP/1.1 
001b: Host: localhost:8080 
0031: User-Agent: curl/7.51.0 
004a: Accept: */* 
0057: 
<= Recv header, 23 bytes (0x17) 
0000: HTTP/1.1 202 Accepted 
<= Recv header, 27 bytes (0x1b) 
0000: Server: Apache-Coyote/1.1 
<= Recv header, 20 bytes (0x14) 
0000: Content-Length: 12 
<= Recv header, 37 bytes (0x25) 
0000: Date: Wed, 15 Feb 2017 22:37:17 GMT 
<= Recv header, 2 bytes (0x2) 
0000: 
<= Recv data, 12 bytes (0xc) 
0000: Hello There! 
Hello There!== Info: Curl_http_done: called premature == 0 
== Info: Connection #0 to host localhost left intact 

をあなたが見ることができるように、何のContent-Typeヘッダが含まれていません。

私はStandardContext:addMimeMapping()が正しく私のマッピングと呼ばれていることを確認することができますが、私は私の要求時に読み込まれてmimeMappingsローカル変数を見たことがないんです。

また、v8 +でこの要素を使用しているTomcat側のドキュメントも見つかりません。

些細なことがありませんか? Tomcatはこの機能をサポートしなくなりましたか?あなたが提供できるどんな助けでも感謝します。

答えて

2

Tomcatメーリングリストごとに、 "mime-mapping"機能はTomcatのDefaultServletでのみ利用されます。他のサーブレットはこのメカニックを利用することができますが、明示的に組み込む必要があります。

私が記述している機能は、フィルタによって達成されると思います。

関連する問題