У меня проблема с Jax-Ws, а также после поиска в сети за день я не нашел рабочего решения. Я запускаю мое мыло Ws на локальном jboss eap7.Jax-Ws Unmarshalling Error
Соответствующий фрагмент моего WSDL выглядит следующим образом:
<xs:complexType name="simpleTravelingDay">
<xs:sequence>
<xs:element name="gid" type="xs:string"/>
<xs:element name="dayType" type="xs:long"/>
<xs:element name="date" type="xs:dateTime"/>
<xs:element name="projectId" type="xs:long"/>
Мой вебсервис выглядит следующим образом:
@WebService(name = "TravelTrackerWS")
public interface TravelTrackerWSLocal {
@WebMethod(operationName = "fillSimpleTravelingDays")
public WsAnswer fillSimpleAndTravelingDays(
@XmlElement(required = true, nillable = false) @WebParam(name = "SimpleAndTravelingDays") List<SimpleTravelingDay> days)
throws InsufficientRightsException;
}
Если я делаю запрос, как это :
<soapenv:Header/>
<soapenv:Body>
<ser:fillSimpleTravelingDays>
<!--1 or more repetitions:-->
<SimpleAndTravelingDays>
<gid>Z0030UDK</gid>
<date>2014-10-31</date>
<country>AU</country>
<projectId>a</projectId>
</SimpleAndTravelingDays>
</ser:fillSimpleTravelingDays>
Я получаю немаршалинг Ошибка, которая правильно, потому что «а» является строка, а не Лонг.
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Unmarshalling Error: For input string: "a"</faultstring>
</soap:Fault>
Мой вопрос прямо сейчас. Как я могу уловить Unmarshalling Error, чтобы я мог генерировать общее сообщение об ошибке вместо ошибки unmarshalling.
Я надеюсь, что кто-нибудь может мне помочь
Hi thx для быстрого ответа. Я попробовал ваше решение, но обработчику SchemaValidation, похоже, нужен ValidationErrorHandler вместо DefaultValidationEventHandler. Так что я попытался это решение: ' общественного класса WsValidationEventHandler расширяет ValidationErrorHandler { @Override предупреждение общественности недействительным (окончательное исключение SAXParseException) бросает SAXException {бросить исключение; } @Override общественная пустота ошибка (окончательное исключение SAXParseException) бросает SAXException {перекидной исключение} @Override общественных недействительный FatalError (окончательное исключение SAXParseException) бросает SAXException {перекидной исключение}} ' – basbe
Но, кажется, что методы не используются, потому что я получаю те же сообщения об ошибках, что и раньше. – basbe
Я просто узнал, что получаю com.sun.istack.SAXParseException2. Может ли проблема 2 в saxparseexception вызвать эту проблему? – basbe