Сервис Weblogic JAX-WS с @ShchemaValidation - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть веб-служба JAX-WS SOAP, развернутая на Weblogic 12.2. Я бы хотел, чтобы проверка запроса содержала пользовательское сообщение об ошибке в ответе.

Поиск в ИнтернетеЯ нашел аннотацию @SchemaValidation.У меня все работает нормально, но я не хочу видеть исключение в консоли, и я хотел бы, чтобы в ответе было пользовательское сообщение.

Мой класс обслуживания похож на

import javax.annotation.Resource;
import javax.jws.WebService;
import javax.xml.ws.WebServiceContext;
import com.sun.xml.ws.developer.SchemaValidation;
@WebService(endpointInterface="...",name="MyService",serviceName="MyService")
@SchemaValidation(handler=MyServiceValidationHandler.class)
public class MyServiceImpl implements MyService
{
    @Resource
    private WebServiceContext webServiceContext;

    @Override
    public MySrviceResponse dispatch(MyServiceRequest request)
    {
    System.out.println("..4..");
    ....
    }
}

И мой обработчик

import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import com.sun.xml.ws.developer.ValidationErrorHandler;

public class MyServiceValidationHandler extends ValidationErrorHandler
{
    public static final String WARNING = "SchemaValidationWarning";
    public static final String ERROR = "SchemaValidationError";
    public static final String FATAL_ERROR = "SchemaValidationFatalError";

    @Override
    public void warning(SAXParseException exception) throws SAXException
    {
        System.out.println("..1.." + exception);
        packet.invocationProperties.put(WARNING, exception);
    }

    @Override
    public void error(SAXParseException exception) throws SAXException
    {
        System.out.println("..2.." + exception);
        packet.invocationProperties.put(ERROR, exception);
    }

    @Override
   public void fatalError(SAXParseException exception) throws SAXException
    {
        System.out.println("..3.." + exception);
        packet.invocationProperties.put(FATAL_ERROR, exception);
    }

}

После отправки «неправильного» мыльного сообщения я вижу в консоли

..2..org.xml.sax.SAXParseException; cvc-datatype-valid.1.2.1: '?' is not a valid value for 'integer'.
..2..org.xml.sax.SAXParseException; cvc-type.3.1.3: The value '?' of element 'testNbr' is not valid.

Но код конечной точки не выполняется.

Чего мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...