Изучаем Java EE 7 - [224]
>
>···············xmlns: cc="http://chapter14.javaee7.book.agoncal.org/">
>··
>··
>····
>······
>···················control_number="544" type="Visa"/>
>····
>··
>
В листинге 14.20 показан ответ SOAP, который отправляется обратно потребителю. Он указывает, что кредитная карта, переданная в запросе, действительна (
>
>···············xmlns: cc="http://chapter14.javaee7.book.agoncal.org/">
>··
>····
>······
>····
>··
>
Обработка исключений
До этого момента все работало хорошо: обмен данными между потребителем и поставщиком был корректным, веб-служба не пропадала, а сеть работала надежно. Но так бывает не всегда. В Java, когда что-то идет не так, генерируется исключение и некоторые классы внутри JVM должны разобраться с ним. Для веб-служб SOAP этот механизм не работает, поскольку потребитель и служба могут быть написаны на разных языках и находиться в разных сетях. Таким образом, возникла идея использовать SOAP Fault в сообщении SOAP. Среда выполнения JAX-WS автоматически преобразует исключения Java в сообщения SOAP Fault, которые возвращаются клиенту. Эта функция позволяет сэкономить много времени и энергии, которые вы затратите на написание кода, преобразующего ваши исключения в сообщения SOAP Fault.
Если вы посмотрите на метод validate веб-службы CardValidator, определенный в листинге 14.5, то заметите, что, когда параметр CreditCard пуст, проверка прекращается и генерируется исключение NullPointerException. В этом случае среда выполнения JAX-WS ловит исключение NullPointerException на сервере, создает сообщение SOAP Fault (листинг 14.21) и отправляет его обратно потребителю.
>
>··
>····
>······
>······
>····
>··
>
Как вы можете видеть в листинге 14.21, среда выполнения JAX-WS автоматически устанавливает значение параметра faultstring, соответствующее имени исключения в Java. Спецификация также предоставляет механизм различения типов неисправностей с использованием элемента faultCode. В этом случае он имеет значение soap: Server, указывая, что за неисправности отвечает сервер (другой вариант — soap: Client).
Еще один способ возвращения SOAP Fault — генерация исключения приложения (листинг 14.22). Здесь веб-служба генерирует проверенное исключение (но тот же самый механизм относится и к непроверенным исключениям), если кредитная карта имеет нечетный номер. Это исключение приложения будет автоматически преобразовано в соответствующее сообщение soap: Fault, обернуто в тело SOAP и возвращено клиенту.
>@WebService
>public class CardValidator throws CardValidatorException {
>public boolean validate(CreditCard creditCard) {
>···Character lastDigit = creditCard.getNumber(). charAt(
>·························creditCard.getNumber(). length() — 1);
>····if (Integer.parseInt(lastDigit.toString()) % 2 == 0) {
>······return true;
>····}··else {
>······throw new CardValidatorException("Неверный номер кредитной карты");
>····}
>··}
>}
Исключение приложения может наследовать от типов Exception, RuntimeException или исключений веб-служб SOAP, таких как javax.xml.ws.WebServiceException или один из его подклассов (например, javax.xml.ws.soap.SOAPFaultException). Эти исключения также могут поддерживать аннотацию @WebFault, чтобы создать более подробный конверт SOAP (листинг 14.23).
>@WebFault(name = "CardValidationFault")
>public class CardValidatorException extends Exception {
>··public CardValidatorRTException() {
>····super();
>··}
>··public CardValidatorRTException(String message) {
>····super(message);
>··}
>}
Когда веб-служба SOAP генерирует исключение, определенное в листинге 14.23, среда выполнения JAX-WS генерирует сообщение об ошибке SOAP, определенное в листинге 14.24.
>
>··
>····
>······
>······
>······
>········
>·········xmlns: ns2="http://chapter14.javaee7.book.agoncal.org/">
>··········
>········
>······
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.