java-Jersey:如何使用自定义`ExceptionMapperFactory`
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-Jersey:如何使用自定义`ExceptionMapperFactory`,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1799字,纯文字阅读大概需要3分钟。
内容图文
![java-Jersey:如何使用自定义`ExceptionMapperFactory`](/upload/InfoBanner/zyjiaocheng/666/3008404dd79248199dd8d7d2f546a2c5.jpg)
我需要使用自定义ExceptionMapperFactory来实现自定义find()逻辑.
public class MyExceptionMapperFactory extends ExceptionMapperFactory {
// [...]
@Override
public <T extends Throwable> ExceptionMapper<T> find(Class<T> type) {
// [...]
}
}
如何使用/注册?
在我的RestApplication中注册它无效:
public class RestApplication extends ResourceConfig {
public RestApplication() {
register(JacksonFeature.class);
register(JacksonXMLProvider.class);
register(MyExceptionMapperFactory.class);
register(SomeExceptionMapper.class, 600);
register(OtherExceptionMapper.class, 550);
// [...]
}
}
有任何想法吗? TIA!
解决方法:
我从来没有实现过,所以我不知道所有的细微差别,但是简要地看一下source和tests,看起来您只需要hook it up to the DI system
register(new AbstractBinder() {
@Override
public void configure() {
bindAsContract(MyExceptionMapperFactory.class)
.to(ExceptionMappers.class)
.in(Singleton.class);
}
})
不确定如何禁用原始版本,但如果仍在使用它,则可以尝试将set a rank用于工厂,以便在查找时将优先使用该版本
bindAsContract(MyExceptionMapperFactory.class)
.to(ExceptionMappers.class)
.ranked(Integer.MAX_VALUE)
.in(Singleton.class);
更新
由于排名不起作用,以下内容似乎将删除原始工厂
@Provider
public class ExceptionMapperFactoryFeature implements Feature {
@Override
public boolean configure(FeatureContext context) {
final ServiceLocator locator = ServiceLocatorProvider.getServiceLocator(context);
final Descriptor<?> descriptor = locator.getBestDescriptor(new Filter() {
@Override
public boolean matches(Descriptor d) {
return d.getImplementation().equals(ExceptionMapperFactory.class.getName());
}
});
ServiceLocatorUtilities.removeOneDescriptor(locator, descriptor);
context.register(new AbstractBinder() {
@Override
public void configure() {
bindAsContract(MyExceptionMapperFactory.class)
.to(ExceptionMappers.class)
.in(Singleton.class);
}
});
return true;
}
}
内容总结
以上是互联网集市为您收集整理的java-Jersey:如何使用自定义`ExceptionMapperFactory`全部内容,希望文章能够帮你解决java-Jersey:如何使用自定义`ExceptionMapperFactory`所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。