在 Glassfish 2.1.1 服务器上使用 Jersey Multipart 1.13 部署战争时,随后出现以下错误消息:
方法,公共 javax.ws.rs.core.Response no.xx.nn.resources.ConverterResources.post(java.lang.String,java.lang.String,java.io.InputStream),用资源、类的 POST 注释oo.xx.nn.resources.ConverterResources,未被识别为使用 @HttpMethod 注释的有效 Java 方法。在 com.sun.jersey.server.impl.model.method.ResourceHttpMethod.(ResourceHttpMethod.java:92) 在 com.sun.jersey.server.impl.model.method.ResourceHttpMethod.(ResourceHttpMethod.java:69) 在 com .sun.jersey.server.impl.model.method.ResourceHttpMethod.(ResourceHttpMethod.java:61) 在 com.sun.jersey.server.impl.model.ResourceClass.processMethods(ResourceClass.java:283) 在 com.sun。 jersey.server.impl.model.ResourceClass.(ResourceClass.java:131)
经过反复试验,我发现这属于以下代码:
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response post(@FormDataParam("providerId") int providerId,
@FormDataParam("datasetId") int datasetid,
@FormDataParam("file") InputStream file)
更具体地说是@FormDataParam
参数注释。当移除这些时,战争部署得很好。我试图在没有任何运气的情况下添加@DefaultValue
到所有 s 中。@FormDataParam
另外,我尝试添加一个@Produces
, 也没有任何运气。该错误似乎与当前也没有@Consumes(..)
任何关系。
我web.xml
看起来很标准:
<servlet>
<servlet-name>xxxx</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>oo.xx.nn.resources</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>xxxx</servlet-name>
<url-pattern>/zzzz/*</url-pattern>
</servlet-mapping>
我已经包含了所有必需的 Jersey 依赖项,如下所示:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.13</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.13</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>1.13</version>
</dependency>
我也尝试过从 IDEA 部署到 Tomcat6 和 Glassfish 3.1.1,效果很好。在本地和远程的 Java 7 上运行(它不起作用)。有任何想法吗?