【发布时间】: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 上的搜索结果不佳,我需要更有经验的人的帮助。
【问题讨论】: