【问题标题】:How to set Content-Type for auto-delivered file in GlassFish?如何在 GlassFish 中为自动传递的文件设置 Content-Type?
【发布时间】:2017-11-30 15:55:15
【问题描述】:

在将 .war 文件部署到 GlassFish Server(当前为 4.1)时,GF 服务器会自动从 WEB-INF/ 文件夹传送文件。 (除非我通过指定 Servlet 来覆盖它们的地址。)

实际上在部署.war文件到GF服务器时,它会将WEB-INF/下的文件解压到{gf-home}/glassfish/domains/domain1/applications/{app-name}。 然后在访问http://{hostname}:8080/{app-name}/{path} 时传递它们。

现在访问 .json 文件时,服务器不会发送 HTTP Content-Type: application/json 标头。 这导致页面无法正确加载,FireFox 控制台向我显示XML Parsing Error: not well-formed 异常,即使文件内容完全相同。 所以我的猜测是缺少 Content-Type 标签。

如何更改应用/项目本身的 MIME 映射?

从我目前看到的页面来看,可以在{gf-home}/glassfish/domains/domain1/default-web.xml 文件中重新定义此行为,定义mime-mapping。但假设我无法访问该文件,只能上传 .war 文件。 有什么解决办法吗? 是否可以将default-web.xml 打包到 .war 文件的某个位置?

我目前能想到的另一个解决方案是使用 servlet 覆盖特定的 .json 文件的地址,并在 Java 中添加 Content-Type 标头。但我不确定是否有一种在运行时访问和读取 .json 文件的万无一失的方法,但无需将它们移动到 Java 源代码中的任何位置,而是将它们留在 WEB-INF/ 文件夹中? 有什么建议吗?

【问题讨论】:

  • 为什么您明确要编辑 GlassFish 的 default-web.xml 而不是 webapp 自己的 web.xml 有点含糊。您甚至不能首先编辑 webapp 的 web.xml,还是您只是不知道应该在那里完成?
  • 不,我不知道我可以只编辑 web.xml... 没有那个文件,并且对所有到处乱飞的 xyz-xml 感到很困惑。所以我只是在 META-INF/web.xml 中重新定义了一些 mime-mappings,就这样?

标签: servlets glassfish mime-types


【解决方案1】:

如何更改应用/项目本身的 MIME 映射?

通过在 webapp 自己的 /WEB-INF/web.xml 中声明 <mime-mapping> 条目。

从 Servlet 3.0 版开始,web.xml 文件成为可选文件。这也许可以解释为什么你找不到人。你可以在 webapp 中提供你自己的。 GlassFish 4.1 是支持 Servlet 3.1 的容器,因此下面的 Servlet 3.1 兼容 web.xml 应该可以帮助您入门:

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    version="3.1">

    <!-- Config here. -->
</web-app>

在您的具体情况下,您将需要以下 mime 映射:

    <mime-mapping>
        <extension>json</extension>
        <mime-type>application/json</mime-type>
    </mime-mapping>

另见:

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    相关资源
    最近更新 更多