我的 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/