- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当在入站网关中使用消息转换器发生转换错误时,我遇到了奇怪的行为。下面示例中的想法是接收 XML 有效负载(或序列化 java),将它们转换为 java 对象并使用相同的媒体类型进行响应。
鉴于此配置:
<bean id="converterXml" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" />
<bean id="converterSerialized" class="org.springframework.integration.http.converter.SerializingHttpMessageConverter" />
<util:list id="converters">
<ref bean="converterXml" />
<ref bean="converterSerialized" />
</util:list>
<int-http:inbound-gateway id="inboundIntegrationGateway"
view-name="/integration"
message-converters="converters" error-channel="errorChannel"
request-payload-type="MyXmlPojo"
supported-methods="POST" request-channel="inboundIntegration"
path="/services/integration"
reply-timeout="50000">
</int-http:inbound-gateway>
如果提交了无效的 XML 有效负载(例如没有结束标记),则 JAXB XML 转换器中引发的异常 HttpMessageNotReadableException
不会在 errorChannel 中转发(我在其中定义了一个服务激活器来处理异常) )。请注意,此处理程序在负载转换后运行良好。
<int:service-activator input-channel="errorChannel" ref="exceptionHandlerService"
method="handleException" requires-reply="true" />
我在这里缺少什么?为什么我的错误处理程序没有处理 HttpMessageNotReadableException
?欢迎任何帮助!
最佳答案
Why is the HttpMessageNotReadableException not handled by my error handler?
仅当我们已经向下游流发送 Message
时,error-channel
才会生效,但如果您传入的 HTTP 请求无法转换为 消息
,仍然没有任何内容可以发送到错误 channel
。
是的,使用 convertExceptions = true
我们不能只按原样返回异常并让一些 HttpMessageConverter
将其转换为合理的 HTTP 响应。通常,SerializingHttpMessageConverter
就在现场。
Why is this exception not wrapped in a MessageHandlingException and sent to my error handler?
只是因为我们还没有达到消息传递的目的。对于你的问题,我们仍然处于标准的 Spring MVC 环境中,并且 Spring Integration 在请求转换期间仍然无能为力。
您应该考虑 Spring MVC 为您的情况提供的一些解决方案:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-exceptionhandlers
关于java - 入站网关中的 HttpMessageConverter 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38455467/
我是一名优秀的程序员,十分优秀!