Monday, January 8, 2018

Absolute Minimal Set of Libraries to Build and Deploy Your Oracle Fusion Middleware 11g Application

DevOps and Continuous Delivery/Integration is going through the planet and new as well as experienced Oracle Fusion Middleware customers wish to establish this process for their environments. For the integration area, particularly two below tasks have to be solved for getting the process done:
  • build Oracle Service Bus projects and Oracle SOA Suite composite applications
  • deploy projects and applications to Oracle WebLogic Server
There are many and many materials on the Internet describing how to solve these tasks, here I wish to shine lite on the question how to minimize the number of used libraries for build and deploy automatization. The described bellow approach was used during development the solution I told you about in the 5.000.000 Messages per Day Handled by Oracle Service Bus 11g post.
Note! The article describes what was in the before-11.1.1.7 era: with 11.1.1.7 the tools/configjar was presented; artifactes for 12c could be fount in Oracle Maven Repository.

Problem statement


First, let's take a look at the list of software required to install on a CI/CD server. Note! This software is required not to successful run Oracle Service Bus or Oracle SOA Suite: test environments can be provisioned to other machines. This software is required to build and deploy only.

Required software:
  • Oracle WebLogic Server
  • Oracle Service Bus
  • Oracle SOA Suite
  • Oracle JDeveloper
  • Eclipse Indigo
  • Oracle Enterprise Pack for Eclipse (OEPE)

A directory containing the above software takes about 2GB on a disk. It seems very large to build and deploy, doesn't it?

Shrink the size of required libraries


Obvious, the major part of the installed components isn't required for CI/CD processes. To save the space on a CI/CD server, e.g. if we wish to deploy a server inside a Docker container, let's place there only components build and deploy won't work without. I've started from the middleware directory, this is the root of the Fusion Middleware filesystem:
/middleware
  /eclipse  
  /jdeveloper
  /modules
  /oracle_common
  /osb_11.1
  /soa_11.1
  /utils
  /wlserver_10.3
Let's dive into the eclipse directory. In order to export Oracle Service Bus project, a well-insalled and working Eclipse Indigo armed with Oracle Enterprise Plugins for Eclipse (OEPE) and OSB. Eclipse can be downloaded from the official project website, the Eclipse IDE for Java EE developers package should be downloaded. OEPE can be installed using the following update site, only WebLogic Server, WebLogic Scripting and Coherence are required. To enable the OSB plugins, the oracle.osb.ide.link file has to be placed into the dropins subdirectory of the eclipse directory. The file content is shown bellow:
path=../osb_11.1/eclipse140
As a result, we should see the following directories:
/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
The jdeveloper directory contains the following files and subdirectories:
/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
The directory contains build scripts for Apache Ant, which allow building and deploying SCA-composites as well as manage the Oracle SOA Suite installation. The modules directory contains the following files and subdirectories:
/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
The oracle_common directory contains the following files and subdirectories:
/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
The above directories: modules and oracle_common contains a set of common libraries for overall Oracle Fusion Middleware. The listed libraries are enough to export OSB-projects using Eclipse, build SCA-composites using Apache Ant and deploy them on a server using WLST.

We are coming to the end. The osb_11.1 directory:
/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
All OSB-related libraties are placed here. The /eclipse and /harvester subdirectories should be copied as is. The soa_11.1 directory:
/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
All SOA Suite related libraries are placed here.

The utils directory:
/utils
  /config
    /10.3
      /config-launch.jar
      /setHomeDirs.cmd
      /setHomeDirs.sh
      /upgrade-launch.jar
  /utils.jar
This directory and its content are required for WLST. And the wlserver_10.3 directory:
/wlserver_10.3
  /server
    /lib
      /weblogic.jar
      /webservices.jar
      /wlclient.jar
      /wljmxclient.jar
  /.product.properties
The common components of WebLogic Server required to build and deploy an integration solution are placed here. As a conclusion, I should note the entire middleware directory takes about 500 Mb. The directory can be added to an internal Maven repo or shared among the development team as a docker image. You can even push the directory to an SCM repository but I think it's not a good idea.

Would you like to give a 'Like'? Please follow me on Twitter!