jersey - 如何启用 MultiPartFeature?

标签 jersey jax-rs multipartform-data jersey-2.0 multipart

我的 JAX-RS 应用程序有一个扩展的 Application 类。

@ApplicationPath("/")
public class MyApplication extends Application {
    // empty; really empty
}

如何启用 org.glassfish.jersey.media.multipart.MultiPartFeature不修改类?或者不需要注册所有资源类/包?

最佳答案

不知道你为什么不直接使用 ResourceConfig而不是 Application类(class)。我能想到的唯一原因是可移植性,但使用 Jersey 特定的多部分功能已经破坏了这种可移植性。

但无论如何,我会尝试以“最便携”的方式来回答这个问题。您可以做的是设置一个属性,就像在 web.xml 中一样。要设置任意属性,您可以覆盖

@Override
public Map<String, Object> getProperties() {}

Application子类,并在那里设置属性。
@Override
public Map<String, Object> getProperties() {
    Map<String, Object> props = new HashMap<>();
    props.put("jersey.config.server.provider.classnames", 
            "org.glassfish.jersey.media.multipart.MultiPartFeature");
    return props;
}

这将维护对您的资源和提供程序的类路径扫描。仅当您覆盖 getClasses() 时才会禁用扫描或 getSingletons() (并返回非空集),但是 getProperties()很好。

另一种选择:

创建一个 Feature包装该功能,并让该功能被发现,如 seen here

就个人而言,我会...

只需使用 ResourceConfig ,因为您已经破坏了便携性(还有一点破损:-)
@ApplicationPath("/")
public class AppConfig extends ResourceConfig {
    public AppConfig() {
        packages("packages.to.scan");
        register(MultiPartFeature.class);
    }
}

关于jersey - 如何启用 MultiPartFeature?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29534289/

相关文章:

java - 如何从数据库查询返回ArrayList?

java - 如何使用 Java 在 Eclipse 中使用 Web 服务(JAX - RS)从数据库中检索数据

java - 如何使用 JSP 从 Apache Wink 返回 XHTML 输出?

java - 使用 Spring Web Flow 上传文件时出现奇怪的错误

java - 在 Asana API 上使用 Java 进行 HTTP POST 多部分/表单数据上传文件

spring - 多部分文件最大大小异常——spring boot 内嵌tomcat

java - 使用 JAX-RS( Jersey )和 @RolesAllowed 的自定义 HTTP 状态响应

java - 如何在没有 web.xml 的情况下使用 Jersey 作为 JAX-RS 实现?

security - 如何保护 REST 资源,以便只有角色的单个用户可以访问它?

java - 如何向 Wink 客户端注册 Jackson 提供程序?