(Notes) Notes (2011 год)

JAVA-клиенты Windows Communication Foundation.

Я не являюсь JAVA-программистом, я профессионально программирую на Бейсике. И с момента его появления (еще до VB6, когда Бейсик был еще только плагином для Excel - это было в 1992-м году кажется, а VB6 появился только в 1998 году) - за это время я написал не десятки, а сотни проектов. Во всех ста средах, в которых возможно программирование на Бейсике, включая LINUX. Кроме того, в 2011-м году я интенсивно программировал на FLEX-AIR и уже сделал десятки профессиональных проектов.


Но, тем не менее, мне ИНОГДА приходится делать кое-что на JAVA - здесь я хочу описать одну из таких задач - подключение из JAVA к сервисам Windows Communication Foundation. Думаю это тоже может быть полезно какому-нибудь начинающему программисту - только не относитесь к моим словам в части JAVA как к истине в последней инстанции - это записки JAVA-дилетанта.


Для того, чтобы понять вообще тему кроссплатформенных подключений к web-сервисам (а внутриплатформенные Web-сервисы практически бесполезны, ибо внутри каждой платформы есть свои собственные механизмы обмена данными, гораздо более простые и эффективные, чем web-сервисы) - для того, чтобы понять эту тему, надо осознать что возможности web-сервисов каждой из платформ на 99% несовместимы с возможностями другой плтформы.

Пару простых иллюстраций о такой несовместимости вы можете найти у меня на сайте - вот например как я подключался к Web-сервсам ASSIST'а, сделанным на JAVA. Мне так и не удалось правильно сконфирурировать Windows Communication Foundation - и поскольку это повторялось уже не первый раз - я сделал свой собственный клиент вебсервисов, взамен стандартного микрософтовского WCF - WCF_CLIENT - клиент Web-сервиса.

Другой пример сложного кроссплатформенного подключения к web-сервисам InPlat у меня не описан столь подробно - вот тут приведены кое-какие скрины. Задача состояла в том, чтобы создать такую WCF, которую свободно сможет вызывать калбеком среда PHP. Эту задачу решить удалось, однако это стоило заказчику 30 тысяч рублей и пару недель моей возни.


И действительно, достаточно бегло сопоставить лишь названия разделов внутри каждой платформы - чтобы убедится что придется повозится - чтобы найти у web-сервисов разных платформ хоть какие-то точки соприкосновения. Например у WCF все описания функциональности разбиты по разделам - basicHttpBinding, basicHttpContextBinding, mexHttpBinding, mexHttpsBinding, mexNamedPipeBinding, mexTcpBinding, msmqIntegrationBinding, netMsmqBinding, netNamedPipeBinding, netPeerTcpBinding, netTcpBinding, netTcpContextBinding, webHttpBinding, wsDualHttpBinding, wsFederationHttpBinding, wsHttpBinding, wsHttpContextBinding, ws2007FederationHttpBinding, ws2007HttpBinding, customBinding. А возможности JAVA-сервисы описываются обычно по следующим разделам (спецификациям расширения web-сервисов): WS-Policy, WS-PolicyAttachment, WS-PolicyAssertions, WS-Addressing, WS-Security, WS-Trust, WS-SecureConversation, WS-SecurityPolicy, WS-Federation, WS-Transfer, WS-ResourceTransfer, WS-Fragment, WS-MetadataExchange, WS-Enumeration, WS-Eventing, WS-Management, WS-Discovery, WS-ReliableMessaging, WS-ReliableMessaging Policy, WS-MakeConnection, WS-Coordination, WS-AtomicTransaction, WS-BusinessActivity.


В принципе у меня на сайте уже есть несколько заметок, посвященных совместимости web-сервисов:

А в этой заметке я попробую взглянуть на тот же вопрос со стороны JAVA.

Axis

Стек Apache Axis в принципе является старейшей технологией web-сервисов на Java. В настоящее время в ходу Axis-2. Однако у меня на всех моих тестах реально совместим с WCF только старый Axis.

Ниже на скринчиках вы можете увидеть как я делаю тесты своих WCF-сервисов на Axis:



Теперь осталось сделать консольную утилитку, чтобы тестировать нужный мне WCF-сервис. Этот сервис просто возвращает курс доллара, по которому работает компания http://flyseason.ru/ - но меня интересует в данном случае не просто курс валюты, а совместимость моего сервиса с клиентами на Axis.



Замечу, что и собственно Java-сервисы на Axis делать проще всего.



CXF

Стек web-сервисов Apache CXF ставится в составе Web-сервера Glassfish:



Теперь можно ставить собственно стек web-сервисов Apache CXF:



Обратите внимание, что прокси-классы, сгенерированные Apache CXF совершенно непохожи на классы Apache Axis - поэтому и использование их для вызова WCF-сервисов будет другое.

Metro

Клиент web-сервиса стека Metro создается с помощью консольной утилиты wsiimport, которой скармливается WSDL. Но поскольку у меня уже стоит SoapUI - я просто сгенерю клиента WCF-сервиса в один клик мышкой.



Как вы видите, у меня в Eclipse установлен не только soapUI - как это сделать я описал в своей маленькой заметочке - Подготовка к работе Eclipse.



Comments ( )
<00>  <01>  <02>  <03>  <04>  <05>  <06>  <07>  <08>  <09>  <10>  <11>  <12>  <13>  <14>  <15>  <16>  <17
Link to this page: http://www.vb-net.com/JAVA_with_WCF/index.htm
<SITEMAP>  <MVC>  <ASP>  <NET>  <DATA>  <KIOSK>  <FLEX>  <SQL>  <NOTES>  <LINUX>  <MONO>  <FREEWARE>  <DOCS>  <ENG>  <MAIL ME>  <ABOUT ME>  < THANKS ME>