I ' m работаем над проектом, в котором мы хотим использовать отмеченные исключения для уведомления пользователя (например) о неправильном вводе или предпринятом неправильном действии. Такие исключения должны иметь иерархию, такую как:
public abstract class BusinessException extends java.lang.Exception {...}
public class InvalidInputException extends BusinessException {...}
public class InvalidActionException extends BusinessException {...}
Мы генерируем Java-код из WSDL / XSD (подход, основанный на контракте), используя Maven, jaxws-maven-plugin
, цель wsimport
. . 12194] Я попытался пройти это ( http://www.ibm.com/developerworks/xml/library/ws-tip-jaxrpc.html ) руководство (оно предназначено для jax-rpc, но, похоже, работает и для jax-ws). Я написал
...
с типами, определенными в ows: namespace
Когда я запускаю mvn clean package
, я получаю следующее (геттеры, сеттеры, ctors и аннотации удалены):
public interface TestWebService {
@WebMethod
public void throwException() throws ExceptionMessage;
}
public class ExceptionMessage extends Exception {
private InvalidInputException faultInfo;
(...)
}
public abstract class BusinessException implements Serializable {
protected int code;
(...)
}
public class InvalidActionException extends BusinessException implements Serializable {
protected String actionName;
(...)
}
public class InvalidInputException extends BusinessException implements Serializable {
protected String validationMessage;
(...)
}
Это не то я хотел, потому что есть одно исключение, и оно может содержать разные данные faultInto
. Есть ли способ создать иерархию исключений, как указано выше, исключительно в XSD / WSDL? Поскольку класс ExceptionMessage
генерируется непосредственно из тега
, мне не удалось найти способ создать там родительский / дочерний элемент.