You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2020/02/11 12:56:59 UTC

[tomcat] branch master updated (ccab309 -> 31be526)

This is an automated email from the ASF dual-hosted git repository.

markt pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git.


    from ccab309  Fix rare test failure.
     new abf546e  Remove duplicate mapping
     new 31be526  Align MIME type mappings for embedded with those in conf/web.xml

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 conf/web.xml                                       |    4 -
 .../catalina/startup/LocalStrings.properties       |    1 +
 .../catalina/startup/MimeTypeMappings.properties   | 1025 ++++++++++++++++++++
 java/org/apache/catalina/startup/Tomcat.java       |  206 +---
 .../apache/tomcat/buildutil/MimeTypeMappings.java  |   73 ++
 java/org/apache/tomcat/buildutil/Utils.java        |   59 ++
 .../apache/tomcat/buildutil/translate/Import.java  |   32 +-
 .../catalina/startup/TestTomcatNoServer.java       |   92 ++
 webapps/docs/changelog.xml                         |    5 +
 9 files changed, 1278 insertions(+), 219 deletions(-)
 create mode 100644 java/org/apache/catalina/startup/MimeTypeMappings.properties
 create mode 100644 java/org/apache/tomcat/buildutil/MimeTypeMappings.java
 create mode 100644 java/org/apache/tomcat/buildutil/Utils.java
 create mode 100644 test/org/apache/catalina/startup/TestTomcatNoServer.java


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 01/02: Remove duplicate mapping

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit abf546ef087f589ea2386cd2374a3b417f72ee18
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Tue Feb 11 11:44:38 2020 +0000

    Remove duplicate mapping
    
    Tomcat processes extension mappings in a case insensitive manner
---
 conf/web.xml | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/conf/web.xml b/conf/web.xml
index cce6b8f..2d08297 100644
--- a/conf/web.xml
+++ b/conf/web.xml
@@ -4663,10 +4663,6 @@
         <mime-type>application/x-compress</mime-type>
     </mime-mapping>
     <mime-mapping>
-        <extension>Z</extension>
-        <mime-type>application/x-compress</mime-type>
-    </mime-mapping>
-    <mime-mapping>
         <extension>z1</extension>
         <mime-type>application/x-zmachine</mime-type>
     </mime-mapping>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 02/02: Align MIME type mappings for embedded with those in conf/web.xml

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 31be526af7bbf558b73264211d260c0398f264f6
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Dec 4 18:03:36 2019 +0000

    Align MIME type mappings for embedded with those in conf/web.xml
    
    Switch Tomcat embedded to loading MIME type mappings from a property
    file generated from the default web.xml so the MIME type mappings are
    consistent regardless of how Tomcat is started.
    Add the code to generate the properties file and a test case to check
    that the two remain in sync.
---
 .../catalina/startup/LocalStrings.properties       |    1 +
 .../catalina/startup/MimeTypeMappings.properties   | 1025 ++++++++++++++++++++
 java/org/apache/catalina/startup/Tomcat.java       |  206 +---
 .../apache/tomcat/buildutil/MimeTypeMappings.java  |   73 ++
 java/org/apache/tomcat/buildutil/Utils.java        |   59 ++
 .../apache/tomcat/buildutil/translate/Import.java  |   32 +-
 .../catalina/startup/TestTomcatNoServer.java       |   92 ++
 webapps/docs/changelog.xml                         |    5 +
 8 files changed, 1278 insertions(+), 215 deletions(-)

diff --git a/java/org/apache/catalina/startup/LocalStrings.properties b/java/org/apache/catalina/startup/LocalStrings.properties
index 93d094a..c857b48 100644
--- a/java/org/apache/catalina/startup/LocalStrings.properties
+++ b/java/org/apache/catalina/startup/LocalStrings.properties
@@ -149,6 +149,7 @@ tomcat.addWebapp.conflictChild=Unable to deploy WAR at [{0}] to context path [{1
 tomcat.addWebapp.conflictFile=Unable to deploy WAR at [{0}] to context path [{1}] because of existing file [{2}]
 tomcat.baseDirMakeFail=Unable to create the directory [{0}] to use as the base directory
 tomcat.baseDirNotDir=The location [{0}] specified for the base directory is not a directory
+tomcat.defaultMimeTypeMappingsFail=Unable to load the default MIME types
 tomcat.homeDirMakeFail=Unable to create the directory [{0}] to use as the home directory
 tomcat.invalidCommandLine=Invalid command line arguments [{0}]
 tomcat.noContextClass=Failed to instantiate context class [{0}] for host [{1}] and url [{2}]
diff --git a/java/org/apache/catalina/startup/MimeTypeMappings.properties b/java/org/apache/catalina/startup/MimeTypeMappings.properties
new file mode 100644
index 0000000..a043c5b
--- /dev/null
+++ b/java/org/apache/catalina/startup/MimeTypeMappings.properties
@@ -0,0 +1,1025 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+123=application/vnd.lotus-1-2-3
+3dml=text/vnd.in3d.3dml
+3ds=image/x-3ds
+3g2=video/3gpp2
+3gp=video/3gpp
+7z=application/x-7z-compressed
+aab=application/x-authorware-bin
+aac=audio/x-aac
+aam=application/x-authorware-map
+aas=application/x-authorware-seg
+abs=audio/x-mpeg
+abw=application/x-abiword
+ac=application/pkix-attr-cert
+acc=application/vnd.americandynamics.acc
+ace=application/x-ace-compressed
+acu=application/vnd.acucobol
+acutc=application/vnd.acucorp
+adp=audio/adpcm
+aep=application/vnd.audiograph
+afm=application/x-font-type1
+afp=application/vnd.ibm.modcap
+ahead=application/vnd.ahead.space
+ai=application/postscript
+aif=audio/x-aiff
+aifc=audio/x-aiff
+aiff=audio/x-aiff
+aim=application/x-aim
+air=application/vnd.adobe.air-application-installer-package+zip
+ait=application/vnd.dvb.ait
+ami=application/vnd.amiga.ami
+anx=application/annodex
+apk=application/vnd.android.package-archive
+appcache=text/cache-manifest
+application=application/x-ms-application
+apr=application/vnd.lotus-approach
+arc=application/x-freearc
+art=image/x-jg
+asc=application/pgp-signature
+asf=video/x-ms-asf
+asm=text/x-asm
+aso=application/vnd.accpac.simply.aso
+asx=video/x-ms-asf
+atc=application/vnd.acucorp
+atom=application/atom+xml
+atomcat=application/atomcat+xml
+atomsvc=application/atomsvc+xml
+atx=application/vnd.antix.game-component
+au=audio/basic
+avi=video/x-msvideo
+avx=video/x-rad-screenplay
+aw=application/applixware
+axa=audio/annodex
+axv=video/annodex
+azf=application/vnd.airzip.filesecure.azf
+azs=application/vnd.airzip.filesecure.azs
+azw=application/vnd.amazon.ebook
+bat=application/x-msdownload
+bcpio=application/x-bcpio
+bdf=application/x-font-bdf
+bdm=application/vnd.syncml.dm+wbxml
+bed=application/vnd.realvnc.bed
+bh2=application/vnd.fujitsu.oasysprs
+bin=application/octet-stream
+blb=application/x-blorb
+blorb=application/x-blorb
+bmi=application/vnd.bmi
+bmp=image/bmp
+body=text/html
+book=application/vnd.framemaker
+box=application/vnd.previewsystems.box
+boz=application/x-bzip2
+bpk=application/octet-stream
+btif=image/prs.btif
+bz=application/x-bzip
+bz2=application/x-bzip2
+c=text/x-c
+c11amc=application/vnd.cluetrust.cartomobile-config
+c11amz=application/vnd.cluetrust.cartomobile-config-pkg
+c4d=application/vnd.clonk.c4group
+c4f=application/vnd.clonk.c4group
+c4g=application/vnd.clonk.c4group
+c4p=application/vnd.clonk.c4group
+c4u=application/vnd.clonk.c4group
+cab=application/vnd.ms-cab-compressed
+caf=audio/x-caf
+cap=application/vnd.tcpdump.pcap
+car=application/vnd.curl.car
+cat=application/vnd.ms-pki.seccat
+cb7=application/x-cbr
+cba=application/x-cbr
+cbr=application/x-cbr
+cbt=application/x-cbr
+cbz=application/x-cbr
+cc=text/x-c
+cct=application/x-director
+ccxml=application/ccxml+xml
+cdbcmsg=application/vnd.contact.cmsg
+cdf=application/x-cdf
+cdkey=application/vnd.mediastation.cdkey
+cdmia=application/cdmi-capability
+cdmic=application/cdmi-container
+cdmid=application/cdmi-domain
+cdmio=application/cdmi-object
+cdmiq=application/cdmi-queue
+cdx=chemical/x-cdx
+cdxml=application/vnd.chemdraw+xml
+cdy=application/vnd.cinderella
+cer=application/pkix-cert
+cfs=application/x-cfs-compressed
+cgm=image/cgm
+chat=application/x-chat
+chm=application/vnd.ms-htmlhelp
+chrt=application/vnd.kde.kchart
+cif=chemical/x-cif
+cii=application/vnd.anser-web-certificate-issue-initiation
+cil=application/vnd.ms-artgalry
+cla=application/vnd.claymore
+class=application/java
+clkk=application/vnd.crick.clicker.keyboard
+clkp=application/vnd.crick.clicker.palette
+clkt=application/vnd.crick.clicker.template
+clkw=application/vnd.crick.clicker.wordbank
+clkx=application/vnd.crick.clicker
+clp=application/x-msclip
+cmc=application/vnd.cosmocaller
+cmdf=chemical/x-cmdf
+cml=chemical/x-cml
+cmp=application/vnd.yellowriver-custom-menu
+cmx=image/x-cmx
+cod=application/vnd.rim.cod
+com=application/x-msdownload
+conf=text/plain
+cpio=application/x-cpio
+cpp=text/x-c
+cpt=application/mac-compactpro
+crd=application/x-mscardfile
+crl=application/pkix-crl
+crt=application/x-x509-ca-cert
+cryptonote=application/vnd.rig.cryptonote
+csh=application/x-csh
+csml=chemical/x-csml
+csp=application/vnd.commonspace
+css=text/css
+cst=application/x-director
+csv=text/csv
+cu=application/cu-seeme
+curl=text/vnd.curl
+cww=application/prs.cww
+cxt=application/x-director
+cxx=text/x-c
+dae=model/vnd.collada+xml
+daf=application/vnd.mobius.daf
+dart=application/vnd.dart
+dataless=application/vnd.fdsn.seed
+davmount=application/davmount+xml
+dbk=application/docbook+xml
+dcr=application/x-director
+dcurl=text/vnd.curl.dcurl
+dd2=application/vnd.oma.dd2+xml
+ddd=application/vnd.fujixerox.ddd
+deb=application/x-debian-package
+def=text/plain
+deploy=application/octet-stream
+der=application/x-x509-ca-cert
+dfac=application/vnd.dreamfactory
+dgc=application/x-dgc-compressed
+dib=image/bmp
+dic=text/x-c
+dir=application/x-director
+dis=application/vnd.mobius.dis
+dist=application/octet-stream
+distz=application/octet-stream
+djv=image/vnd.djvu
+djvu=image/vnd.djvu
+dll=application/x-msdownload
+dmg=application/x-apple-diskimage
+dmp=application/vnd.tcpdump.pcap
+dms=application/octet-stream
+dna=application/vnd.dna
+doc=application/msword
+docm=application/vnd.ms-word.document.macroenabled.12
+docx=application/vnd.openxmlformats-officedocument.wordprocessingml.document
+dot=application/msword
+dotm=application/vnd.ms-word.template.macroenabled.12
+dotx=application/vnd.openxmlformats-officedocument.wordprocessingml.template
+dp=application/vnd.osgi.dp
+dpg=application/vnd.dpgraph
+dra=audio/vnd.dra
+dsc=text/prs.lines.tag
+dssc=application/dssc+der
+dtb=application/x-dtbook+xml
+dtd=application/xml-dtd
+dts=audio/vnd.dts
+dtshd=audio/vnd.dts.hd
+dump=application/octet-stream
+dv=video/x-dv
+dvb=video/vnd.dvb.file
+dvi=application/x-dvi
+dwf=model/vnd.dwf
+dwg=image/vnd.dwg
+dxf=image/vnd.dxf
+dxp=application/vnd.spotfire.dxp
+dxr=application/x-director
+ecelp4800=audio/vnd.nuera.ecelp4800
+ecelp7470=audio/vnd.nuera.ecelp7470
+ecelp9600=audio/vnd.nuera.ecelp9600
+ecma=application/ecmascript
+edm=application/vnd.novadigm.edm
+edx=application/vnd.novadigm.edx
+efif=application/vnd.picsel
+ei6=application/vnd.pg.osasli
+elc=application/octet-stream
+emf=application/x-msmetafile
+eml=message/rfc822
+emma=application/emma+xml
+emz=application/x-msmetafile
+eol=audio/vnd.digital-winds
+eot=application/vnd.ms-fontobject
+eps=application/postscript
+epub=application/epub+zip
+es3=application/vnd.eszigno3+xml
+esa=application/vnd.osgi.subsystem
+esf=application/vnd.epson.esf
+et3=application/vnd.eszigno3+xml
+etx=text/x-setext
+eva=application/x-eva
+evy=application/x-envoy
+exe=application/octet-stream
+exi=application/exi
+ext=application/vnd.novadigm.ext
+ez=application/andrew-inset
+ez2=application/vnd.ezpix-album
+ez3=application/vnd.ezpix-package
+f=text/x-fortran
+f4v=video/x-f4v
+f77=text/x-fortran
+f90=text/x-fortran
+fbs=image/vnd.fastbidsheet
+fcdt=application/vnd.adobe.formscentral.fcdt
+fcs=application/vnd.isac.fcs
+fdf=application/vnd.fdf
+fe_launch=application/vnd.denovo.fcselayout-link
+fg5=application/vnd.fujitsu.oasysgp
+fgd=application/x-director
+fh=image/x-freehand
+fh4=image/x-freehand
+fh5=image/x-freehand
+fh7=image/x-freehand
+fhc=image/x-freehand
+fig=application/x-xfig
+flac=audio/flac
+fli=video/x-fli
+flo=application/vnd.micrografx.flo
+flv=video/x-flv
+flw=application/vnd.kde.kivio
+flx=text/vnd.fmi.flexstor
+fly=text/vnd.fly
+fm=application/vnd.framemaker
+fnc=application/vnd.frogans.fnc
+for=text/x-fortran
+fpx=image/vnd.fpx
+frame=application/vnd.framemaker
+fsc=application/vnd.fsc.weblaunch
+fst=image/vnd.fst
+ftc=application/vnd.fluxtime.clip
+fti=application/vnd.anser-web-funds-transfer-initiation
+fvt=video/vnd.fvt
+fxp=application/vnd.adobe.fxp
+fxpl=application/vnd.adobe.fxp
+fzs=application/vnd.fuzzysheet
+g2w=application/vnd.geoplan
+g3=image/g3fax
+g3w=application/vnd.geospace
+gac=application/vnd.groove-account
+gam=application/x-tads
+gbr=application/rpki-ghostbusters
+gca=application/x-gca-compressed
+gdl=model/vnd.gdl
+geo=application/vnd.dynageo
+gex=application/vnd.geometry-explorer
+ggb=application/vnd.geogebra.file
+ggt=application/vnd.geogebra.tool
+ghf=application/vnd.groove-help
+gif=image/gif
+gim=application/vnd.groove-identity-message
+gml=application/gml+xml
+gmx=application/vnd.gmx
+gnumeric=application/x-gnumeric
+gph=application/vnd.flographit
+gpx=application/gpx+xml
+gqf=application/vnd.grafeq
+gqs=application/vnd.grafeq
+gram=application/srgs
+gramps=application/x-gramps-xml
+gre=application/vnd.geometry-explorer
+grv=application/vnd.groove-injector
+grxml=application/srgs+xml
+gsf=application/x-font-ghostscript
+gtar=application/x-gtar
+gtm=application/vnd.groove-tool-message
+gtw=model/vnd.gtw
+gv=text/vnd.graphviz
+gxf=application/gxf
+gxt=application/vnd.geonext
+gz=application/x-gzip
+h=text/x-c
+h261=video/h261
+h263=video/h263
+h264=video/h264
+hal=application/vnd.hal+xml
+hbci=application/vnd.hbci
+hdf=application/x-hdf
+hh=text/x-c
+hlp=application/winhlp
+hpgl=application/vnd.hp-hpgl
+hpid=application/vnd.hp-hpid
+hps=application/vnd.hp-hps
+hqx=application/mac-binhex40
+htc=text/x-component
+htke=application/vnd.kenameaapp
+htm=text/html
+html=text/html
+hvd=application/vnd.yamaha.hv-dic
+hvp=application/vnd.yamaha.hv-voice
+hvs=application/vnd.yamaha.hv-script
+i2g=application/vnd.intergeo
+icc=application/vnd.iccprofile
+ice=x-conference/x-cooltalk
+icm=application/vnd.iccprofile
+ico=image/x-icon
+ics=text/calendar
+ief=image/ief
+ifb=text/calendar
+ifm=application/vnd.shana.informed.formdata
+iges=model/iges
+igl=application/vnd.igloader
+igm=application/vnd.insors.igm
+igs=model/iges
+igx=application/vnd.micrografx.igx
+iif=application/vnd.shana.informed.interchange
+imp=application/vnd.accpac.simply.imp
+ims=application/vnd.ms-ims
+in=text/plain
+ink=application/inkml+xml
+inkml=application/inkml+xml
+install=application/x-install-instructions
+iota=application/vnd.astraea-software.iota
+ipfix=application/ipfix
+ipk=application/vnd.shana.informed.package
+irm=application/vnd.ibm.rights-management
+irp=application/vnd.irepository.package+xml
+iso=application/x-iso9660-image
+itp=application/vnd.shana.informed.formtemplate
+ivp=application/vnd.immervision-ivp
+ivu=application/vnd.immervision-ivu
+jad=text/vnd.sun.j2me.app-descriptor
+jam=application/vnd.jam
+jar=application/java-archive
+java=text/x-java-source
+jisp=application/vnd.jisp
+jlt=application/vnd.hp-jlyt
+jnlp=application/x-java-jnlp-file
+joda=application/vnd.joost.joda-archive
+jpe=image/jpeg
+jpeg=image/jpeg
+jpg=image/jpeg
+jpgm=video/jpm
+jpgv=video/jpeg
+jpm=video/jpm
+js=application/javascript
+jsf=text/plain
+json=application/json
+jsonml=application/jsonml+json
+jspf=text/plain
+kar=audio/midi
+karbon=application/vnd.kde.karbon
+kfo=application/vnd.kde.kformula
+kia=application/vnd.kidspiration
+kml=application/vnd.google-earth.kml+xml
+kmz=application/vnd.google-earth.kmz
+kne=application/vnd.kinar
+knp=application/vnd.kinar
+kon=application/vnd.kde.kontour
+kpr=application/vnd.kde.kpresenter
+kpt=application/vnd.kde.kpresenter
+kpxx=application/vnd.ds-keypoint
+ksp=application/vnd.kde.kspread
+ktr=application/vnd.kahootz
+ktx=image/ktx
+ktz=application/vnd.kahootz
+kwd=application/vnd.kde.kword
+kwt=application/vnd.kde.kword
+lasxml=application/vnd.las.las+xml
+latex=application/x-latex
+lbd=application/vnd.llamagraphics.life-balance.desktop
+lbe=application/vnd.llamagraphics.life-balance.exchange+xml
+les=application/vnd.hhe.lesson-player
+lha=application/x-lzh-compressed
+link66=application/vnd.route66.link66+xml
+list=text/plain
+list3820=application/vnd.ibm.modcap
+listafp=application/vnd.ibm.modcap
+lnk=application/x-ms-shortcut
+log=text/plain
+lostxml=application/lost+xml
+lrf=application/octet-stream
+lrm=application/vnd.ms-lrm
+ltf=application/vnd.frogans.ltf
+lvp=audio/vnd.lucent.voice
+lwp=application/vnd.lotus-wordpro
+lzh=application/x-lzh-compressed
+m13=application/x-msmediaview
+m14=application/x-msmediaview
+m1v=video/mpeg
+m21=application/mp21
+m2a=audio/mpeg
+m2v=video/mpeg
+m3a=audio/mpeg
+m3u=audio/x-mpegurl
+m3u8=application/vnd.apple.mpegurl
+m4a=audio/mp4
+m4b=audio/mp4
+m4r=audio/mp4
+m4u=video/vnd.mpegurl
+m4v=video/mp4
+ma=application/mathematica
+mac=image/x-macpaint
+mads=application/mads+xml
+mag=application/vnd.ecowin.chart
+maker=application/vnd.framemaker
+man=text/troff
+mar=application/octet-stream
+mathml=application/mathml+xml
+mb=application/mathematica
+mbk=application/vnd.mobius.mbk
+mbox=application/mbox
+mc1=application/vnd.medcalcdata
+mcd=application/vnd.mcd
+mcurl=text/vnd.curl.mcurl
+mdb=application/x-msaccess
+mdi=image/vnd.ms-modi
+me=text/troff
+mesh=model/mesh
+meta4=application/metalink4+xml
+metalink=application/metalink+xml
+mets=application/mets+xml
+mfm=application/vnd.mfmp
+mft=application/rpki-manifest
+mgp=application/vnd.osgeo.mapguide.package
+mgz=application/vnd.proteus.magazine
+mid=audio/midi
+midi=audio/midi
+mie=application/x-mie
+mif=application/x-mif
+mime=message/rfc822
+mj2=video/mj2
+mjp2=video/mj2
+mk3d=video/x-matroska
+mka=audio/x-matroska
+mks=video/x-matroska
+mkv=video/x-matroska
+mlp=application/vnd.dolby.mlp
+mmd=application/vnd.chipnuts.karaoke-mmd
+mmf=application/vnd.smaf
+mmr=image/vnd.fujixerox.edmics-mmr
+mng=video/x-mng
+mny=application/x-msmoney
+mobi=application/x-mobipocket-ebook
+mods=application/mods+xml
+mov=video/quicktime
+movie=video/x-sgi-movie
+mp1=audio/mpeg
+mp2=audio/mpeg
+mp21=application/mp21
+mp2a=audio/mpeg
+mp3=audio/mpeg
+mp4=video/mp4
+mp4a=audio/mp4
+mp4s=application/mp4
+mp4v=video/mp4
+mpa=audio/mpeg
+mpc=application/vnd.mophun.certificate
+mpe=video/mpeg
+mpeg=video/mpeg
+mpega=audio/x-mpeg
+mpg=video/mpeg
+mpg4=video/mp4
+mpga=audio/mpeg
+mpkg=application/vnd.apple.installer+xml
+mpm=application/vnd.blueice.multipass
+mpn=application/vnd.mophun.application
+mpp=application/vnd.ms-project
+mpt=application/vnd.ms-project
+mpv2=video/mpeg2
+mpy=application/vnd.ibm.minipay
+mqy=application/vnd.mobius.mqy
+mrc=application/marc
+mrcx=application/marcxml+xml
+ms=text/troff
+mscml=application/mediaservercontrol+xml
+mseed=application/vnd.fdsn.mseed
+mseq=application/vnd.mseq
+msf=application/vnd.epson.msf
+msh=model/mesh
+msi=application/x-msdownload
+msl=application/vnd.mobius.msl
+msty=application/vnd.muvee.style
+mts=model/vnd.mts
+mus=application/vnd.musician
+musicxml=application/vnd.recordare.musicxml+xml
+mvb=application/x-msmediaview
+mwf=application/vnd.mfer
+mxf=application/mxf
+mxl=application/vnd.recordare.musicxml
+mxml=application/xv+xml
+mxs=application/vnd.triscape.mxs
+mxu=video/vnd.mpegurl
+n-gage=application/vnd.nokia.n-gage.symbian.install
+n3=text/n3
+nb=application/mathematica
+nbp=application/vnd.wolfram.player
+nc=application/x-netcdf
+ncx=application/x-dtbncx+xml
+nfo=text/x-nfo
+ngdat=application/vnd.nokia.n-gage.data
+nitf=application/vnd.nitf
+nlu=application/vnd.neurolanguage.nlu
+nml=application/vnd.enliven
+nnd=application/vnd.noblenet-directory
+nns=application/vnd.noblenet-sealer
+nnw=application/vnd.noblenet-web
+npx=image/vnd.net-fpx
+nsc=application/x-conference
+nsf=application/vnd.lotus-notes
+ntf=application/vnd.nitf
+nzb=application/x-nzb
+oa2=application/vnd.fujitsu.oasys2
+oa3=application/vnd.fujitsu.oasys3
+oas=application/vnd.fujitsu.oasys
+obd=application/x-msbinder
+obj=application/x-tgif
+oda=application/oda
+odb=application/vnd.oasis.opendocument.database
+odc=application/vnd.oasis.opendocument.chart
+odf=application/vnd.oasis.opendocument.formula
+odft=application/vnd.oasis.opendocument.formula-template
+odg=application/vnd.oasis.opendocument.graphics
+odi=application/vnd.oasis.opendocument.image
+odm=application/vnd.oasis.opendocument.text-master
+odp=application/vnd.oasis.opendocument.presentation
+ods=application/vnd.oasis.opendocument.spreadsheet
+odt=application/vnd.oasis.opendocument.text
+oga=audio/ogg
+ogg=audio/ogg
+ogv=video/ogg
+ogx=application/ogg
+omdoc=application/omdoc+xml
+onepkg=application/onenote
+onetmp=application/onenote
+onetoc=application/onenote
+onetoc2=application/onenote
+opf=application/oebps-package+xml
+opml=text/x-opml
+oprc=application/vnd.palm
+org=application/vnd.lotus-organizer
+osf=application/vnd.yamaha.openscoreformat
+osfpvg=application/vnd.yamaha.openscoreformat.osfpvg+xml
+otc=application/vnd.oasis.opendocument.chart-template
+otf=font/otf
+otg=application/vnd.oasis.opendocument.graphics-template
+oth=application/vnd.oasis.opendocument.text-web
+oti=application/vnd.oasis.opendocument.image-template
+otp=application/vnd.oasis.opendocument.presentation-template
+ots=application/vnd.oasis.opendocument.spreadsheet-template
+ott=application/vnd.oasis.opendocument.text-template
+oxps=application/oxps
+oxt=application/vnd.openofficeorg.extension
+p=text/x-pascal
+p10=application/pkcs10
+p12=application/x-pkcs12
+p7b=application/x-pkcs7-certificates
+p7c=application/pkcs7-mime
+p7m=application/pkcs7-mime
+p7r=application/x-pkcs7-certreqresp
+p7s=application/pkcs7-signature
+p8=application/pkcs8
+pas=text/x-pascal
+paw=application/vnd.pawaafile
+pbd=application/vnd.powerbuilder6
+pbm=image/x-portable-bitmap
+pcap=application/vnd.tcpdump.pcap
+pcf=application/x-font-pcf
+pcl=application/vnd.hp-pcl
+pclxl=application/vnd.hp-pclxl
+pct=image/pict
+pcurl=application/vnd.curl.pcurl
+pcx=image/x-pcx
+pdb=application/vnd.palm
+pdf=application/pdf
+pfa=application/x-font-type1
+pfb=application/x-font-type1
+pfm=application/x-font-type1
+pfr=application/font-tdpfr
+pfx=application/x-pkcs12
+pgm=image/x-portable-graymap
+pgn=application/x-chess-pgn
+pgp=application/pgp-encrypted
+pic=image/pict
+pict=image/pict
+pkg=application/octet-stream
+pki=application/pkixcmp
+pkipath=application/pkix-pkipath
+plb=application/vnd.3gpp.pic-bw-large
+plc=application/vnd.mobius.plc
+plf=application/vnd.pocketlearn
+pls=audio/x-scpls
+pml=application/vnd.ctc-posml
+png=image/png
+pnm=image/x-portable-anymap
+pnt=image/x-macpaint
+portpkg=application/vnd.macports.portpkg
+pot=application/vnd.ms-powerpoint
+potm=application/vnd.ms-powerpoint.template.macroenabled.12
+potx=application/vnd.openxmlformats-officedocument.presentationml.template
+ppam=application/vnd.ms-powerpoint.addin.macroenabled.12
+ppd=application/vnd.cups-ppd
+ppm=image/x-portable-pixmap
+pps=application/vnd.ms-powerpoint
+ppsm=application/vnd.ms-powerpoint.slideshow.macroenabled.12
+ppsx=application/vnd.openxmlformats-officedocument.presentationml.slideshow
+ppt=application/vnd.ms-powerpoint
+pptm=application/vnd.ms-powerpoint.presentation.macroenabled.12
+pptx=application/vnd.openxmlformats-officedocument.presentationml.presentation
+pqa=application/vnd.palm
+prc=application/x-mobipocket-ebook
+pre=application/vnd.lotus-freelance
+prf=application/pics-rules
+ps=application/postscript
+psb=application/vnd.3gpp.pic-bw-small
+psd=image/vnd.adobe.photoshop
+psf=application/x-font-linux-psf
+pskcxml=application/pskc+xml
+ptid=application/vnd.pvi.ptid1
+pub=application/x-mspublisher
+pvb=application/vnd.3gpp.pic-bw-var
+pwn=application/vnd.3m.post-it-notes
+pya=audio/vnd.ms-playready.media.pya
+pyv=video/vnd.ms-playready.media.pyv
+qam=application/vnd.epson.quickanime
+qbo=application/vnd.intu.qbo
+qfx=application/vnd.intu.qfx
+qps=application/vnd.publishare-delta-tree
+qt=video/quicktime
+qti=image/x-quicktime
+qtif=image/x-quicktime
+qwd=application/vnd.quark.quarkxpress
+qwt=application/vnd.quark.quarkxpress
+qxb=application/vnd.quark.quarkxpress
+qxd=application/vnd.quark.quarkxpress
+qxl=application/vnd.quark.quarkxpress
+qxt=application/vnd.quark.quarkxpress
+ra=audio/x-pn-realaudio
+ram=audio/x-pn-realaudio
+rar=application/x-rar-compressed
+ras=image/x-cmu-raster
+rcprofile=application/vnd.ipunplugged.rcprofile
+rdf=application/rdf+xml
+rdz=application/vnd.data-vision.rdz
+rep=application/vnd.businessobjects
+res=application/x-dtbresource+xml
+rgb=image/x-rgb
+rif=application/reginfo+xml
+rip=audio/vnd.rip
+ris=application/x-research-info-systems
+rl=application/resource-lists+xml
+rlc=image/vnd.fujixerox.edmics-rlc
+rld=application/resource-lists-diff+xml
+rm=application/vnd.rn-realmedia
+rmi=audio/midi
+rmp=audio/x-pn-realaudio-plugin
+rms=application/vnd.jcp.javame.midlet-rms
+rmvb=application/vnd.rn-realmedia-vbr
+rnc=application/relax-ng-compact-syntax
+roa=application/rpki-roa
+roff=text/troff
+rp9=application/vnd.cloanto.rp9
+rpss=application/vnd.nokia.radio-presets
+rpst=application/vnd.nokia.radio-preset
+rq=application/sparql-query
+rs=application/rls-services+xml
+rsd=application/rsd+xml
+rss=application/rss+xml
+rtf=application/rtf
+rtx=text/richtext
+s=text/x-asm
+s3m=audio/s3m
+saf=application/vnd.yamaha.smaf-audio
+sbml=application/sbml+xml
+sc=application/vnd.ibm.secure-container
+scd=application/x-msschedule
+scm=application/vnd.lotus-screencam
+scq=application/scvp-cv-request
+scs=application/scvp-cv-response
+scurl=text/vnd.curl.scurl
+sda=application/vnd.stardivision.draw
+sdc=application/vnd.stardivision.calc
+sdd=application/vnd.stardivision.impress
+sdkd=application/vnd.solent.sdkm+xml
+sdkm=application/vnd.solent.sdkm+xml
+sdp=application/sdp
+sdw=application/vnd.stardivision.writer
+see=application/vnd.seemail
+seed=application/vnd.fdsn.seed
+sema=application/vnd.sema
+semd=application/vnd.semd
+semf=application/vnd.semf
+ser=application/java-serialized-object
+setpay=application/set-payment-initiation
+setreg=application/set-registration-initiation
+sfd-hdstx=application/vnd.hydrostatix.sof-data
+sfs=application/vnd.spotfire.sfs
+sfv=text/x-sfv
+sgi=image/sgi
+sgl=application/vnd.stardivision.writer-global
+sgm=text/sgml
+sgml=text/sgml
+sh=application/x-sh
+shar=application/x-shar
+shf=application/shf+xml
+sid=image/x-mrsid-image
+sig=application/pgp-signature
+sil=audio/silk
+silo=model/mesh
+sis=application/vnd.symbian.install
+sisx=application/vnd.symbian.install
+sit=application/x-stuffit
+sitx=application/x-stuffitx
+skd=application/vnd.koan
+skm=application/vnd.koan
+skp=application/vnd.koan
+skt=application/vnd.koan
+sldm=application/vnd.ms-powerpoint.slide.macroenabled.12
+sldx=application/vnd.openxmlformats-officedocument.presentationml.slide
+slt=application/vnd.epson.salt
+sm=application/vnd.stepmania.stepchart
+smf=application/vnd.stardivision.math
+smi=application/smil+xml
+smil=application/smil+xml
+smv=video/x-smv
+smzip=application/vnd.stepmania.package
+snd=audio/basic
+snf=application/x-font-snf
+so=application/octet-stream
+spc=application/x-pkcs7-certificates
+spf=application/vnd.yamaha.smaf-phrase
+spl=application/x-futuresplash
+spot=text/vnd.in3d.spot
+spp=application/scvp-vp-response
+spq=application/scvp-vp-request
+spx=audio/ogg
+sql=application/x-sql
+src=application/x-wais-source
+srt=application/x-subrip
+sru=application/sru+xml
+srx=application/sparql-results+xml
+ssdl=application/ssdl+xml
+sse=application/vnd.kodak-descriptor
+ssf=application/vnd.epson.ssf
+ssml=application/ssml+xml
+st=application/vnd.sailingtracker.track
+stc=application/vnd.sun.xml.calc.template
+std=application/vnd.sun.xml.draw.template
+stf=application/vnd.wt.stf
+sti=application/vnd.sun.xml.impress.template
+stk=application/hyperstudio
+stl=application/vnd.ms-pki.stl
+str=application/vnd.pg.format
+stw=application/vnd.sun.xml.writer.template
+sub=text/vnd.dvb.subtitle
+sus=application/vnd.sus-calendar
+susp=application/vnd.sus-calendar
+sv4cpio=application/x-sv4cpio
+sv4crc=application/x-sv4crc
+svc=application/vnd.dvb.service
+svd=application/vnd.svd
+svg=image/svg+xml
+svgz=image/svg+xml
+swa=application/x-director
+swf=application/x-shockwave-flash
+swi=application/vnd.aristanetworks.swi
+sxc=application/vnd.sun.xml.calc
+sxd=application/vnd.sun.xml.draw
+sxg=application/vnd.sun.xml.writer.global
+sxi=application/vnd.sun.xml.impress
+sxm=application/vnd.sun.xml.math
+sxw=application/vnd.sun.xml.writer
+t=text/troff
+t3=application/x-t3vm-image
+taglet=application/vnd.mynfc
+tao=application/vnd.tao.intent-module-archive
+tar=application/x-tar
+tcap=application/vnd.3gpp2.tcap
+tcl=application/x-tcl
+teacher=application/vnd.smart.teacher
+tei=application/tei+xml
+teicorpus=application/tei+xml
+tex=application/x-tex
+texi=application/x-texinfo
+texinfo=application/x-texinfo
+text=text/plain
+tfi=application/thraud+xml
+tfm=application/x-tex-tfm
+tga=image/x-tga
+thmx=application/vnd.ms-officetheme
+tif=image/tiff
+tiff=image/tiff
+tmo=application/vnd.tmobile-livetv
+torrent=application/x-bittorrent
+tpl=application/vnd.groove-tool-template
+tpt=application/vnd.trid.tpt
+tr=text/troff
+tra=application/vnd.trueapp
+trm=application/x-msterminal
+tsd=application/timestamped-data
+tsv=text/tab-separated-values
+ttc=font/collection
+ttf=font/ttf
+ttl=text/turtle
+twd=application/vnd.simtech-mindmapper
+twds=application/vnd.simtech-mindmapper
+txd=application/vnd.genomatix.tuxedo
+txf=application/vnd.mobius.txf
+txt=text/plain
+u32=application/x-authorware-bin
+udeb=application/x-debian-package
+ufd=application/vnd.ufdl
+ufdl=application/vnd.ufdl
+ulw=audio/basic
+ulx=application/x-glulx
+umj=application/vnd.umajin
+unityweb=application/vnd.unity
+uoml=application/vnd.uoml+xml
+uri=text/uri-list
+uris=text/uri-list
+urls=text/uri-list
+ustar=application/x-ustar
+utz=application/vnd.uiq.theme
+uu=text/x-uuencode
+uva=audio/vnd.dece.audio
+uvd=application/vnd.dece.data
+uvf=application/vnd.dece.data
+uvg=image/vnd.dece.graphic
+uvh=video/vnd.dece.hd
+uvi=image/vnd.dece.graphic
+uvm=video/vnd.dece.mobile
+uvp=video/vnd.dece.pd
+uvs=video/vnd.dece.sd
+uvt=application/vnd.dece.ttml+xml
+uvu=video/vnd.uvvu.mp4
+uvv=video/vnd.dece.video
+uvva=audio/vnd.dece.audio
+uvvd=application/vnd.dece.data
+uvvf=application/vnd.dece.data
+uvvg=image/vnd.dece.graphic
+uvvh=video/vnd.dece.hd
+uvvi=image/vnd.dece.graphic
+uvvm=video/vnd.dece.mobile
+uvvp=video/vnd.dece.pd
+uvvs=video/vnd.dece.sd
+uvvt=application/vnd.dece.ttml+xml
+uvvu=video/vnd.uvvu.mp4
+uvvv=video/vnd.dece.video
+uvvx=application/vnd.dece.unspecified
+uvvz=application/vnd.dece.zip
+uvx=application/vnd.dece.unspecified
+uvz=application/vnd.dece.zip
+vcard=text/vcard
+vcd=application/x-cdlink
+vcf=text/x-vcard
+vcg=application/vnd.groove-vcard
+vcs=text/x-vcalendar
+vcx=application/vnd.vcx
+vis=application/vnd.visionary
+viv=video/vnd.vivo
+vob=video/x-ms-vob
+vor=application/vnd.stardivision.writer
+vox=application/x-authorware-bin
+vrml=model/vrml
+vsd=application/vnd.visio
+vsf=application/vnd.vsf
+vss=application/vnd.visio
+vst=application/vnd.visio
+vsw=application/vnd.visio
+vtu=model/vnd.vtu
+vxml=application/voicexml+xml
+w3d=application/x-director
+wad=application/x-doom
+wav=audio/x-wav
+wax=audio/x-ms-wax
+wbmp=image/vnd.wap.wbmp
+wbs=application/vnd.criticaltools.wbs+xml
+wbxml=application/vnd.wap.wbxml
+wcm=application/vnd.ms-works
+wdb=application/vnd.ms-works
+wdp=image/vnd.ms-photo
+weba=audio/webm
+webm=video/webm
+webp=image/webp
+wg=application/vnd.pmi.widget
+wgt=application/widget
+wks=application/vnd.ms-works
+wm=video/x-ms-wm
+wma=audio/x-ms-wma
+wmd=application/x-ms-wmd
+wmf=application/x-msmetafile
+wml=text/vnd.wap.wml
+wmlc=application/vnd.wap.wmlc
+wmls=text/vnd.wap.wmlscript
+wmlsc=application/vnd.wap.wmlscriptc
+wmv=video/x-ms-wmv
+wmx=video/x-ms-wmx
+wmz=application/x-msmetafile
+woff=font/woff
+woff2=font/woff2
+wpd=application/vnd.wordperfect
+wpl=application/vnd.ms-wpl
+wps=application/vnd.ms-works
+wqd=application/vnd.wqd
+wri=application/x-mswrite
+wrl=model/vrml
+wsdl=application/wsdl+xml
+wspolicy=application/wspolicy+xml
+wtb=application/vnd.webturbo
+wvx=video/x-ms-wvx
+x32=application/x-authorware-bin
+x3d=model/x3d+xml
+x3db=model/x3d+binary
+x3dbz=model/x3d+binary
+x3dv=model/x3d+vrml
+x3dvz=model/x3d+vrml
+x3dz=model/x3d+xml
+xaml=application/xaml+xml
+xap=application/x-silverlight-app
+xar=application/vnd.xara
+xbap=application/x-ms-xbap
+xbd=application/vnd.fujixerox.docuworks.binder
+xbm=image/x-xbitmap
+xdf=application/xcap-diff+xml
+xdm=application/vnd.syncml.dm+xml
+xdp=application/vnd.adobe.xdp+xml
+xdssc=application/dssc+xml
+xdw=application/vnd.fujixerox.docuworks
+xenc=application/xenc+xml
+xer=application/patch-ops-error+xml
+xfdf=application/vnd.adobe.xfdf
+xfdl=application/vnd.xfdl
+xht=application/xhtml+xml
+xhtml=application/xhtml+xml
+xhvml=application/xv+xml
+xif=image/vnd.xiff
+xla=application/vnd.ms-excel
+xlam=application/vnd.ms-excel.addin.macroenabled.12
+xlc=application/vnd.ms-excel
+xlf=application/x-xliff+xml
+xlm=application/vnd.ms-excel
+xls=application/vnd.ms-excel
+xlsb=application/vnd.ms-excel.sheet.binary.macroenabled.12
+xlsm=application/vnd.ms-excel.sheet.macroenabled.12
+xlsx=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
+xlt=application/vnd.ms-excel
+xltm=application/vnd.ms-excel.template.macroenabled.12
+xltx=application/vnd.openxmlformats-officedocument.spreadsheetml.template
+xlw=application/vnd.ms-excel
+xm=audio/xm
+xml=application/xml
+xo=application/vnd.olpc-sugar
+xop=application/xop+xml
+xpi=application/x-xpinstall
+xpl=application/xproc+xml
+xpm=image/x-xpixmap
+xpr=application/vnd.is-xpr
+xps=application/vnd.ms-xpsdocument
+xpw=application/vnd.intercon.formnet
+xpx=application/vnd.intercon.formnet
+xsl=application/xml
+xslt=application/xslt+xml
+xsm=application/vnd.syncml+xml
+xspf=application/xspf+xml
+xul=application/vnd.mozilla.xul+xml
+xvm=application/xv+xml
+xvml=application/xv+xml
+xwd=image/x-xwindowdump
+xyz=chemical/x-xyz
+xz=application/x-xz
+yang=application/yang
+yin=application/yin+xml
+z=application/x-compress
+z1=application/x-zmachine
+z2=application/x-zmachine
+z3=application/x-zmachine
+z4=application/x-zmachine
+z5=application/x-zmachine
+z6=application/x-zmachine
+z7=application/x-zmachine
+z8=application/x-zmachine
+zaz=application/vnd.zzazz.deck+xml
+zip=application/zip
+zir=application/vnd.zul
+zirz=application/vnd.zul
+zmm=application/vnd.handheld-entertainment+xml
diff --git a/java/org/apache/catalina/startup/Tomcat.java b/java/org/apache/catalina/startup/Tomcat.java
index 15fdd67..a6f09f3 100644
--- a/java/org/apache/catalina/startup/Tomcat.java
+++ b/java/org/apache/catalina/startup/Tomcat.java
@@ -30,6 +30,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.Stack;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
@@ -1090,11 +1091,8 @@ public class Tomcat {
         // Sessions
         ctx.setSessionTimeout(30);
 
-        // MIME mappings
-        for (int i = 0; i < DEFAULT_MIME_MAPPINGS.length;) {
-            ctx.addMimeMapping(DEFAULT_MIME_MAPPINGS[i++],
-                    DEFAULT_MIME_MAPPINGS[i++]);
-        }
+        // MIME type mappings
+        addDefaultMimeTypeMappings(ctx);
 
         // Welcome files
         ctx.addWelcomeFile("index.html");
@@ -1104,6 +1102,25 @@ public class Tomcat {
 
 
     /**
+     * Add the default MIME type mappings to the provide Context.
+     *
+     * @param context The web application to which the default MIME type
+     *                mappings should be added.
+     */
+    public static void addDefaultMimeTypeMappings(Context context) {
+        Properties defaultMimeMappings = new Properties();
+        try (InputStream is = Tomcat.class.getResourceAsStream("MimeTypeMappings.properties")) {
+            defaultMimeMappings.load(is);
+            for (Map.Entry<Object, Object>  entry: defaultMimeMappings.entrySet()) {
+                context.addMimeMapping((String) entry.getKey(), (String) entry.getValue());
+            }
+        } catch (IOException e) {
+            throw new IllegalStateException(sm.getString("tomcat.defaultMimeTypeMappingsFail"), e);
+        }
+    }
+
+
+    /**
      * Fix startup sequence - required if you don't use web.xml.
      *
      * <p>
@@ -1215,185 +1232,6 @@ public class Tomcat {
         }
     }
 
-    /**
-     * TODO: would a properties resource be better ? Or just parsing
-     * /etc/mime.types ?
-     * This is needed because we don't use the default web.xml, where this
-     * is encoded.
-     */
-    private static final String[] DEFAULT_MIME_MAPPINGS = {
-        "abs", "audio/x-mpeg",
-        "ai", "application/postscript",
-        "aif", "audio/x-aiff",
-        "aifc", "audio/x-aiff",
-        "aiff", "audio/x-aiff",
-        "aim", "application/x-aim",
-        "art", "image/x-jg",
-        "asf", "video/x-ms-asf",
-        "asx", "video/x-ms-asf",
-        "au", "audio/basic",
-        "avi", "video/x-msvideo",
-        "avx", "video/x-rad-screenplay",
-        "bcpio", "application/x-bcpio",
-        "bin", "application/octet-stream",
-        "bmp", "image/bmp",
-        "body", "text/html",
-        "cdf", "application/x-cdf",
-        "cer", "application/pkix-cert",
-        "class", "application/java",
-        "cpio", "application/x-cpio",
-        "csh", "application/x-csh",
-        "css", "text/css",
-        "dib", "image/bmp",
-        "doc", "application/msword",
-        "dtd", "application/xml-dtd",
-        "dv", "video/x-dv",
-        "dvi", "application/x-dvi",
-        "eps", "application/postscript",
-        "etx", "text/x-setext",
-        "exe", "application/octet-stream",
-        "gif", "image/gif",
-        "gtar", "application/x-gtar",
-        "gz", "application/x-gzip",
-        "hdf", "application/x-hdf",
-        "hqx", "application/mac-binhex40",
-        "htc", "text/x-component",
-        "htm", "text/html",
-        "html", "text/html",
-        "ief", "image/ief",
-        "jad", "text/vnd.sun.j2me.app-descriptor",
-        "jar", "application/java-archive",
-        "java", "text/x-java-source",
-        "jnlp", "application/x-java-jnlp-file",
-        "jpe", "image/jpeg",
-        "jpeg", "image/jpeg",
-        "jpg", "image/jpeg",
-        "js", "application/javascript",
-        "jsf", "text/plain",
-        "jspf", "text/plain",
-        "kar", "audio/midi",
-        "latex", "application/x-latex",
-        "m3u", "audio/x-mpegurl",
-        "mac", "image/x-macpaint",
-        "man", "text/troff",
-        "mathml", "application/mathml+xml",
-        "me", "text/troff",
-        "mid", "audio/midi",
-        "midi", "audio/midi",
-        "mif", "application/x-mif",
-        "mov", "video/quicktime",
-        "movie", "video/x-sgi-movie",
-        "mp1", "audio/mpeg",
-        "mp2", "audio/mpeg",
-        "mp3", "audio/mpeg",
-        "mp4", "video/mp4",
-        "mpa", "audio/mpeg",
-        "mpe", "video/mpeg",
-        "mpeg", "video/mpeg",
-        "mpega", "audio/x-mpeg",
-        "mpg", "video/mpeg",
-        "mpv2", "video/mpeg2",
-        "nc", "application/x-netcdf",
-        "oda", "application/oda",
-        "odb", "application/vnd.oasis.opendocument.database",
-        "odc", "application/vnd.oasis.opendocument.chart",
-        "odf", "application/vnd.oasis.opendocument.formula",
-        "odg", "application/vnd.oasis.opendocument.graphics",
-        "odi", "application/vnd.oasis.opendocument.image",
-        "odm", "application/vnd.oasis.opendocument.text-master",
-        "odp", "application/vnd.oasis.opendocument.presentation",
-        "ods", "application/vnd.oasis.opendocument.spreadsheet",
-        "odt", "application/vnd.oasis.opendocument.text",
-        "otg", "application/vnd.oasis.opendocument.graphics-template",
-        "oth", "application/vnd.oasis.opendocument.text-web",
-        "otp", "application/vnd.oasis.opendocument.presentation-template",
-        "ots", "application/vnd.oasis.opendocument.spreadsheet-template ",
-        "ott", "application/vnd.oasis.opendocument.text-template",
-        "ogx", "application/ogg",
-        "ogv", "video/ogg",
-        "oga", "audio/ogg",
-        "ogg", "audio/ogg",
-        "spx", "audio/ogg",
-        "flac", "audio/flac",
-        "anx", "application/annodex",
-        "axa", "audio/annodex",
-        "axv", "video/annodex",
-        "xspf", "application/xspf+xml",
-        "pbm", "image/x-portable-bitmap",
-        "pct", "image/pict",
-        "pdf", "application/pdf",
-        "pgm", "image/x-portable-graymap",
-        "pic", "image/pict",
-        "pict", "image/pict",
-        "pls", "audio/x-scpls",
-        "png", "image/png",
-        "pnm", "image/x-portable-anymap",
-        "pnt", "image/x-macpaint",
-        "ppm", "image/x-portable-pixmap",
-        "ppt", "application/vnd.ms-powerpoint",
-        "pps", "application/vnd.ms-powerpoint",
-        "ps", "application/postscript",
-        "psd", "image/vnd.adobe.photoshop",
-        "qt", "video/quicktime",
-        "qti", "image/x-quicktime",
-        "qtif", "image/x-quicktime",
-        "ras", "image/x-cmu-raster",
-        "rdf", "application/rdf+xml",
-        "rgb", "image/x-rgb",
-        "rm", "application/vnd.rn-realmedia",
-        "roff", "text/troff",
-        "rtf", "application/rtf",
-        "rtx", "text/richtext",
-        "sh", "application/x-sh",
-        "shar", "application/x-shar",
-        /*"shtml", "text/x-server-parsed-html",*/
-        "sit", "application/x-stuffit",
-        "snd", "audio/basic",
-        "src", "application/x-wais-source",
-        "sv4cpio", "application/x-sv4cpio",
-        "sv4crc", "application/x-sv4crc",
-        "svg", "image/svg+xml",
-        "svgz", "image/svg+xml",
-        "swf", "application/x-shockwave-flash",
-        "t", "text/troff",
-        "tar", "application/x-tar",
-        "tcl", "application/x-tcl",
-        "tex", "application/x-tex",
-        "texi", "application/x-texinfo",
-        "texinfo", "application/x-texinfo",
-        "tif", "image/tiff",
-        "tiff", "image/tiff",
-        "tr", "text/troff",
-        "tsv", "text/tab-separated-values",
-        "txt", "text/plain",
-        "ulw", "audio/basic",
-        "ustar", "application/x-ustar",
-        "vxml", "application/voicexml+xml",
-        "xbm", "image/x-xbitmap",
-        "xht", "application/xhtml+xml",
-        "xhtml", "application/xhtml+xml",
-        "xls", "application/vnd.ms-excel",
-        "xml", "application/xml",
-        "xpm", "image/x-xpixmap",
-        "xsl", "application/xml",
-        "xslt", "application/xslt+xml",
-        "xul", "application/vnd.mozilla.xul+xml",
-        "xwd", "image/x-xwindowdump",
-        "vsd", "application/vnd.visio",
-        "wav", "audio/x-wav",
-        "wbmp", "image/vnd.wap.wbmp",
-        "wml", "text/vnd.wap.wml",
-        "wmlc", "application/vnd.wap.wmlc",
-        "wmls", "text/vnd.wap.wmlsc",
-        "wmlscriptc", "application/vnd.wap.wmlscriptc",
-        "wmv", "video/x-ms-wmv",
-        "wrl", "model/vrml",
-        "wspolicy", "application/wspolicy+xml",
-        "Z", "application/x-compress",
-        "z", "application/x-compress",
-        "zip", "application/zip"
-    };
-
     protected URL getWebappConfigFile(String path, String contextName) {
         File docBase = new File(path);
         if (docBase.isDirectory()) {
diff --git a/java/org/apache/tomcat/buildutil/MimeTypeMappings.java b/java/org/apache/tomcat/buildutil/MimeTypeMappings.java
new file mode 100644
index 0000000..8c1e221
--- /dev/null
+++ b/java/org/apache/tomcat/buildutil/MimeTypeMappings.java
@@ -0,0 +1,73 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.tomcat.buildutil;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.nio.charset.StandardCharsets;
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+import org.apache.tomcat.util.descriptor.DigesterFactory;
+import org.apache.tomcat.util.descriptor.XmlErrorHandler;
+import org.apache.tomcat.util.descriptor.web.WebRuleSet;
+import org.apache.tomcat.util.descriptor.web.WebXml;
+import org.apache.tomcat.util.digester.Digester;
+import org.xml.sax.InputSource;
+
+public class MimeTypeMappings {
+
+    public static void main(String... args) throws Exception {
+        InputSource globalWebXml = new InputSource(new File("conf/web.xml").getAbsoluteFile().toURI().toString());
+
+        WebXml webXmlDefaultFragment = new WebXml();
+        webXmlDefaultFragment.setOverridable(true);
+        webXmlDefaultFragment.setDistributable(true);
+        webXmlDefaultFragment.setAlwaysAddWelcomeFiles(false);
+
+        Digester digester = DigesterFactory.newDigester(true, true, new WebRuleSet(), true);
+        XmlErrorHandler handler = new XmlErrorHandler();
+        digester.setErrorHandler(handler);
+        digester.push(webXmlDefaultFragment);
+        digester.parse(globalWebXml);
+
+        Map<String,String> webXmlMimeMappings = webXmlDefaultFragment.getMimeMappings();
+        SortedMap<String,String> sortedWebXmlMimeMappings = new TreeMap<>();
+        sortedWebXmlMimeMappings.putAll(webXmlMimeMappings);
+
+        File f = new File("java/org/apache/catalina/startup/MimeTypeMappings.properties");
+        FileOutputStream fos = new FileOutputStream(f);
+        Writer w = new OutputStreamWriter(fos, StandardCharsets.US_ASCII);
+
+        Utils.insertLicense(w);
+
+        w.write(System.lineSeparator());
+
+        for (Map.Entry<String, String> mapping : sortedWebXmlMimeMappings.entrySet()) {
+            w.write(mapping.getKey());
+            w.write("=");
+            w.write(mapping.getValue());
+            w.write(System.lineSeparator());
+        }
+
+        w.close();
+        fos.close();
+    }
+}
diff --git a/java/org/apache/tomcat/buildutil/Utils.java b/java/org/apache/tomcat/buildutil/Utils.java
new file mode 100644
index 0000000..7799f59
--- /dev/null
+++ b/java/org/apache/tomcat/buildutil/Utils.java
@@ -0,0 +1,59 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.tomcat.buildutil;
+
+import java.io.IOException;
+import java.io.Writer;
+
+public class Utils {
+
+    private Utils() {
+        // Utility class. Hide default constructor.
+    }
+
+
+    public static void insertLicense(Writer w) throws IOException {
+        w.write("# Licensed to the Apache Software Foundation (ASF) under one or more");
+        w.write(System.lineSeparator());
+        w.write("# contributor license agreements.  See the NOTICE file distributed with");
+        w.write(System.lineSeparator());
+        w.write("# this work for additional information regarding copyright ownership.");
+        w.write(System.lineSeparator());
+        w.write("# The ASF licenses this file to You under the Apache License, Version 2.0");
+        w.write(System.lineSeparator());
+        w.write("# (the \"License\"); you may not use this file except in compliance with");
+        w.write(System.lineSeparator());
+        w.write("# the License.  You may obtain a copy of the License at");
+        w.write(System.lineSeparator());
+        w.write("#");
+        w.write(System.lineSeparator());
+        w.write("#     http://www.apache.org/licenses/LICENSE-2.0");
+        w.write(System.lineSeparator());
+        w.write("#");
+        w.write(System.lineSeparator());
+        w.write("# Unless required by applicable law or agreed to in writing, software");
+        w.write(System.lineSeparator());
+        w.write("# distributed under the License is distributed on an \"AS IS\" BASIS,");
+        w.write(System.lineSeparator());
+        w.write("# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.");
+        w.write(System.lineSeparator());
+        w.write("# See the License for the specific language governing permissions and");
+        w.write(System.lineSeparator());
+        w.write("# limitations under the License.");
+        w.write(System.lineSeparator());
+    }
+}
diff --git a/java/org/apache/tomcat/buildutil/translate/Import.java b/java/org/apache/tomcat/buildutil/translate/Import.java
index bdffd73..fe637cc 100644
--- a/java/org/apache/tomcat/buildutil/translate/Import.java
+++ b/java/org/apache/tomcat/buildutil/translate/Import.java
@@ -69,7 +69,7 @@ public class Import {
                 File outFile = new File(currentPkg.replace('.', File.separatorChar), Constants.L10N_PREFIX + language + Constants.L10N_SUFFIX);
                 FileOutputStream fos = new FileOutputStream(outFile);
                 w = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
-                insertLicense(w);
+                org.apache.tomcat.buildutil.Utils.insertLicense(w);
             }
 
             if (!currentGroup.equals(cKey.group)) {
@@ -86,36 +86,6 @@ public class Import {
     }
 
 
-    private static void insertLicense(Writer w) throws IOException {
-        w.write("# Licensed to the Apache Software Foundation (ASF) under one or more");
-        w.write(System.lineSeparator());
-        w.write("# contributor license agreements.  See the NOTICE file distributed with");
-        w.write(System.lineSeparator());
-        w.write("# this work for additional information regarding copyright ownership.");
-        w.write(System.lineSeparator());
-        w.write("# The ASF licenses this file to You under the Apache License, Version 2.0");
-        w.write(System.lineSeparator());
-        w.write("# (the \"License\"); you may not use this file except in compliance with");
-        w.write(System.lineSeparator());
-        w.write("# the License.  You may obtain a copy of the License at");
-        w.write(System.lineSeparator());
-        w.write("#");
-        w.write(System.lineSeparator());
-        w.write("#     http://www.apache.org/licenses/LICENSE-2.0");
-        w.write(System.lineSeparator());
-        w.write("#");
-        w.write(System.lineSeparator());
-        w.write("# Unless required by applicable law or agreed to in writing, software");
-        w.write(System.lineSeparator());
-        w.write("# distributed under the License is distributed on an \"AS IS\" BASIS,");
-        w.write(System.lineSeparator());
-        w.write("# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.");
-        w.write(System.lineSeparator());
-        w.write("# See the License for the specific language governing permissions and");
-        w.write(System.lineSeparator());
-        w.write("# limitations under the License.");
-        w.write(System.lineSeparator());
-    }
     private static class CompositeKey {
 
         public final String pkg;
diff --git a/test/org/apache/catalina/startup/TestTomcatNoServer.java b/test/org/apache/catalina/startup/TestTomcatNoServer.java
new file mode 100644
index 0000000..5a2f374
--- /dev/null
+++ b/test/org/apache/catalina/startup/TestTomcatNoServer.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.catalina.startup;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import org.apache.catalina.core.StandardContext;
+import org.apache.tomcat.util.descriptor.DigesterFactory;
+import org.apache.tomcat.util.descriptor.XmlErrorHandler;
+import org.apache.tomcat.util.descriptor.web.WebRuleSet;
+import org.apache.tomcat.util.descriptor.web.WebXml;
+import org.apache.tomcat.util.digester.Digester;
+import org.xml.sax.InputSource;
+
+
+/**
+ * Tests that do not require a Tomcat instance to be started.
+ */
+public class TestTomcatNoServer {
+
+    @Test
+    public void testDefaultMimeTypeMappings() throws Exception {
+        StandardContext ctx = new StandardContext();
+
+        Tomcat.initWebappDefaults(ctx);
+
+        InputSource globalWebXml = new InputSource(new File("conf/web.xml").getAbsoluteFile().toURI().toString());
+
+        WebXml webXmlDefaultFragment = new WebXml();
+        webXmlDefaultFragment.setOverridable(true);
+        webXmlDefaultFragment.setDistributable(true);
+        webXmlDefaultFragment.setAlwaysAddWelcomeFiles(false);
+
+        Digester digester = DigesterFactory.newDigester(true, true, new WebRuleSet(), true);
+        XmlErrorHandler handler = new XmlErrorHandler();
+        digester.setErrorHandler(handler);
+        digester.push(webXmlDefaultFragment);
+        digester.parse(globalWebXml);
+        Assert.assertEquals(0, handler.getErrors().size());
+        Assert.assertEquals(0, handler.getWarnings().size());
+
+        Map<String,String> webXmlMimeMappings = webXmlDefaultFragment.getMimeMappings();
+
+        Set<String> embeddedExtensions = new HashSet<>();
+        embeddedExtensions.addAll(Arrays.asList(ctx.findMimeMappings()));
+
+        // Find entries present in conf/web.xml that are missing in embedded
+        Set<String> missingInEmbedded = new HashSet<>();
+        missingInEmbedded.addAll(webXmlMimeMappings.keySet());
+        missingInEmbedded.removeAll(embeddedExtensions);
+        if (missingInEmbedded.size() > 0) {
+            for (String missingExtension : missingInEmbedded) {
+                System.out.println("Missing in embedded: [" + missingExtension +
+                        "]-[" + webXmlMimeMappings.get(missingExtension) + "]");
+            }
+            Assert.fail("Embedded is missing [" + missingInEmbedded.size() + "] entires compared to conf/web.xml");
+        }
+
+        // Find entries present in embedded that are missing in conf/web.xml
+        Set<String> missingInWebXml = new HashSet<>();
+        missingInWebXml.addAll(embeddedExtensions);
+        missingInWebXml.removeAll(webXmlMimeMappings.keySet());
+        if (missingInWebXml.size() > 0) {
+            for (String missingExtension : missingInWebXml) {
+                System.out.println("Missing in embedded: [" + missingExtension +
+                        "]-[" + ctx.findMimeMapping(missingExtension) + "]");
+            }
+            Assert.fail("Embedded is missing [" + missingInWebXml.size() + "] entires compared to conf/web.xml");
+        }
+    }
+}
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 0d1f5f5..75146d8 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -56,6 +56,11 @@
         <code>HTTP_HOST</code> variable rather than extracting it from the
         <code>Host</code> header as this allows HTTP/2 to be supported. (markt)
       </fix>
+      <fix>
+        Switch Tomcat embedded to loading MIME type mappings from a property
+        file generated from the default <code>web.xml</code> so the MIME type
+        mappings are consistent regardless of how Tomcat is started. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Jasper">


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org