Tomcat 正在提供内容类型为 "text/html" 而不是 JNLP 内容类型的 JNLP 文件

Tomcat is serving JNLP Files with the content type "text/html" instead of the JNLP content type

我已经为 java 网络启动应用程序设置了 Tomcat。现在我在静态 html 页面上提供 .JNLP 文件下载(服务器仅供内部使用)。但是当我点击一个文件而不是下载它时,它会打开并在浏览器中显示 xml 代码。

使用 fiddler 我发现该文件将是内容类型为 text/html 而不是 application/x-java-jnlp-file.

的服务器

我已经在 tomcat web.xml 中配置了以下内容:

<servlet>
  <servlet-name>default</servlet-name>
  <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
  <init-param>
    <param-name>debug</param-name>
    <param-value>0</param-value>
  </init-param>
  <init-param>
    <param-name>listings</param-name>
    <param-value>false</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<mime-mapping>
  <extension>jnlp</extension>
  <mime-type>application/x-java-jnlp-file</mime-type>
</mime-mapping>

为什么 Tomcat 提供内容类型错误的文件?

我找到了解决方案。

我在 tomcat 的全局 web.xml 中粘贴了 mime-mapping 标签。重新启动服务器并清除浏览器缓存后,它按预期工作。

我学到了什么:不需要额外的 servlet 来下载 JNLP 文件。