У меня есть веб-служба 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.
Но код конечной точки не выполняется.
Чего мне не хватает?