четверг, 18 октября 2012 г.

Библиотеки, необходимые для сборки и развертывания OSB и SOA Suite проектов

Одной из популярных сегодня техник создания программного обеспечения является непрерывная интеграция. При внедрении данного процесса при разработке сервисной шины предприятия, основанной на Oracle Service Bus (OSB) или Oracle SOA Suite, требуется решить две задачи:

  • обеспечить сборку проектов OSB и SCA-композитов SOA Suite;

  • обеспечить развертывание собранных компонентов на сервере приложений Oracle WebLogic.

В сети представлено много материалов, описывающих автоматизацию этих задач. Рекомендую статью Станислава Девятова Непрерывная интеграция для Oracle SOA Suite 11g. В данной же заметке хочется рассмотреть вопрос минимизации количества необходимых библиотек.


Постановка задачи


Прежде всего давайте разберемся с тем, какое программное обеспечение нужно установить на сервер непрерывной интеграции. Замечу, что данное ПО нужно не для работы OSB и SOA Suite: тестовые среды могут быть расположены на других машинах. Данное ПО нужно исключительно для сборки и развертывания компонентов.

Итак, список необходимого ПО:

  • Oracle WebLogic Server;

  • Oracle Service Bus;

  • Oracle SOA Suite;

  • Oracle JDeveloper;

  • Eclipse Indigo;

  • Oracle Enterprise Pack for Eclipse (OEPE).

Каталог с данными установленными приложениями занимает на диске порядка двух гигабайт. Не много ли для сборки и развертывания?

Уменьшаем количество необходимых библиотек


Понятно, что на самом деле большая часть установленных компонентов нужна для работы OSB и SOA Suite, а при сборке и развертывании не используется. Для минимизации количества библиотек вычленим только те компоненты, которые действительно нужны.

Прежде всего необходимо создать каталог с компонентами, назовем его middleware. Структура каталога будет повторять структуру инсталляции Oracle Fusion Middleware:

/middleware

  /eclipse  

  /jdeveloper

  /modules

  /oracle_common

  /osb_11.1

  /soa_11.1

  /utils

  /wlserver_10.3

Первым на очереди каталог eclipse. Для экспорта проектов OSB нужно иметь полноценный работающий Eclipse Indigo с установленными плагинами OEPE и OSB. Скачать Eclipse можно с официального сайта проекта. Нужно взять версию для Java EE-разработчиков. Установить OEPE можно с помощью стандартного механизма установки новых приложений Eclipse из сайта обновлений. Достаточно установить только компоненты WebLogic Server, WebLogic Scripting и Coherence.

Для подключения плагинов OSB необходимо поместить в подкаталог dropins каталога eclipse файл oracle.osb.ide.link со следующим содержимым:

 path=../osb_11.1/eclipse140

Получается следующая структура каталогов:

/middleware

  /eclipse

    /configuration

    /dropins

      /oracle.osb.ide.link

    /features

    /p2

    /plugins

    /readme

  /jdeveloper

  /modules

  /oracle_common

  /osb_11.1

    /eclipse140

  /soa_11.1

  /utils

  /wlserver_10.3

Каталог jdeveloper содержит следующие файлы и каталоги:

/jdeveloper

  /bin

    /ant-sca-compile.xml

    /ant-sca-deploy.xml

    /ant-sca-mgmt.xml

    /ant-sca-package.xml

    /ant-soa-common.xml

  /soa

    /oracle.soa.fabric_11.1.1

      /fabric-runtime-ext-wls.jar

      /fabric-runtime.jar

Данный каталог содержит файлы сборки для Apache Ant, позволяющие собирать и разворачивать SCA-композиты, а так же управлять Oracle SOA Suite'ом.

Каталог modules содержит следующие файлы и каталоги:

/modules

  /features

    /com.oracle.cie.config.L10N_7.2.0.0.jar

    /com.oracle.cie.config_7.2.0.0.jar

    /weblogic.server.modules_10.3.6.0.jar

  /com.bea.core.antlr.runtime_2.7.7.jar

  /com.bea.core.apache.commons.lang_2.1.0.jar

  /com.bea.core.common.engine.api_1.0.0.0_6-2-0-0.jar

  /com.bea.core.common.security.api_1.0.0.0_6-2-0-0.jar

  /com.bea.core.common.security.op_6.1.0.0.jar

  /com.bea.core.common.security.providers.utils_1.0.0.0_6-2-0-0.jar

  /com.bea.core.common.security.providers.utils_6.1.0.0.jar

  /com.bea.core.common.security.utils_1.0.0.0_6-2-0-0.jar

  /com.bea.core.common.security.utils_6.1.0.0.jar

  /com.bea.core.datasource6_1.10.0.0.jar

  /com.bea.core.datasource_1.10.0.0.jar

  /com.bea.core.descriptor.wl_1.4.0.0.jar

  /com.bea.core.descriptor_1.10.0.0.jar

  /com.bea.core.diagnostics.core_2.6.0.0.jar

  /com.bea.core.i18n_1.9.0.0.jar

  /com.bea.core.ldapjdk_1.3.0.0.jar

  /com.bea.core.logging_1.9.0.0.jar

  /com.bea.core.management.core_2.9.0.1.jar

  /com.bea.core.management.jmx_1.4.2.0.jar

  /com.bea.core.mbean.maker_1.5.0.0.jar

  /com.bea.core.nodemanager.plugin_1.3.0.0.jar

  /com.bea.core.store_1.8.0.0.jar

  /com.bea.core.timers_1.7.1.0.jar

  /com.bea.core.transaction_2.7.1.0.jar

  /com.bea.core.utils.classloaders_2.0.0.0.jar

  /com.bea.core.utils.expressions_1.4.0.0.jar

  /com.bea.core.utils.full_1.10.0.0.jar

  /com.bea.core.utils.wrapper_1.4.0.0.jar

  /com.bea.core.utils_1.10.0.0.jar

  /com.bea.core.weblogic.client.wlst3client_12.0.0.0.jar

  /com.bea.core.weblogic.lifecycle_1.5.0.0.jar

  /com.bea.core.weblogic.rmi.client_1.10.0.0.jar

  /com.bea.core.weblogic.rmi.client_1.11.0.0.jar

  /com.bea.core.weblogic.saaj_1.8.0.0.jar

  /com.bea.core.weblogic.security.digest_1.0.0.0.jar

  /com.bea.core.weblogic.security.identity_1.2.0.0.jar

  /com.bea.core.weblogic.security.wls_1.0.0.0_6-2-0-0.jar

  /com.bea.core.weblogic.security_1.0.0.0_6-2-0-0.jar

  /com.bea.core.weblogic.socket.api_1.3.0.0.jar

  /com.bea.core.weblogic.stax_1.10.0.0.jar

  /com.bea.core.weblogic.workmanager_1.11.0.0.jar

  /com.bea.core.workarea_1.8.0.0.jar

  /com.bea.core.xml.beaxmlbeans_2.5.0.0_2-5-1.jar

  /com.bea.core.xml.staxb.runtime_1.8.0.0.jar

  /com.bea.core.xml.xmlbeans_2.2.0.0_2-5-1.jar

  /com.oracle.cie.comdev_6.4.0.0.jar

  /com.oracle.cie.config-wls-schema_10.3.6.0.jar

  /com.oracle.cie.config-wls_7.2.0.0.jar

  /com.oracle.cie.config_7.2.0.0.jar

  /com.oracle.cie.gpr-impl_3.1.0.0.jar

  /com.oracle.cie.gpr_3.1.0.0.jar

  /com.oracle.cie.wizard_6.1.0.0.jar

  /com.oracle.cie.wlw-plaf_5.3.0.0.jar

  /com.oracle.cie.xmldh_2.5.0.0.jar

  /com.oracle.core.weblogic.msgcat_1.2.0.0.jar

  /com.oracle.ocm_1.0.0.0.jar

  /com.rsa.certj_1.0.0.0.jar

  /cryptoj.jar

  /features

  /glassfish.jaxws.rt_1.3.0.0_2-1-5.jar

  /javax.activation_1.1.0.0_1-1.jar

  /javax.activation_1.1.jar

  /javax.annotation_1.0.0.0_1-0.jar

  /javax.ejb_3.0.1.jar

  /javax.enterprise.deploy_1.2.jar

  /javax.interceptor_1.0.jar

  /javax.jdo_2.0.1.jar

  /javax.jms_1.1.1.jar

  /javax.jsf_1.1.0.0_1-2.jar

  /javax.jsp_1.3.0.0_2-1.jar

  /javax.jws_2.0.jar

  /javax.mail_1.1.0.0_1-4-1.jar

  /javax.mail_1.4.jar

  /javax.management.j2ee_1.0.jar

  /javax.management.remote_1.0.1.3.jar

  /javax.management_1.2.1.jar

  /javax.persistence_1.0.0.0_1-0-2.jar

  /javax.persistence_1.1.0.0_2-0.jar

  /javax.resource_1.5.1.jar

  /javax.security.jacc_1.0.0.0_1-1.jar

  /javax.servlet_1.0.0.0_2-5.jar

  /javax.transaction_1.0.0.0_1-1.jar

  /javax.ws.rs_1.0.0.0_1-1-1.jar

  /javax.xml.bind_2.1.1.jar

  /javax.xml.registry_1.0.0.0_1-0.jar

  /javax.xml.rpc_1.1.jar

  /javax.xml.rpc_1.2.1.jar

  /javax.xml.soap_1.3.0.0.jar

  /javax.xml.soap_1.3.1.0.jar

  /javax.xml.stream_1.0.0.0.jar

  /javax.xml.stream_1.1.1.0.jar

  /javax.xml.ws_2.1.1.jar

  /org.eclipse.persistence_1.2.0.0_2-3.jar

 

Каталог oracle_common содержит следующие файлы и каталоги:

/oracle_common

  /modules

    /datadirect_4.1

      /wldb2.jar

      /wlinformix.jar

      /wlsqlserver.jar

      /wlsybase.jar

    /oracle.dms_11.1.1

      /dms.jar

    /oracle.fabriccommon_11.1.1

      /fabric-common.jar

      /policy-api.jar

    /oracle.jrf_11.1.1

      /fmwgenerictoken.jar

      /jaxp_svc.jar

      /jrf-api.jar

      /jrf-client.jar

      /jrf-coherence.jar

      /jrf-wlstman.jar

      /jrf.jar

      /jython.jar

    /oracle.webservices_11.1.1

      /orawsdl.jar

      /wsclient.jar

      /wsif.jar

      /wssecurity.jar

    /oracle.xdk_11.1.0

      /oraclexsql.jar

      /xml.jar

      /xmlmesg.jar

      /xmlparserv2.jar

      /xmlparserv2_jaxp_services.jar

      /xmlparserv2_sans_jaxp_services.jar

      /xquery.jar

      /xsqlserializers.jar

      /xsu12.jar

    /commonj.sdo_2.1.0.jar

    /oracle.classloader_11.1.1.jar

    /oracle.http_client_11.1.1.jar

    /oracle.logging-utils_11.1.1.jar

    /org.apache.commons.beanutils_1.6.jar

    /org.apache.commons.digester_1.8.jar

    /org.apache.commons.logging_1.0.4.jar

    /org.objectweb.asm.attrs_1.5.3.jar

    /org.objectweb.asm_1.5.3.jar        

  /soa

    /modules

      /oracle.soa.mgmt_11.1.1

        /soa-client-stubs-was.jar

        /soa-infra-mgmt.jar

      /commons-cli-1.1.jar

  /webservices

    /wsclient_extended.jar

Каталоги modules и oracle_common содержат общие для всего Oracle Fusion Middleware библиотеки. В приведенных выше списках содержится минимальный набор библиотек, необходимых для экспорта OSB-проектов Eclipse'ом, сборки SCA-композитов Apache Ant'ом и их развертывания на сервере с помощью WLST.

Каталог osb_11.1 содержит следующие файлы и каталоги:

/osb_11.1

  /config

    /adapter

      /OSBSupportedAdapters.xml

    /plugins

      /resource-MQConnection.xml

      /stage-xbusdebug.xml

      /stage-xbuslogging.xml

      /stage-xbuspublish.xml

      /stage-xbusrouting.xml

      /stage-xbustransform.xml

      /transport-aldsp.xml

      /transport-bpel10g.xml

      /transport-ejb.xml

      /transport-email.xml

      /transport-file.xml

      /transport-flow.xml

      /transport-ftp.xml

      /transport-jca.xml

      /transport-jejb.xml

      /transport-mq.xml

      /transport-sb.xml

      /transport-sftp.xml

      /transport-soa-direct.xml

      /transport-tuxedo.xml

      /transport-ws.xml

    /xpath-functions

      /osb-built-in.properties

      /osb-built-in.xml

      /osb-built-in_de.properties

      /osb-built-in_es.properties

      /osb-built-in_fr.properties

      /osb-built-in_it.properties

      /osb-built-in_ja.properties

      /osb-built-in_ko.properties

      /osb-built-in_pt_BR.properties

      /osb-built-in_zh_CN.properties

      /osb-built-in_zh_TW.properties

  /eclipse140

  /harvester

  /lib

    /external

      /adapters

        /META-INF

          /MANIFEST.MF

          /ra.xml

          /weblogic-ra.xml

        /AppsAdapter.jar

        /AqAdapter.jar

        /DBAdapter.jar

        /fileAdapter.jar

        /ftpAdapter.jar        

        /oracle.xdb_11.1.0.jar

        /toplink-grid.jar

        /xsu12.jar        

      /concurrentlinkedhashmap-lru-1.2.jar

      /jca-binding-osb.jar

      /log4j_1.2.8.jar

      /org.apache.xalan

      /wsif.jar

      /org.apache.xalan/xsltc.jar

    /modules

      /com.bea.alsb.alertfwk.jar

      /com.bea.alsb.bpel.api.jar

      /com.bea.alsb.bpel.public.jar

      /com.bea.alsb.bpel.schemas.jar

      /com.bea.alsb.bpel.util.jar

      /com.bea.alsb.bpel.validator.jar

      /com.bea.alsb.common.jar

      /com.bea.alsb.flow.api.jar

      /com.bea.alsb.flow.kernel.jar

      /com.bea.alsb.kernel-offline.jar

      /com.bea.alsb.owsm.resource.jar

      /com.bea.alsb.pipeline-api.jar

      /com.bea.alsb.platform-offline.jar

      /com.bea.alsb.platform.jar

      /com.bea.alsb.resources.alertdestination.jar

      /com.bea.alsb.resources.archive.jar

      /com.bea.alsb.resources.core.jar

      /com.bea.alsb.resources.custom.jar

      /com.bea.alsb.resources.globalsettings.jar

      /com.bea.alsb.resources.jca.jar

      /com.bea.alsb.resources.jndi.jar

      /com.bea.alsb.resources.mfl.jar

      /com.bea.alsb.resources.proxyserver.jar

      /com.bea.alsb.resources.schema.jar

      /com.bea.alsb.resources.smtp.jar

      /com.bea.alsb.resources.svcaccount.jar

      /com.bea.alsb.resources.svcprovider.jar

      /com.bea.alsb.resources.wsdl.jar

      /com.bea.alsb.resources.wspolicy.jar

      /com.bea.alsb.resources.xml.jar

      /com.bea.alsb.resources.xquery.jar

      /com.bea.alsb.resources.xslt.jar

      /com.bea.alsb.security-offline.jar

      /com.bea.alsb.security-wls.jar

      /com.bea.alsb.security.api.jar

      /com.bea.alsb.security.impl.jar

      /com.bea.alsb.uddi.registry.jar

      /com.bea.alsb.uddi.services.jar

      /com.bea.alsb.utils.jar

      /com.bea.alsb.ws.codec.jar

      /com.bea.alsb.ws.schemas.soap.jar

      /com.bea.alsb.ws.schemas.wsdl.jar

    /sbconsoleEar

      /webapp

        /WEB-INF

          /lib

            /com.bea.core.apache.xercesImpl_2.8.1.jar

            /jCharts-0.7.5.jar

            /jdom.jar

            /sbconsole.jar

            /sbTestFwk_ejbClient.jar

            /wlsconsole-tree.jar

    /stages

      /stage-utils.jar

      /xbusdebug.jar

      /xbuslogging.jar

      /xbuspublish.jar

      /xbusrouting.jar

      /xbustransform.jar

    /transports

      /aldsp_transport.jar

      /alsb_client_9.2.jar

      /bpel10gtransport.jar

      /ejbtransport.jar

      /emailtransport.jar

      /file_transport.jar

      /flow_transport.jar

      /ftp_transport.jar

      /jcatransport.jar

      /jejb_transport.jar

      /mqconnection.jar

      /mq_transport.jar

      /osb_client_oc4jinterop.jar

      /sbtransport_ejb.jar

      /sb_transport.jar

      /sftp_transport.jar

      /soa_transport.jar

      /tuxedo_transport.jar

    /alsb.jar

    /sb-kernel-api.jar

    /sb-kernel-common.jar

    /sb-kernel-impl.jar

    /sb-kernel-resources.jar

    /sb-kernel-wls.jar

    /sb-transports-main.jar

    /ws-core.jar

  /modules

    /com.bea.alsb.client_1.3.0.0.jar

    /com.bea.alsb.expression_1.1.0.0.jar

    /com.bea.alsb.statistics_1.3.0.0.jar

    /com.bea.common.configfwk_1.6.0.0.jar

    /com.bea.core.apache.commons.logging_1.1.0.jar

    /com.bea.core.xml.xmlbeans_2.2.0.0_2-5-1.jar

    /com.bea.core.xquery.beaxmlbeans-interop_1.6.0.0.jar

    /com.bea.core.xquery.xmlbeans-interop_1.6.0.0.jar

    /com.bea.core.xquery_1.6.0.0.jar

  /soa

    /oracle.soa.adapter_11.1.1

      /adapter_xbeans.jar

      /jca-binding-api.jar

    /oracle.soa.fabric_11.1.1

      /bpm-infra.jar

      /oracle-soa-client-api.jar

    /maverick-all.jar

В данном каталоге хранятся библиотеки специфичные для OSB. Подкаталоги /eclipse и /harvester копируются целиком.

Каталог soa_11.1 содержит следующие файлы и каталоги:

/soa_11.1

  /soa

    /modules

      /oracle.soa.fabric_11.1.1

        /fabric-runtime.jar

        /soa-infra-tools.jar

      /oracle.soa.workflow_11.1.1

        /bpm-services.jar

  /uddi

    /lib

 

В данном каталоге хранятся библиотеки специфичные для SOA Suite.

Каталог utils содержит следующие файлы и каталоги:

/utils

  /config

    /10.3

      /config-launch.jar

      /setHomeDirs.cmd

      /setHomeDirs.sh

      /upgrade-launch.jar

  /utils.jar

Содержимое данного каталога нужно для работы WLST.

Каталог wlserver_10.3 содержит следующие файлы и каталоги:

/wlserver_10.3

  /server

    /lib

      /weblogic.jar

      /webservices.jar

      /wlclient.jar

      /wljmxclient.jar

  /.product.properties

Данный каталог содержит общие компоненты сервера приложений WebLogic, которые используются при сборке и развертывании интеграционного решения.

Стоит заметить, что описанный каталог middleware занимает всего 500 Мб. Его можно распространить между разработчиками, например скопировав на общий ресурс или даже закоммитив в систему контроля версий, хотя я и против такого варианта. На основе данного каталога можно попытаться сделать maven-ресурс.

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

4 комментария:

marx комментирует...

У оракловых продуктов это фирменная болячка - отсутствие возможности собрать билд в одну команду без IDE. Причем если OSB и SOA Suite еще "молодые" продукты и им такой геморрой можно простить, то периодическая необходимость использовать кривые тулзы типа jwsc и appc для простых java ee приложений под weblogic вызывает грусть и тоску в 2012 году.

Хотя у других (например ibm) наверное так же.

Интересно было бы узнать: как вычисляли нужные jar-ки? Брали "основную", смотрели что требуется в manifest и рекурсивно повторяли с периодическим запуском скрипта сборки? Или новые хитрости появились?

Pavel Samolisov комментирует...

Здравствуйте. По поводу IBM прокомментировать не могу. Могу рассказать как вычислял библиотеки - методом тыка. Запускал сборку, смотрел на чем валится и искал в каком архиве расположен нужный класс. Причем, если соответствующий архив найден, например, в modules, то это не значит, что другой части приложения не понадобится такой же в oracle_common. Сложность заключается в том, что отсутствие некоторых архивов вызывает не ClassNotFound, а другие ошибки. Тогда приходилось применять свое понимание работы SOA Suite и OSB.

marx комментирует...

Спасибо за ответ. Точно так же поступал, когда делал сборки разных приложений под weblogic.

В конце концов отказался от этого из-за хрупкости такой системы сборки (в одних случаях писались небольшие инструменты, в других просто требуем "установленный" weblogic).

Pavel Samolisov комментирует...

Если бы речь шла об одном WebLogic'е - я бы тоже так делал. Но тут набор ПО очень большой + мы хотим сделать CI с несколькими серверами сборки под различные среды (часть сред у нас, часть у заказчика). В случае добавления новых возможностей буду просто добавлять новые библиотеки.

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

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