Java Payara/Glassfish JAX-RS多部分

Java Payara/Glassfish JAX-RS多部分,java,jakarta-ee,jersey,payara,Java,Jakarta Ee,Jersey,Payara,我正在尝试在paraya上设置jax的多部分端点(我想glassfish也会这样)。我用最少的java-ee8代码制作了一个简单的示例。我知道没有向jax-rs添加多部分支持的标准方法 我发现对于payara/glassfish,我必须添加如下MultiPartFeature类: @ApplicationPath("/api") public class JAXRSConfiguration extends Application { @Override public Set&l

我正在尝试在paraya上设置jax的多部分端点(我想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;
    }
}

curl-v-F字段=@pom.xmlhttp://localhost:8080/jax-rs多部分/api
>POST/jax-rs多部分/api HTTP/1.1
>内容类型:多部分/表单数据;边界=---------------------------d60a2c38aa57dfbe
> 
未找到
我得到“404-请求的资源不可用”。若我注释掉添加MultiPartFeature和method字段,那个么端点可以工作,但我无法获得发布的字段。如果我注释掉MultiPartFeature并保留方法参数,则会得到“找不到类型为的参数的注入源…”

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


如果你想复制,我就把它放进去。

你还需要添加你的资源类(用
@Path
注释)

@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
@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 {
}