对WebSphere中的传入SOAP消息执行模式验证

时间:2012-11-20 16:33:46

标签: java web-services soap websphere

我有一些web服务,我想对传入的消息进行模式验证。从我的研究中,我看到有一个注释@SchemaValidation,但它只能在Oracle的JBoss上使用(也可能在WebLogic和Glassfish上?)而不是在WebSphere上。

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

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

1 个答案:

答案 0 :(得分:2)

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

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被发送回主叫客户端,他们可以看到他们的消息导致的验证错误。