ПредишенСледващото

Друга Web-услуги инфраструктура на фондация Apache Software

Денис Sosnoski. Консултант, Sosnoski Software Solutions, Inc.

Денис Sosnoski (Dennis Sosnoski) - основател и водещ на Java специалист технологии консултантска компания - Sosnoski Software Solutions, Inc. специализирана в обучение и консултиране по въпросите на XML и уеб услуги. Той има повече от 30 години опит в професионалното развитие на софтуер, специализирана в сървъра от страна на XML и Java-технология. Денис е водещ разработчик на отворения код JiBX XML данни подвързване. изградена на базата на технологията за клас Java и свързаните JibxSoap уеб-услуги рамка. както и услуги в мрежата, рамката на Apache Axis2. Той е и един от експерта в развитието на JAX-WS 2.0 спецификация.

Основи CXF

UI CXF има много общо с интерфейси стековете Axis2 и метростанция. И трите стекове ви позволяват да създавате Web услуги на базата на съществуващ Java ™ код или да генерира Java код, базиран на WSDL-описание за използването или прилагането на тази услуга. Подобно на други стекове, операции CXF модели на услуги като извикване на метод, както и пристанищата на услуги (portType) - под формата на интерфейси.

За тази серия

По същия начин Axis2, но за разлика от Metro, CXF позволява да избирате между различни технологии задължителни данни. CXF поддържа данни обвързващи JAXB 2.x наравно с метро и малко по-добре, отколкото Axis2, тъй като ви позволява да изберете JAXB при генериране на код от WSDL-описание на услуги (Axis2 не го позволява). CXF също ви позволява да използвате други методи за задължителни данни, въпреки че подкрепата им не е, както се прилага като в Axis2. Например, за да се генерира код от е възможно по-WSDL файл в CXF само при използване на данни обвързващи JAXB или XMLBeans.

Предпочитаният метод за конфигуриране на услуги (което CXF терминология се нарича на интерфейса) в CXF са анотации JAX-WS 2.x, допълнени конфигурация XML-файлове. Подкрепа за JAX-WS пояснения в CXF е наравно с метрото, което прави тази инфраструктура е далеч за предпочитане да се работи с JAX-WS, отколкото Axis2 (подкрепа за JAX-WS, която има някои сериозни ограничения, които бяха обсъдени в статията "JAXB и JAX- WS в Axis2 "). Както и при други приложения на JAX-WS, CXF изисква WSDL-описание от страна на клиента по време на изпълнение.

Както и в други стекове, CXF в обработка на заявки и отговори се извършва набор от конфигурируеми компоненти. В CXF тези компоненти се наричат ​​прехващачи (intercepters) и не процесори (манипулатори), но въпреки различните имена, тези термини се отнасят до едни и същи компоненти. Подобно на Metro, CXF в основния товар подкрепя WS-Security и други модерни технологии. За разлика от Metro, JAR-CXF файлове са модулни. В зависимост от използваната технология, и можете да изберете да се включат в молбата Ви само файловете, които се нуждаят от (в директорията CXF в файл / ИЪ / WHICH_JARS описва какво JAR-файлове са необходими за различни видове случаи на употреба). Недостатъкът на този модулност е, че в крайна сметка, може да се наложи да се справят с един дълъг списък от JAR-файлове, необходими на вашата кандидатура и достойнство - е, че тя позволява да се намали размера на приложенията падащите.

Подобно на Metro, CXF обикновено изисква да се съберат за уеб-услуга едно разгръщане WAR-файл вместо потенциално множество услуги в рамките на един сървър (подхода, използван в Axis2). CXF също така предоставя вграден HTTP сървър Jetty, подходящ за използване в производствена среда. Тя е по-гъвкава и мощна алтернатива на прост HTTP сървър интегриран в Axis2 и метростанция.

примерни приложения

  • getBook връща подробна информация за книгата. Книгата определени от Международната стандартна Twin ISBN (Международен стандартен номер на книгата).
  • getBooksByType връща подробна информация за всички книги от определен тип.
  • getTypes връща наличните видове книги.
  • addBook добавя нова книга в библиотеката.

Използването от страна на клиента

Кодът на клиент за нашата молба за CXF е идентичен с използването на JAX-WS в Axis2 или метро. Стъпки за сглобяване от клиента също е много сходни: Използвайте включени в CXF полезност wsdl2java вместо предназначена за програма JAX-WS wsimport. За повече информация относно работата с клиентския код, вижте статията "JAXB и JAX-WS в Axis2".

Използването от страна на сървъра

Сървърът на нашата молба код на CXF също е идентичен с използването на JAX-WS в Axis2 или метро. Процесът на монтаж е много подобен на метрото. В Axis2, ние сме готови да се осигури услугата, създаване на JAR-файл с класовете на обслужване и модел на данните и след това разгърна услугата чрез поставяне на JAR-файла в сървъра на директория уеб INF / servicejars Axis2. Метрото и CXF вместо трябва да се създаде WAR-файл, който съдържа класовете на услуги и данни, модели, библиотека JAR-файлове на метрото или CXF и няколко конфигурационни файлове (една от които се нарича по различен начин в двете купчини). В досието WEB-INF / web.xml конфигуриран директно с обработването на заявката сървлет. Обява 1 показва версия на файла, който се използва в нашата молба:

Обява 1. web.xml файл в прилагането на пробата

Както е показано на Обява 1 файл WEB-INF / web.xml това е само стандартна конфигурационен файл сървлет, която разказва за сървъри уеб-базирани приложения (като Tomcat), как да си взаимодействат с сървлета. Този файл е подобен на използвания в примера за метрото файл, въпреки че за CXF атрибут И е част от CXF и код показва класа на инфраструктурата Spring (виж ресурси.). Както в примера за метрото, сървлета е конфигуриран да се справи с всички искания до този уеб-приложение (това се прави в атрибут / ).

Обява 2. В досието cxf-servlet.xml в прилагането на пробата

Изграждане и изпълнение на кода

проблеми за сглобяване

Тъй като Java SE 6 изпълнение JAXB 2.x и JAX-WS 2.x (с изключение на разширения) да стане част от стандартните библиотеки на Java Runtime Environment (JRE). Това беше направено, за да се насърчи използването на тези технологии. Все пак, това добро намерение намери един неприятен недостатък: Сега, ако е необходимо, да се използват последните версии на тези библиотеки трябва да се промени вече е инсталиран JRE.

build.xml файл, използван в този пример за приложение, копия на необходимите CXF JAR-файлове директно в сервизния WAR-файла. Те включват JAR-файлове JAXB и JAX-WS за изграждане на Java SE 5; но когато правиш монтажа на Java SE 6, процедурата по монтажа е да се използва версия на JAXB и JAX-WS на инсталацията JVM. Когато сваляне на файлове конфликти причиняват проблеми в кода JAXB или JAX-WS, използвайки Java SE 6 или по-късно, проверете дали вашата дистрибуция CXF коментари по отношение на съвместимостта на различните версии на JVM.

Преди да започнете работа с приложението на пробата, трябва да изтеглите и инсталирате на вашата система CXF текущата версия (виж ресурси.). Кодът за кандидатстване е бил тестван с версия 2.2.5. Можете също така трябва да редактирате файла с build.properties намира в главната директория. Намерете атрибутите cxf-дом и да го настроите на пътя, който е настроен CXF. Ако тествате сървъра приложение, което работи на друга машина, или пристанище, различна от тази по подразбиране, трябва да промените атрибутите на-име на хост и хост-порт.

За изграждането на приложението, което използва build.xml файла за Ant, отворете конзолата в главната директория на кода на приложението и да стартирате мравка команда. Тази команда стартира първата програма wsdl2java (включени в разпределението CXF), след съставяне на кода на клиента и сървъра, и най-накрая го опаковайте кода на сървъра по време на войната-файла. След това можете да разположите на генерирания файл cxf-library.war на тест сървър и пишете мравка серия на конзолата. стартирате приложението на клиента. Клиентът извършва поредица от заявки до сървъра, отпечатайте обобщение на резултатите от всяка заявка. Както споменах в раздела Използване на страната на клиента. по време на монтажа, за да настроим влезете CXF, така че да се избегне изхода на подробна информация, когато клиентът започва.

Пролет в CXF

Имайте предвид, че в конфигурационния файл cxf-servlet.xml, посочено в Обява 2 всъщност е конфигуриран боб-компонент на рамката пролет. Както може би знаете, Пролет - инфраструктура на разработката на приложения с отворен код. Тя включва различни компоненти и библиотеки, които можете да използвате в молбата си. Първоначално Пролет основа лежи контейнер Инверсия на контрол (МОК). Тя ви позволява да се свържете и да конфигурирате JavaBean - компоненти се използва механизмът за размисъл Java за достъп до свойствата на боб обекти по време на изпълнение.

Контейнер Пролет МОК, който обикновено се използва, за да получи информация за зависимостите XML-файлове. Обявата 2 cxf-servlet.xml файл е пример за такава конфигурация Spring файл. елемент Това е само определена конфигурация обвивка боб-елемент. елемент е боб-елемент, който CXF свързан с определен тип обект (пример на клас org.apache.cxf.jaxws.EndpointImpl).

Файловият cxf-servlet.xml да определите много други параметри, които не се използват в този прост пример, включително конфигурация поток съобщение за услуга. могат да бъдат намерени в документацията CXF (раздел Входни-блокове / JAX-WS) подробна информация за JAX-WS конфигурация.

С изключение на анотации JAX-WS, пролет се използва за всички конфигурация CXF комин, включително организирането на вътрешни съобщения CXF. В повечето случаи, всички данни за настройки се задават автоматично от конфигурацията на XML-файлове, включени директно в CXF (в параметър contextConfigLocation във файла web.xml в Обява 1, можете да видите как точно са определени тези файлове). Въпреки това, една типична конфигурация може да се замени или удължен с помощта на собствените си конфигурационни файлове. Ние няма да говорим за това в тази поредица от статии, за повече информация по тази тема, моля, свържете се CXF документация.

Ние продължаваме запознаване с CXF

Подкрепете проекта - споделете линка, благодаря!