понедельник, 27 августа 2012 г.

SOA Governance: создаем домен с OSB, SOA Suite, Oracle Enterprise Repository и Oracle Service Registry

Корпорация Oracle предлагает следующее программное обеспечение для построения процесса управления сервисно-ориентированной архитектурой предприятия (SOA Governance):

  • Oracle Enterprise Repository - репозиторий предприятия, предназначеный для хранения схем, описаний сервисов, самих сервисов, процессов, методологических документов, и прочего имущества (assets) предприятия. Позволяет гибко настраивать таксономию ресурсов и отслеживать взаимосвязи между ними. Опционально можно настроить политики, например стандарты качества, и отслеживать соответствие ресурсов данным стандартам.

  • Oracle Service Registry - UDDI v3-совместимый реестр сервисов. Интегрируется как с Oracle SOA Suite, так и с Oracle Service Bus, а так же позволяет публиковать и искать сервисы с помощью Eclipse и JDeveloper.

  • Oracle Enterprise Gateway - средство защиты сервисно-ориентированной архитектуры. Как видно из названия, реализует паттерн Gateway в противовес паттерну Agent, реализуемому Oracle Web Services Manager'ом.

  • Oracle Enterprise Manager SOA Management Pack Enterprise Edition - средство управления сервисно-ориентированной архитектурой предприятия во время исполнения.

  • Oracle SOA Suite - средство реализации сервисов. Содержит такие компоненты как Mediator, BPEL, Business Rules, Human Task, а так же поддерживает интеграцию со Spring Framework. В состав SOA Suite входит Oracle Web Services Manager - средство, используемое для обеспечения работы политик WS-Policy.




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

  • Oracle Enterprise Repository;

  • Oracle Service Registry;

  • Oracle Enterprise Manager (входит в состав Oracle SOA Suite);

  • Oracle SOA Suite;

  • Oracle Service Bus (позиционируется компанией Oracle как часть Oracle SOA Suite, однако является отдельным приложением).

Важно! При установке всех перечисленных компонентов в один каталог MIDDLEWARE_HOME, Oracle Service Registry должен устанавливаться последним. Если возникла необходимость установить какой-либо компонент поверх Oracle Service Registry, то нужно сделать следующее:

1. Удалить Oracle Service Registry с помощью файла MIDDLEWARE_HOME\registry111\bin\setup.bat, выполнив действие Undeploy.


При этом значение параметра Registry deployment directory на первом шаге мастера можно оставить пустым:


2. Удалить вручную каталог, в который был установлен Oracle Service Registry. По-умолчанию это: MIDDLEWARE_HOME\registry111.

3. Заново установить Oracle Service Registry в тот же MIDDLEWARE_HOME.

Существует два подхода к задействованию компонентов: во-первых, можно поступить как рекомендует Oracle - вынести Oracle Service Registry и Oracle Enterprise Repository в отдельный домен, во-вторых можно использовать весь набор ПО в рамках одного домена.

Проблема установки всего набора приложений в один домен заключается в том, что при добавлении Oracle SOA Suite и/или Oracle Service Bus, изменяется содержимое файла setDomainEnv.cmd/sh - добавляются новые классы в classpath. Соответственно, работа Oracle Service Registry нарушается.

Чтобы работа реестра сервисов не нарушалась, необходимо сделать так, чтобы классы, специфичные для Oracle SOA Suite и Oracle Service Bus не добавлялись в classpath сервера, на котором развернут Oracle Service Registry. По-умолчанию данный сервер называется osr_server1. Соответственно, необходимо исправить файл setDomainEnv.cmd/sh, обернув строчки, в которых к POST_CLASSPATH подключается архив %COMMON_COMPONENTS_HOME%\modules\oracle.jrf_11.1.1\jrf.jar, и в которых к PRE_CLASSPATH подключается %COMMON_COMPONENTS_HOME%\modules\oracle.jdbc_11.1.1\ojdbc6dms.jar в блок
if NOT "%SERVER_NAME%"=="osr_server1" (



)

Таким образом участок файла setDomainEnv.cmd/sh, в котором переопределяются переменные окружения POST_CLASSPATH и PRE_CLASSPATH, будет выглядеть следующим образом:

в случае использования Oracle Service Bus:

if NOT "%SERVER_NAME%"=="osr_server1" (

    if NOT "%PRE_CLASSPATH%"=="" (

        set PRE_CLASSPATH=%COMMON_COMPONENTS_HOME%\modules\oracle.jdbc_11.1.1\ojdbc6dms.jar;%PRE_CLASSPATH%

    ) else (

        set PRE_CLASSPATH=%COMMON_COMPONENTS_HOME%\modules\oracle.jdbc_11.1.1\ojdbc6dms.jar

    )



    if NOT "%POST_CLASSPATH%"=="" (

        set POST_CLASSPATH=%COMMON_COMPONENTS_HOME%\modules\oracle.jrf_11.1.1\jrf.jar;%POST_CLASSPATH%

    ) else (

        set POST_CLASSPATH=%COMMON_COMPONENTS_HOME%\modules\oracle.jrf_11.1.1\jrf.jar

    )  

)

в случае использования Oracle SOA Suite:

if NOT "%SERVER_NAME%"=="osr_server1" (

    if NOT "%PRE_CLASSPATH%"=="" (

        set PRE_CLASSPATH=%COMMON_COMPONENTS_HOME%\modules\oracle.jdbc_11.1.1\ojdbc6dms.jar;%PRE_CLASSPATH%

    ) else (

        set PRE_CLASSPATH=%COMMON_COMPONENTS_HOME%\modules\oracle.jdbc_11.1.1\ojdbc6dms.jar

    )



    if NOT "%POST_CLASSPATH%"=="" (

        set POST_CLASSPATH=%COMMON_COMPONENTS_HOME%\modules\oracle.jrf_11.1.1\jrf.jar;%POST_CLASSPATH%

    ) else (

        set POST_CLASSPATH=%COMMON_COMPONENTS_HOME%\modules\oracle.jrf_11.1.1\jrf.jar

    )  

    set POST_CLASSPATH=%SOA_ORACLE_HOME%\soa\modules\oracle.soa.fabric_11.1.1\oracle.soa.fabric.jar;%SOA_ORACLE_HOME%\soa\modules\oracle.soa.fabric_11.1.1\fabric-runtime-ext-wls.jar;%SOA_ORACLE_HOME%\soa\modules\oracle.soa.adapter_11.1.1\oracle.soa.adapter.jar;%SOA_ORACLE_HOME%\soa\modules\oracle.soa.b2b_11.1.1\oracle.soa.b2b.jar;%POST_CLASSPATH%

)

в случае использования Oracle Service Bus и Oracle SOA Suite:

if NOT "%SERVER_NAME%"=="osr_server1" (

    if NOT "%POST_CLASSPATH%"=="" (

       set POST_CLASSPATH=%COMMON_COMPONENTS_HOME%\modules\oracle.jrf_11.1.1\jrf.jar;%POST_CLASSPATH%

    ) else (

       set POST_CLASSPATH=%COMMON_COMPONENTS_HOME%\modules\oracle.jrf_11.1.1\jrf.jar

    )

    if NOT "%PRE_CLASSPATH%"=="" (

       set PRE_CLASSPATH=%COMMON_COMPONENTS_HOME%\modules\oracle.jdbc_11.1.1\ojdbc6dms.jar;%PRE_CLASSPATH%

    ) else (

       set PRE_CLASSPATH=%COMMON_COMPONENTS_HOME%\modules\oracle.jdbc_11.1.1\ojdbc6dms.jar

    )

)



set POST_CLASSPATH=%POST_CLASSPATH%



set POST_CLASSPATH=%POST_CLASSPATH%;%ALSB_HOME%\lib\version.jar;%ALSB_HOME%\lib\alsb.jar;%ALSB_HOME%\3rdparty\lib\j2ssh-ant.jar;%ALSB_HOME%\3rdparty\lib\j2ssh-common.jar;%ALSB_HOME%\3rdparty\lib\j2ssh-core.jar;%ALSB_HOME%\3rdparty\lib\j2ssh-dameon.jar;%ALSB_HOME%\3rdparty\classes;%ALSB_HOME%\lib\external\log4j_1.2.8.jar;%DOMAIN_HOME%\config\osb



if NOT "%SERVER_NAME%"=="osr_server1" (

    set POST_CLASSPATH=%SOA_ORACLE_HOME%\soa\modules\oracle.soa.fabric_11.1.1\oracle.soa.fabric.jar;%SOA_ORACLE_HOME%\soa\modules\oracle.soa.fabric_11.1.1\fabric-runtime-ext-wls.jar;%SOA_ORACLE_HOME%\soa\modules\oracle.soa.adapter_11.1.1\oracle.soa.adapter.jar;%SOA_ORACLE_HOME%\soa\modules\oracle.soa.b2b_11.1.1\oracle.soa.b2b.jar;%POST_CLASSPATH%

)

 

Видно, что после данных манипуляций все сервера домена корректно стартуют


и Oracle Service Registry нормально открывается:


Понравилось сообщение - подпишитесь на блог и Twitter

Комментариев нет:

Отправить комментарий

Любой Ваш комментарий важен для меня, однако, помните, что действует предмодерация. Давайте уважать друг друга!