我有一个JAX-RS网络服务使用泽西-1。目前只有一种方法,那就是用附件发送邮件。附件必须作为多部分表单数据提供。
@POST
@Path("/mail")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response sendInfomailWithAttachment(
@Context ServletContext context,
@Context SecurityContext security,
@QueryParam ("FROM") String senderAddress,
@QueryParam ("SUBJECT") String subject,
@QueryParam ("TO") String toRecipients,
@QueryParam ("CC") String ccRecipients,
@QueryParam ("BCC") String bccRecipients,
@QueryParam ("noCopy") boolean sendNoCopy,
@FormDataParam("attachment") InputStream fileInputStream,
@FormDataParam("attachment") FormDataContentDisposition contentDispositionHeader,
@FormDataParam("attachment") FormDataBodyPart fileBody,
@FormDataParam("content") FormDataBodyPart content
){}
这种方法效果很好。但是,当我试图集成swagger时,我总是会得到以下错误:
严重:缺少方法公共javax.ws.rs.core.Response的依赖关系。在索引8处抛出参数java.lang.Exception ( param 9、10和11也会引发此错误)
结合在一起
严重:方法,公共javax.ws.rs.core.Response .抛出java.lang.Exception (用资源的POST类com.mywebservice.MyClass进行注释)不被识别为有效的资源方法。
如果我抛开FormDataParam的东西,服务就会正常启动,同时也会以更好的集成方式启动。
我使用
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.17</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>1.17</version>
</dependency>
和
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-jersey-jaxrs_2.10</artifactId>
<version>1.3.4</version>
</dependency>
有什么已知的干扰吗?我还能做些什么来解决这个问题吗?
发布于 2014-05-06 00:50:33
正如我所发现的,这是一个maven解决问题。
swagger 1.3.4使用由maven选择的jersey-core-1.3和jersey-server-1.3。相反,我在1.17版中需要它,就像jersey-servlet和jersey-多部分版本一样。因此,我必须将这两个依赖项添加到pom中,以使maven依赖项解析使用1.17而不是1.13。
https://stackoverflow.com/questions/23489066
复制