You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Open Liberty集成Jersey实现文件上传时遇415不支持媒体类型错误

解决Open Liberty中Jersey Multipart文件上传的415错误及MessageBodyReader缺失问题

问题根源

错误提示No message body reader has been found for class org.glassfish.jersey.media.multipart.FormDataContentDisposition说明Jersey的MultiPartFeature未被正确加载,导致无法处理multipart/form-data类型请求。结合你的配置,核心问题出在Jersey的注册逻辑或环境配置冲突上。

解决方案

1. 显式配置Jersey Servlet(替代@ApplicationPath自动扫描)

Open Liberty在未启用自带Jakarta REST特性时,可能无法自动识别@ApplicationPath标注的ResourceConfig类。需在web.xml中显式配置Jersey Servlet,确保MultiPartFeature生效:

<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_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>JerseyUploadService</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <!-- 指定你的RestApplication全类名 -->
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.packages.to.scan.RestApplication</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>JerseyUploadService</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

2. 补充mimepull依赖(避免类缺失)

虽然jersey-media-multipart会自动依赖mimepull,但部分场景下可能出现依赖传递失效。显式添加该依赖确保文件解析类存在:

<dependency>
    <groupId>org.jvnet.mimepull</groupId>
    <artifactId>mimepull</artifactId>
    <version>1.9.11</version> <!-- 与Jersey 2.28兼容的版本 -->
</dependency>

3. 检查Open Liberty server.xml配置

确保未启用自带JAX-RS特性,避免与Jersey冲突:

<featureManager>
    <feature>servlet-4.0</feature>
    <!-- 移除所有jaxrs-*或jakarta-restful-web-services相关特性 -->
</featureManager>

4. 验证Postman请求配置

  • 请求方法为POST,URL与API路径一致
  • 选择form-data格式,参数名设置为file(与API中@FormDataParam("file")匹配)
  • 不要手动设置Content-Type,让Postman自动生成带boundary的multipart/form-data请求头

验证修复

重新部署应用后,用Postman上传文件,即可正常接收InputStream和FormDataContentDisposition参数,不再返回415错误。

内容的提问来源于stack exchange,提问作者Pola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:10:58