Изучаем Java EE 7 - [231]

Шрифт
Интервал

>http://localhost:8080/chapter14-service-1.0/CardValidatorService?wsdl

Файл pom.xml в листинге 14.41 определяет необходимые зависимости, glassfish-embedded-all версии 4.0, а также версию JDK (1.7). Класс WebServiceConsumer упакован в файл chapter14-consumer-1.0.jar. Как и любой файл с расширением. jar, он включает файл META-INF/MANIFEST.MF, который может быть использован для определения метаданных. Вы можете добавить элемент Main-Class в манифест, указывая на класс WebServiceConsumer. Это позволит выполнить файл. jar (например, с помощью команды java — jar).


Листинг 14.41. Файл pom.xml генерирует и упаковывает артефакты потребителя

>

>

>·········xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance" 

>·········xsi: schemaLocation="http://maven.apache.org/POM/4.0.0 

>·········http://maven.apache.org/xsd/maven-4.0.0.xsd">

>··4.0.0

>··

>····chapter14

>····org.agoncal.book.javaee7

>····1.0

>··

>··org.agoncal.book.javaee7.chapter14

>··chapter14-consumer

>··jar

>··1.0

>··

>····

>······org.glassfish.main.extras

>······glassfish-embedded-all

>······4.0

>······provided

>····

>··

>··

>····

>······

>········org.apache.maven.plugins

>········maven-jar-plugin

>········2.4

>········

>··········

>············

>··············org.agoncal.book.javaee7.chapter14.WebServiceConsumer

>············

>··········

>········

>······

>······

>········org.jvnet.jax-ws-commons

>········jaxws-maven-plugin

>········2.2

>········

>··········

>············

>··············wsimport

>············

>············

>··············

>················

>>··················http://localhost:8080/chapter14-service-1.0/CardValidatorService?wsdl

>················

>··············

>··············true

>············

>··········

>········

>······

>······

>········maven-compiler-plugin

>········2.5.1

>········

>··········1.7

>··········1.7

>········

>······

>····

>··

>

Для лучшего понимания того, что происходит за кулисами, сначала сгенерируйте артефакты, введя такую команду Maven:

>$··mvn generate-sources

Эта команда выполняет фазу жизненного цикла Maven generate-sources и, следовательно, определенную с ним цель wsimport. Цель подключается к URL веб-службы WSDL, загружает ее и генерирует все артефакты. Вот вывод команды Maven:

>[INFO] — jaxws-maven-plugin:2.2:wsimport (default) @ chapter14-consumer —

>[INFO] Processing: http://localhost:8080/chapter14-service-1.0/CardValidatorService?wsdl 

>[INFO] jaxws: wsimport args: [-keep, 

>chapter14-consumer/target/generated-sources/wsimport, 

>··-encoding, UTF-8, -Xnocompile, 

>··http://localhost:8080/chapter14-service-1.0/CardValidatorService?wsdl]

>parsing WSDL…

>Generating code…

>[INFO] —————

>[INFO] BUILD SUCCESS

>[INFO] —————

Если вам интересно, вы можете перейти в каталог target/generated-sources/wsimport и проверить сгенерированные классы. Вы, конечно, найдете там классы CardValidator, CardValidatorService и CreditCard, а также один класс для запроса SOAP (Validate) и еще один для ответа (ValidateResponse). Классы полны аннотациями JAXB и JAX-WS, поскольку они выполняют маршалинг объекта типа CreditCard и подключение к удаленной веб-службе. Вам не придется беспокоиться о сгенерированном коде. Файл. jar может быть скомпилирован и упакован с помощью такой команды:

>$ mvn package

Она создаст файл chapter14-consumer-1.0.jar, который будет содержать написанный вами класс WebServiceConsumer, а также все сгенерированные классы (см. рис. 14.6, чтобы иметь полное представление обо всех созданных классах). Этот файл самостоятелен и может быть выполнен для вызова веб-службы.

Запуск класса WebServiceConsumer

Помните, что класс WebServiceConsumer использует аннотацию @WebServiceRef, чтобы в него можно было внедрить ссылку на интерфейс конечной точки веб-службы. Это означает, что код должен быть выполнен в контейнере клиентского приложения (ACC). Помните также, что файл chapter14-consumer-1.0.jar является исполняемым, поскольку вы добавили элемент Main-Class в файл MANIFEST.MF. Единственное, что вам нужно сделать, — вызвать утилиту appclient, которая поставляется вместе с GlassFish, и передать ей файл. jar следующим образом:

>$ appclient — client chapter14-consumer-1.0.jar

Она вызовет веб-службу через HTTP и выдаст ответ, говоря вам о том, действительна ли кредитная карта.


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.