2

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

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

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

4

1 回答 1

2

啊哈...我不得不SOAPFaultException从 custom中抛出一个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发回调用客户端,他们可以看到他们的消息导致的验证错误。

于 2012-11-20T17:22:22.930 回答