我正在使用Jersey 2.5.1和Jackson 2.2。用于构建JSON Rest web服务。我也用2个ExceptionMappers启动并运行了它,但对于“非json”请求,应用程序不会抛出任何异常!
>
如果抛出NullPointerException,将调用ExceptionMapper
如果JSon映射有问题,将调用ExceptionMapper
我的问题:1.请求正文:{}工作2.请求正文:{}带有应用程序端NullPointer调用了第一个异常映射器3.请求正文:“jibberish”不会调用任何东西(未被任何ExceptionMapper捕获),因为没有抛出异常。不幸的是,响应正文类似于:无法识别的字段“xxx”(类com.sample.MyDto),未标记为可忽略(9个已知属性......
我还发现有时coustom ExceptionMapper不起作用,也不总是起作用或不起作用。
所以我调试了jersey的源代码。
类别:组织。玻璃鱼。运动衫服务器ServerRuntime,方法:mapException
...
final long timestamp = tracingLogger.timestamp(ServerTraceEvent.EXCEPTION_MAPPING);
**ExceptionMapper mapper = runtime.exceptionMappers.findMapping(throwable);**
if (mapper != null) {
request.getRequestEventBuilder().setExceptionMapper(mapper);
...
如果映射器为null,则coustom ExceptionMapper将不起作用。
类别:组织。玻璃鱼。运动衫内部的ExceptionMapperFactory方法:ExceptionMapperFactory
异常映射器:(有两个异常映射同一个异常:java.lang.Exception)
组织。玻璃鱼。运动衫服务器mvc。内部的ErrorTemplateExceptionMapper@6473fc2,java类。lang.异常
...
通用域名格式。html" target="_blank">百度。ssp。网状物ws。例外BaseExceptionMapper@7a84639c,java类。lang.异常
这是因为在MVC功能中:
@Override
public boolean configure(final FeatureContext context) {
final Configuration config = context.getConfiguration();
if (!config.isRegistered(ErrorTemplateExceptionMapper.class)) {
context.register(ErrorTemplateExceptionMapper.class);
context.register(new MvcBinder());
return true;
}
return false;
}
ErrorTemplateExceptionMapper也添加到ExceptionMapper。
因此,我将自定义MapperException的泛型类型:ExceptionMapper更改为ExceptionMapper
可能是我的决议不适合你,主要问题是例外。
好吧,我解决了。最终让我认为正确的方法是,有时它是有效的,所以它必须是一些覆盖类加载问题。
在我的应用程序类中,我基于这样的包注册了提供者
@ApplicationPath("resources")
public class JerseyApplication extends ResourceConfig {
public JerseyRestApplication() {
packages("com.sample", "com.fasterxml.jackson.jaxrs.json");
}
}
如果你看清楚了,你可能会看到错误!我把com.fasterxml.jackson.jaxrs.json放在搜索路径上,因为我想使用JacksonJsonProvider.class.我不知道的是,在那个包中还有一些JSonMapper for JSonParseException等,这些不记录:)
所以有时应用程序先加载我的,有时加载jackson的。所以我现在要坚持以下几点:
@ApplicationPath("resources")
public class JerseyRestApplication extends ResourceConfig {
public JerseyApplication() {
register(JacksonJsonProvider.class); // Do it manually
packages("com.sample");
}
}
希望那对某人有帮助: D
问题内容: 我有以下代码,该代码在远程服务器上安排任务,然后使用轮询完成。任务完成后,它将下载结果。我想将a返回给调用方,以便他们可以确定阻止时间和阻止时间,并为他们提供取消任务的选项。 我的问题是,如果客户端取消该方法返回的值,则块不会执行。如果我删除它。很明显,我对构图有些误解…我应该改变什么? 同样,如果我这样做: 代替 也永远不会执行。这对我来说似乎很违反直觉。从逻辑上说,返回应该不是我应
所以我现在正在开发一个PWA。 我现在正在处理推送通知,并且已经能够通过以下非常简单的JSON结构接收后台和前台通知。 最后,我尝试在setBackgroundMessageHandler中硬编码图标和click_action,但没有成功。如果不显示图标,则单击通知时不会发生任何情况。 这纯粹是一个Ionic PWA项目,意在移动浏览器和桌面上运行。我会很感激你给我的每一个小费!谢谢!
在这个java方法中,扫描器接收最小值和最大值之间的整数。如果接收到的int超出这些界限,程序将正确输出“无效输入”。然而,如果输入了诸如“g”或“h”之类的内容,或者输入了int以外的内容,就会创建一个无休止的循环。 我试图在代码中的多个位置重新初始化扫描仪,但它看起来像是从System.in输入int以外的东西时,它只是再次通过扫描仪飞行并保持循环。任何想法
我正在使用PHPMailer通过联系人表单发送电子邮件。当我在输入字段中输入无效的电子邮件地址时,电子邮件仍会发送。我想同时执行客户端和服务器端验证。 PHPMailer是否有一个内置的验证系统来检查无效的电子邮件地址?如果输入的电子邮件无效,我想返回一个错误,而不是发送电子邮件。
我们在测试和生产中得到了这一点。它是连续的,我们不知道这些错误是如何每隔几秒钟就出现的,至少我们在测试中没有从另一个系统得到反馈。 我们的信息非常小,最多只有几百字节。 这是 1.2 GB。我尝试将:套接字.request.max.字节设置为1195725856,但随后内存不足,即使堆大小约为2.5 GB,并且OpenShift容器设置为最大32GB。 非常欢迎任何帮助!
我的第一篇文章,与以下文章相关我如何在PHP中设置一个基本的过滤器使用谷歌床单api? 我已经实现了下面的代码,但收到了这条消息,我不确定原因是什么: 收到无效的JSON有效载荷。未知名称"请求"处的"请求[0]":找不到字段。