【问题标题】:Payara/Glassfish JAX-RS multipartPayara/Glassfish JAX-RS 多部分
【发布时间】:2019-10-14 17:43:56
【问题描述】:

我正在尝试在 paraya 上设置 jax-rs 多部分端点(我认为 glassfish 也是如此)。我用最小的 java-ee8 代码做了一个简单的例子。我知道没有向 jax-rs 添加多部分支持的标准方法。

我发现对于 payara/glassfish 我必须像这样添加 MultiPartFeature 类:

@ApplicationPath("/api")
public class JAXRSConfiguration extends Application {
    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> classes = new HashSet<>();
        classes.add(MultiPartFeature.class);
        return classes;
    }
}

这是我的终点:

@Path("")
public class ExampleResource {
    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public String postMultipartMethod(
        @FormDataParam("field") InputStream fileInputStream,
        @FormDataParam("field") FormDataContentDisposition fileMetaData
    ) {
        return "post multipart method";
    }
}

.

curl -v -F field=@pom.xml http://localhost:8080/jax-rs-multipart/api
> POST /jax-rs-multipart/api HTTP/1.1
> Content-Type: multipart/form-data; boundary=------------------------d60a2c38aa57dfbe
> 
< HTTP/1.1 404 Not Found

我收到“404 - 请求的资源不可用”。如果我注释掉添加 MultiPartFeature 和方法字段,则端点正在工作,但我无法获得发布的字段。如果我注释掉 MultiPartFeature 并保留方法参数,那么我会得到“No injection source found for a parameter of a ...”

它部署良好,在日志中看不到任何错误。

如果你想复制,我把它放在github repo

【问题讨论】:

    标签: java jakarta-ee jersey payara


    【解决方案1】:

    你还需要添加你的资源类(注解@Path

    @ApplicationPath("/api")
    public class JAXRSConfiguration extends Application {
        @Override
        public Set<Class<?>> getClasses() {
            Set<Class<?>> classes = new HashSet<>();
            classes.add(MultiPartFeature.class);
            classes.add(YourResource.class);
            return classes;
        }
    }
    

    编辑: 但我找到了更好的解决方案:像这样创建类

    @Provider
    public class MultiPartFeatureProvider extends MultiPartFeature {
    }
    

    【讨论】:

      猜你喜欢
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      • 1970-01-01
      • 2017-06-20
      相关资源
      最近更新 更多