当前位置: 首页 > 知识库问答 >
问题:

使用Interceptor进行Apache CXFendpoint验证

东门彬
2023-03-14

通过CXFendpoint中的模式验证,实现从CXFendpoint到JMS队列的驼峰路由。

已在CXF终结点中启用验证:

/* Set endpoint properties */
Map<String, Object> propertiesMap = new HashMap<String, Object>();
propertiesMap.put("schema-validation-enabled", "true");

/* Create endpoint */
CxfEndpoint cxfEndpoint = new CxfEndpoint();
cxfEndpoint.setWsdlURL("wsdl/input.wsdl");
cxfEndpoint.setDataFormat(DataFormat.CXF_MESSAGE);
cxfEndpoint.setProperties(propertiesMap);
cxfEndpoint.getInInterceptors().add(new FaultInterceptor());

骆驼路线:

from(cxfEndpoint)
.routeId("INPUT_ROUTE")
.to("jms:foo.bar");

CXF拦截器:

public class FaultInterceptor extends AbstractSoapInterceptor {

  private static final Logger LOGGER = Logger.getLogger(FaultInterceptor.class);

  public FaultInterceptor() {
    super(Phase.UNMARSHAL);
  }

  public void handleMessage(SoapMessage message) throws Fault {
    LOGGER.info("handleMessage=" + message.getExchange().getInMessage());    
  }

  @Override
  public void handleFault(SoapMessage message) {
    Fault fault = (Fault) message.getContent(Exception.class);
    LOGGER.info("handleFault='" + fault + "'");   
    /* Add some header property that says the message is invalid */  
  }

}

如果我发送有效的SOAP消息,则工作正常。如果我发送无效的SOAP消息,handleFault方法会启动,记录故障,仅此而已。对于无效的SOAP消息场景,我是否可以使用handleFault方法记录故障并仍然将无效消息路由到JMS队列?这是我添加到endpoint的唯一拦截器。

  • Apache ServiceMix 5.0.0
  • Apache Camel 2.12.3
  • Apache CXF 2.7.10

共有1个答案

于正志
2023-03-14

您不能执行try/catch语句,因为错误发生在“from”子句中。

但是,您可以使用死信频道。

errorHandler(deadLetterChannel("jms:foo.bar.invalid"));

from(cxfEndpoint)
 .routeId("INPUT_ROUTE")
 .to("jms:foo.bar");
 类似资料:
  • 我正在尝试验证Json Objects。我使用https://code.google.com/p/rest-assured/wiki/Downloads?tm=2, greeter-schema.json:http://cs606926.vk.me/v606926718/15603/0Kauo1bTDi8.jpg 即使JsonString不等于这个“{\”isSuccess\“:false}”,我

  • 为了验证输入字段是否包含数值,我正在使用jQuery的isNumic()方法: 这在大多数情况下都可以正常工作,但以下示例失败了: 如果不是数值,则返回true。 有没有更好的方法在不使用任何其他插件的情况下进行此类验证? 谢谢。

  • 我正在使用Delphi10.2更新3。我按照这些说明验证生成的xml文档。 属性noNamespaceSchema位置对XML解析有什么影响? 使用Windows DOM和TXMLDocument验证XML:在某些计算机上不起作用 delphi中msxml的模式验证 但我有一个错误。“DTD/架构中未定义元素‘jegyzek\u adatok’上的属性‘noNamespaceSchemaLocat

  • 我正在尝试使用urllib3连接到网页。代码如下所示。 如果我们假设url是需要使用用户名和密码进行身份验证的某个网页,那么我是否使用正确的代码进行身份验证? 我使用urllib2做这件事很舒服,但使用urllib3做不到同样的事情。 非常感谢

  • jwt不应该仅仅用于认证用户吗?我读到过可以在里面存储非敏感的东西,比如用户ID。将权限级别之类的东西存储在令牌中可以吗?这样我可以避免数据库调用。

  • 嗨,使用angular 2作为密码字段,我必须设置“密码应该至少有1个大写字母,1个小写字母,1个数字,1个特殊字符,最少8个字符,最多16个字符” 因为我已经完成了“最少8个字符,最多16个字符”。 但我无法为其余的东西设置至少1个大写字母,1个小写字母,1个数字,1个特殊字符。 请帮我一下 预先感谢