Chris,

On Feb 24, 2017, at 11:12 AM, Christopher Schultz 
<ch...@christopherschultz.net<mailto:ch...@christopherschultz.net>> wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Ryan,

On 2/20/17 10:38 AM, Ryan Yohnk wrote:
I’ve come across a problem for which the “mime-mapping” element
would be a good solution. Specifically I have a web application
who’s source I can’t change, it’s not returning a specific
Content-Type header and I’d like to start utilizing compression
based on the mime-type.

Durning my investigation I created a trivial web app for testing
but was unable to get the mime-type specified in the mime-mapping
applied to requests sent to the specific extension. This was with
Tomcat 8.0.33. The details can be found below or at the stack
overflow post here:
http://stackoverflow.com/questions/42261607/tomcat-8-0-mime-mapping-co
ntent-type.

Just

so you know, the mime-mapping only applies to resources served by
the DefaultServlet. If the application is accepting a request to e.g.
/my-file.txt, then the content-type isn't automatically being set to
"text/plain" by Tomcat... it's up to the servlet to do that.

The Mime-Mappings are available to servlets, but it's pretty rare for
a custom servlet to bother actually using them.

I wasn’t aware there was a servlet in-between simple requests like you stated. 
But that makes perfect sense.


As noted in the SO post, I can see that
StandardContext:addMimeMapping() is being called with my specific
mapping during initialization. But I’m never seeing the backing
mimeMappings called from there.

I’ve seen quite a few online posts on this topic but can’t seem
find any official documentation for 8+. Is this feature something
that’s still supported? If so, is there something I’m overlooking
in my test or configuration?

Any light you guys can shine on the subject would be greatly
appreciated.

Thanks! Ryan



Servlet:

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>

cURL request:

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

Yup: you are making a request to a custom servlet that doesn't do
anything with the MIME mappings.

You said you don't want to modify the source... what about *adding* to
it? Would it be okay to write a Filter and add it to the configuration
of the application? That is a very easy thing to do, and you can add
whatever headers you want for whatever reason.

Yep, a filter will be the next step. Honestly that’s the behavior I’m 
describing anyway. My initial hope was to keep the changes limited to Tomcat 
configuration but if that’s not possible that’s cool.

Since it seems like a pretty common filter, is anyone aware of an existing 
implementation? I know it’s pretty trivial but no sense in rewriting the wheel 
if it’s already out there.

Thanks!
Ryan


- -chris
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - http://gpgtools.org<http://gpgtools.org/>
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBCAAGBQJYsGl1AAoJEBzwKT+lPKRYCkwP/i1lBjt3v6zsdYMWafdCNoTj
cIlYc3P6AAafDED7/Sf/8H3RQ1uOrp9n0DuM6hnjrh55ptv/VoAGDY3836ONSQ8S
ldWDJOipeTFW2byOeWc9fjT9+AJJ0B/3BidjUFgmljsyCw+f71ZYvHt2ECXNoXOO
T1nQG/OqqTnRZ54UZ1/d/PyZJSbEw1YHmS3f5DFfhtDHjgOS2bBsuQvSvX2XCUjK
lEcdCTbP1XaIU2jMIlRLF///i1Ytz2OsS12byt+tnotRC0MIVr1ST8Je6yvgaBLw
JHnStDdSJW4yFiy9aW8L54qChmdr1KCybavsnEHJKKgc7R5n+2qY2wDm4RwXl8b3
Aqyc9A5ELGhL/xn+kf3w4sC41yEAUXitYJyNkg33o69XoV+nxLfmuWTEqANwh5K+
RRsDQXTnnNZx9fewHpg2+/OnWUkLxaCtqfInU907c7AyXnuJ1jhWD9tBMXFy1SBA
jCQfj7U6hL/LsjQRPdpl0I0qpQ/KrxuCdBLCWwl28xwdXu21enlCV6ZvgHe3z6Vc
HVTc3dB/QbFNHJ9Qm1tbemOPTfR8rr2rycu3dcEXNlmwAwZ3yPASQGPnILZnxDyD
q1VmitMK3vfvoErXfMJ8yrPluQXRMus3f6Guu5k3gIYA/y9a+FUmUZ3pMPaTl69M
wLc5oAFEfPZcqfIdZlRd
=TfdZ
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: 
users-unsubscr...@tomcat.apache.org<mailto:users-unsubscr...@tomcat.apache.org>
For additional commands, e-mail: 
users-h...@tomcat.apache.org<mailto:users-h...@tomcat.apache.org>

Reply via email to