【问题标题】:Adding Multipart feature into Jersey Web Service in Tomcat在 Tomcat 的 Jersey Web 服务中添加 Multipart 功能
【发布时间】:2017-06-10 17:49:42
【问题描述】:

我正在尝试实现一个 Jax-RS(Jersey),它有一个 /upload 端点,用户可以使用 Multipart 上传图像。项目已经实现了其他部分并且工作正常,当我尝试添加 Multipart 功能时出现问题。

我正在使用 IntelliJ IDEA 和 Tomcat 8.5.xx 来部署我的应用程序。

我在pom.xml中的依赖如下;

<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>2.25.1</version> <!-- 2.10.1 -->
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>2.25.1</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-multipart</artifactId>
        <version>2.25.1</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.42</version>
    </dependency>
</dependencies>

这是我的 web.xml 部分;

<init-param>
    <param-name>jersey.config.server.provider.classnames</param-name>
    <param-value> org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
</init-param>

当我在 Tomcat 中启动 WAR 时,它在日志中显示内部服务器错误 500;

java.lang.IllegalStateException: The resource configuration is not modifiable in this context.
    org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:274)
    org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:221)
    org.glassfish.jersey.server.ResourceConfig.register(ResourceConfig.java:453)
    org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:387)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369)
    javax.servlet.GenericServlet.init(GenericServlet.java:158)

我不知道问题的原因是什么。从异常的名称来看,我猜它与 web.xml 添加的 MultipartFeature 有关。然而,由于我经验不足,而且我在 google 上的搜索结果不佳,我需要更有经验的人的帮助。

【问题讨论】:

    标签: java tomcat jersey jax-rs


    【解决方案1】:

    好吧,当该特定 URL 有多个到 jersey 资源方法的映射时,通常会出现此类错误。

    您在问题中提到要添加上传网络服务/upload 的路径。因此,可能的原因是您之前开发的一个 API 已经存在这条路径。因此,请检查并相应地更新此路径。

    此错误还有其他可能的原因,您可以找到 herehere

    【讨论】:

    • 感谢您为我指出有关问题的正确方向
    猜你喜欢
    • 1970-01-01
    • 2013-07-16
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    相关资源
    最近更新 更多