java - 在 WebSphere 中对传入 SOAP 消息执行模式验证

标签 java web-services soap websphere

我有一些网络服务,我想对传入消息进行架构验证。根据我的研究,我发现有一个注释 @SchemaValidation,但它仅在 Oracle 的 JBoss 上可用(也可能在 WebLogic 和 Glassfish 上可用?),而不在 WebSphere 上可用。

我能为 WebSphere 想到的唯一解决方案是编写一个自定义 SOAP 处理程序并在那里验证传入的 XML,但问题是我不知道如何将验证错误传递给我的 Web 服务实现类,以便我可以返回包含客户端错误的故障。

是否有更好的方法来验证 WebSphere(版本 7)上的 SOAP 消息?

最佳答案

啊哈...我必须从自定义 SOAPHandler 中抛出 SOAPFaultException,如下所示:

try
{
    ...
    ...
    validator.validate(source); 
}
catch (SAXException saxe)
{
    System.out.println("SAXException occurred");
    SOAPFault fault = null;
    try
    {
        fault = SOAPFactory.newInstance().createFault();
        fault.setFaultString(saxe.getMessage());
    }
    catch (SOAPException soape)
    {
        LOG.error("Error creating SOAPFault: "+soape.getMessage());
    }
    throw new SOAPFaultException(fault);
}

SOAPFaultException 被发送回调用客户端,他们可以看到其消息导致的验证错误。

关于java - 在 WebSphere 中对传入 SOAP 消息执行模式验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13477731/

相关文章:

javascript - 使用 jquery $.ajax 构建 WSDL 信封并进行调用

java - 如何预测java.lang.OutOfMemory异常?

java - 当我尝试解密时出现以下错误

sql - TSQL 返回 NO 或 YES,而不是 TRUE 或 FALSE

C# - 解析 Soap 响应以提取数据

soap - PicketLink/Deltaspike 安全性在 SOAP (JAX-WS) 层中不起作用(CDI vs EJB?)

java - -1 java中的计算错误

java - 客户端未收到加密后数据被截断

java - HttpPost 请求未发送正确的 JSON 数据

c# - 在特定时间范围后检查新数据