FeaturesPluginsDocs & SupportCommunityPartners

Руководство разработчика по BPEL Designer

Устранение проблем

Элементы BPEL 2.0, отсутствующие в этом выпуске

В этом выпуске BPEL Designer существуют определенные ограничения на поддерживаемые элементы. Для получения подробных сведений о поддерживаемых средствах языка BPEL 2.0 и соответствующих ограничениях см. Руководство пользователя по механизму служб BPEL.

Использование схем BPEL, отличных от спецификации BPEL 2.0

Этот выпуск BPEL Designer поддерживает последнюю спецификацию BPEL 2.0 и не поддерживает предыдущие спецификации. Это означает, что при открытии файлов BPEL, соответствующих предыдущим версиям спецификаций, в BPEL Designer отображается сообщение "Unable to Show the Diagram".

При получении такого сообщения необходимо выполнить следующее:

  • Проверьте версию спецификации, выполняемую файлом BPEL. Соответствующие спецификации BPEL 2.0 файлы BPEL содержат следующую строку:

    xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"

    Содержащие определения "PartnerLinkType" файлы WSDL должны иметь следующую строку:

    xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"

    Замените пространства имен в файлах на приведенные выше и попытайтесь открыть файл BPEL в BPEL Designer.

  • Удостоверьтесь, что используемые в процессе конструкции BPEL совместимы со спецификацией BPEL 2.0.

Конфликт конечных точек службы

При развертывании двух или более проектов составных приложений может произойти конфликт конечных точек службы, что приведет к сбою развертывания. В случае конфликта конечных точек службы появляется следующее сообщение:

Deploy service assembly failed. (partial success)
MESSAGE: (SOAPBC_DEPLOY_2) Failed to deploy: java.lang.Exception:
An activated endpoint already has the same SOAP Address location:
http://localhost:18181/SynchronousSample
C:\<...>\SynchronousSample1Application\nbproject\build-impl.xml:209:
Service assembly deployment failed.
BUILD FAILED (total time: 31 seconds)

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

Пояснение: Даже при развертывании отличающихся составных приложений и отличающихся процессов BPEL по умолчанию они будут иметь одинаковые адреса конечных точек, определенные в их файлах SynchronousSample.wsdl. Они оба будут содержать следующий адрес конечной точки:

<service name="service1">
   <port name="port1" binding="tns:binding1">
      <documentation/>
      <soap:address location="http://localhost:18181/SynchronousSample"/>
   </port>
</service>

При попытке развернуть два составных приложения (например, SynchronousSampleApplication и SynchronousSample1Application) с идентичными конечными точками службы развертывание второго приведет к ошибке вследствие конфликта конечных точек.

Может возникнуть необходимость в развертывании более чем одной версии составного приложения, т.к. необходимо изменить один или оба этих процесса и развернуть их оба одновременно. Либо может потребоваться сравнить их поведение. Для этого сначала необходимо предоставить им различные адреса конечных точек. Это означает, что необходимо изменить файл WSDL процесса и настроить атрибут soap:address location таким образом, чтобы конфликт отсутствовал. Можно изменить номер порта или имя службы. Например, любой из приведенных ниже процессов в достаточной степени отличается от исходного:

<soap:address location="http://localhost:18182/SynchronousSample"/>

или

<soap:address location="http://localhost:18181/SynchronousSampleNew"/>

Связь конечной точки службы с тестами

При выполнении каждого теста в проекте составного приложения будет предприниматься попытка передачи входного сообщения в целевой процесс при вызове действия теста. Для определения места, в которое необходимо передавать сообщения, каждый тест имеет свойство destination. Это свойство можно изменить в окне "Properties". Для вызова окна "Properties" щелкните правой кнопкой мыши узел теста и выберите "Properties" в появившемся окне.

destination=http://localhost:18181/SynchronousSample

Значение свойства destination устанавливается в момент создания теста. Так, если впоследствии изменить конечную точку службы, то будет необходимо вручную скорректировать атрибут "destination" для любых ранее созданных тестов. Новые создаваемые тесты, несомненно, будут выполняться без ошибок.

Порты

Порт HTTP сервера приложений GlassFish V2

По умолчанию программа установки пытается присвоить серверу приложений HTTP порт 8080. Некоторые из процессов в примерах предполагают значение 8080. Если по какой-либо причине номер порта сервера приложений HTTP отличается от 8080, то необходимо внести изменения в примеры.

В частности, для примера службы бронирования билетов будет необходимо выполнить несколько настроек.

Предположим, например, что сервер приложений прослушивает порт HTTP 8090 (не 8080, устанавливаемый по умолчанию). В этом случае необходимо выполнить следующее:

Корректировка файлов WSDL партнерских служб бронирования

  1. В проекте модуля BPEL "TravelReservationService" измените значение адреса SOAP в файле AirlineReservationService.wsdl с
    <soap:address
    location="http://localhost:8080/webservice/AirlineReservationService"/>

    на

    <soap:address
    location="http://localhost:8090/webservice/AirlineReservationService"/>
  2. Точно так же обновите значения адреса SOAP в файлах VehicleReservationService.wsdl и HotelReservationService.wsdl.

Примечание: Для выяснения прослушиваемого сервером приложений порта HTTP откройте окно "Services", щелкните правой кнопкой мыши узел сервера приложений GlassFish V2 и выберите "View Admin Console". В обозревателе откроется консоль администратора сервера приложений GlassFish V2. Введите имя пользователя и пароль (значениями по умолчанию являются admin/adminadmin) и войдите в систему. Щелкните сервер приложений на левой панели и выберите вкладку "General" на правой панели. Необходимым значением порта HTTP является первое в строке HTTP Port(s):.

В качестве альтернативы в протоколе сервера приложений можно найти следующие строки:

WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 8080
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 8181
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 4848

Необходимое значение находится в первой строке.

Конфликт конечных точек службы бронирования билетов

Общее описание этой проблемы приведено в разделе Конфликт конечных точек служб ранее. Однако в случае службы бронирования билетов необходимо принять следующие дополнительные меры:

Если порт 18181 недоступен и если требуется запустить TRS на другом порту, например, на порту 19191, то необходимо выполнить следующие действия:

Изменение URL-адресов

Откройте TravelReservationService.wsdl.

В теге service измените

soap:address location="http://localhost:18181/TravelReservation/buildItinerary"/

на

soap:address location="http://localhost:19191/TravelReservation/buildItinerary"/

Точно так же обновите URL-адрес для airlineReserved, hotelReserved и vehicleReserved.

Настройка проекта партнерской службы EJB "ReservationPartnerServices"

Выполните следующие действия:

  1. В среде IDE откройте проект "ReservationPartnerServices".

    (Проект "ReservationPartnerServices" создается средой IDE в местоположении, где был создан проект "TravelReservationService".)

  2. В окне "Projects" разверните узел проекта "ReservationPartnerServices", разверните узел "Configuration Files", а затем дважды щелкните узел ejb-jar.xml для открытия файла в визуальном редакторе.
  3. В режиме проектирования в узле "Enterprise Beans" разверните узел "ReservationCallBackProviderMDB". Разверните узел "Bean Environment", а затем "Environment Entries".
  4. В узле "Environment Entries" выберите каждую запись и нажмите кнопку "Edit" для изменения номера порта 18181 в поле "Entry Value".

    Например, для AirlineCallbackURL измените

    http://localhost:18181/TravelReservation/airlineReserved

    на

    http://localhost:19191/TravelReservation/airlineReserved

Обновления свойства "destination"

В проекте составного приложения TravelReservationServiceApplication разверните узел "Test". Для каждого узла теста под ним:

  1. Щелкните правой кнопкой мыши узел теста и выберите "Properties".
  2. В окне "Properties" обновите значение свойства Destination.

    Пример:

    Измените http://localhost:18181/TravelReservation/buildItinerary

    на

    http://localhost:19191/TravelReservation/buildItinerary

Выполнение теста

При выполнении теста:

  • Если файл Output.xml пуст (пуст после создания нового теста), то системой предлагается выбрать, должен ли файл Output.xml заполняться результатами первого выполнения теста. Эти выходные данные указывают на то, что тест не пройден.
  • Если файл Output.xml не пуст, то полученные результаты сравниваются с содержимым файла; если они совпадают, то тест отмечается как пройденный.

Сбои при тестировании

В случае неуспешного завершения тесты можно выполнить одно из следующих действий:

  • Проверьте сообщение, выведенное при сбое теста. Это сообщение отображается под узлом теста в окне "Projects". Оно снабжено временной меткой.

    Можно убедиться, что результат не соответствует ожидаемому (т.е. файлу Output.xml), что может способствовать пониманию возникшей проблемы.

  • После сбоя теста проверьте файл протокола сервера.

    Для этого перейдите на вкладку "Runtime" среды IDE. Выберите действие View Server Log в узле сервера приложений GlassFish V2.

    На экране будет представлено содержимое протокола сервера, в котором может содержаться информация о причинах неуспешного выполнения теста.

В частности, сбой может быть вызван наличием в тестах корреляций на основе содержимого, встроенных в файл Input.xml (например, файлы Input.xml в тестах службы бронирования билетов содержат <UniqueID>...</UniqueID> в качестве основы для корреляции). В этой ситуации при выполнении теста, когда уже существует экземпляр выполняемого процесса, инициируемый тем же самым тестом, второй экземпляр процесса создаваться не будет, и тест завершится сбоем. В файле протокола сервера приложений GlassFish V2 появится следующее сообщение:

Exception occurred while executing a business process instance.
com.sun.jbi.engine.bpel.core.bpel.exception.CorrelationAlreadyExists: An instance is associated with the correlation
<...>

Отключение брандмауэров при использовании серверов

Для развертывания приложений, выполнения, отладки или тестирования приложений на сервере приложений или бизнес-процессов на сервере BPEL может потребоваться отключить брандмауэры.

Необходимое использование набора корреляций не обнаружено системой проверки достоверности

Механизм служб BPEL требует строгого соблюдения правил в наборах корреляций. В настоящее время система проверки достоверности не обнаруживает нарушения следующих требований:

  • On Message: элемент "On Message" должен иметь допустимый дочерний элемент <correlations>, если "On Message" используется в действии "Pick", не имеющем атрибута createInstance="yes".
  • Receive: элемент "Receive" должен иметь допустимый дочерний элемент <correlations>, если он не имеет атрибута createInstance="yes".
  • On Event: элемент "On Event" должен иметь допустимый дочерний элемент <correlations>.

Для получения информации о других известных проблемах в пакете SOA см. Заметки о выпуске среды IDE NetBeans 6.0.

наверх


Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by