24 Oracle Service Bus

This chapter describes issues associated with Oracle Service Bus. It includes the following topics:

24.1 What's New in Oracle Service Bus 11.1.1.3.0

This section describes new features and enhancements in Oracle Service Bus 11g Release 1 Patch Set 2 (11.1.1.3.0).

24.1.1 Installation and Deployment

Oracle Service Bus installation is now similar to other Oracle SOA products. The installer is the Oracle Unified Installer, and Oracle Service Bus installation occurs separately, after you install Oracle WebLogic Server 10.3.3 with a different installer.

After installation in a production environment, you create database schemas using the Repository Creation Utility (RCU).

In this release you can install Oracle Service Bus and Oracle SOA Suite in the same Middleware Home (MW_HOME), and Oracle Service Bus and Oracle SOA Suite can coexist in the same domain.

For more information, see the Oracle Fusion Middleware Installation Guide for Oracle Service Bus.

24.1.2 Service Result Cache with Coherence

Oracle Service Bus now supports service result caching for business services with Coherence. Oracle Coherence is an in-memory data grid solution that lets organizations predictably scale mission-critical applications by providing fast access to frequently used data.

Service result caching allows caching the response from a business service. This can dramatically improve performance if the response from the business service is relatively static. Oracle Service Bus uses a single cache for all business services. Only valid/correct results from business services are cached.

For more information, see "Improving Performance by Caching Business Service Results" in the Oracle Fusion Middleware Administrator's Guide for Oracle Service Bus.

For information on configuring this new feature, see "Message Handling Configuration Page" for business services.

24.1.3 Message Flow Transaction

With Oracle Service Bus, you can configure a proxy service to start and execute its message flow in the context of a JTA global transaction for non-transactional inbound transports (such as HTTP and JMS with a non-XA connection factory). In prior releases, the proxy service message flow executed in the context of a JTA global transaction only when the inbound transport started/propagated a global transaction (such as JMS/XA or SB with the transaction propagated).

With Oracle Service Bus, it is possible to execute both the request and the response pipelines in the context of the same JTA global transaction for non-synchronous inbound endpoints as well.

For information on configuring this feature, see "Message Handling Page" for proxy services in the Oracle Fusion Middleware Administrator's Guide for Oracle Service Bus.

24.1.4 Native Java EJB Transport

The JEJB (inbound) transport allows exposing a proxy service as a stateless session bean (SLSB), along with receiving POJO method arguments directly in the message flow. The POJO arguments can be manipulated using Java Callouts. POJO arguments can be directly sent as arguments to SLSBs invoked by the JEJB outbound transport.

For more information, see "JEJB Transport" in the Oracle Fusion Middleware Developer's Guide for Oracle Service Bus.

24.1.5 JMS Object Message

In Oracle Service Bus, the JMS transport is enhanced to receive and send Java Objects to and from JMS queues/topics. The support is enabled by configuring a proxy or business service to have the Service Type Messaging:Java.

24.1.6 Custom XPath Functions

Oracle Service Bus provides a framework to wrap utility Java code into custom XPath functions, which can be reused across inline XQuery expressions and XQuery Mapper transformations used in message flows and Split-Joins. The custom XPath functions are available in the design tooling (Console and IDE). For more information, see "Creating and Using Custom XPath Functions" in the Oracle Fusion Middleware Developer's Guide for Oracle Service Bus.

24.1.7 JCA Adapters

Oracle Service Bus provides support for Oracle SOA Suite 11g Release1 Patch Set 2 (11.1.1.3.0) JCA adapter artifacts. New Oracle Service Bus resource types for JCA Bindings and TopLink/EclipseLink mapping XML files are now available, as is support for normalized message properties in the transport headers. Upgrade for Oracle Service Bus 10g Release 3 JCA artifacts is seamless.

Certification for File and BAM adapters has also been added. Automatic upgrade of Oracle Service Bus 10g Release 3 services using JCA adapter artifacts based on Oracle SOA Suite/JDeveloper 10g Release 3 is provided.

For more information, see "JCA Transport" in the Oracle Fusion Middleware Developer's Guide for Oracle Service Bus and "JCA Bindings" in the Oracle Fusion Middleware Administrator's Guide for Oracle Service Bus.

24.1.8 SOA-Direct Transport

Oracle Service Bus provides the SOA-DIRECT transport for use with Oracle SOA Suite 11g and later. The SOA-DIRECT transport provides transaction and security context propagation from Oracle Service Bus to Oracle SOA Suite.

The SOA-DIRECT transport provides native connectivity between Oracle Service Bus and Oracle SOA Suite service components. Oracle SOA Suite provides a "direct binding" framework that lets you expose Oracle SOA Suite service components in a composite application, and the Oracle Service Bus SOA-DIRECT transport interacts with those exposed services through the SOA direct binding framework, letting those service components interact in the service bus layer and leverage the capabilities and features of Oracle Service Bus.

SOA Suite can invoke Oracle Service Bus proxy services with an SB transport binding, including the transaction and security context using the direct binding reference.

For more information, see "Oracle SOA Suite Transport (SOA-DIRECT)" in the Oracle Fusion Middleware Developer's Guide for Oracle Service Bus. The BPEL Process Manager transport (bpel-10g in the user interface) is for messaging with only Oracle SOA Suite 10g Release 3 only and is still available in Oracle Service Bus.

24.1.9 End to End Life Cycle Governance

Oracle Service Bus lets you browse and consume SOAP/XML over HTTP services, along with retaining Oracle Service Registry information for the service, directly from Oracle Enterprise Repository. The Oracle Service Registry information is used to synchronize business services in Oracle Service Bus with Oracle Service Registry. Oracle Service Bus also lets you harvest Oracle Service Bus proxy services to Oracle Enterprise Repository and specify the service key for the service. The service key is used by Oracle Enterprise Repository when publishing the service to different Oracle Service Registries, helping preserve service keys across life cycle stages and providing the capability to uniquely identify services across different life cycle stages.

24.1.10 OWSM Policy

Oracle Service Bus supports using rich set of Oracle Web Services Manager security policies on SOAP-based proxy/business services in addition to legacy BEA WLS 9.2 proprietary security policies. Oracle Web Services Manager authorization policies are not currently supported. For more information, see "Securing Oracle Service Bus with Oracle Web Services Manager" in the Oracle Fusion Middleware Developer's Guide for Oracle Service Bus.

24.1.11 Other Enhancements

Other product enhancements include:

24.1.11.1 EJB 3.0

In Oracle Service Bus, the newly introduced JEJB transport and the existing (XML) EJB Transport support invoking version 3.0 EJBs. In addition, the JEJB transport supports exposing a proxy service as an EJB 3.0 stateless session bean.

24.1.11.2 WSIL 1.1 Support

Oracle Service Bus lets you discover WSDL-based proxy services using Web Services Inspection Language (WSIL) 1.1. This enables a WSIL browser, like the one provided in Oracle JDeveloper, to discover Oracle Service Bus proxy services and download the artifacts in a standards-compliant manner.

24.1.11.3 Enhanced Scalability of Alert Logging

Oracle Service Bus provides better scalability of alerts by logging alerts in a distributed manner. Alert Logging can now be turned on and off on an Alert Destination. Alert Logging console pages are enhanced to scale well to large numbers of alerts.

24.1.11.4 Split-Join Enhancements

Split-Join enhancements include:

  • Transaction Support – Split-Joins can execute within the context of a JTA global transaction.

  • Wait – Split-Join supports a Wait action to halt execution of a branch for a specified duration.

24.1.11.5 UDDI Enhancements

Oracle Service Bus lets you rename business services created by import from UDDI. Enhanced support has also been added to import and establish automatic subscription to UDDI services containing multiple binding templates.

24.1.11.6 Other Transport Enhancements

Other transport enhancements include:

  • MQ Dynamic and Alias Queues – Oracle Service Bus provides support for response correlation in MQ request/response business services based on MQ Dynamic (response) Queues, which are created dynamically based on a Model Queue. Support has also been added for receiving messages in the inbound MQ transport from MQ Alias Queues.

  • JMS Failover for Request/Response Pairs – For both CorrelationID and MessageID patterns, Oracle Service Bus provides enhanced high availability by letting you specify a response URI (and service account) for each request URI in request/response JMS business services.

  • Email Load Balancing – Oracle Service Bus lets you specify multiple endpoint URLs (mailto addresses) for load balancing.

24.2 General Issues and Workarounds

This section describes general issue and workarounds. It includes the following topic:

24.2.1 Installer Interface Fails to Open on 64-Bit Windows

Included per bug 9449493.

When installing the 64-bit version of Oracle Service Bus on 64-bit Windows, the installer user interface fails to appear after you reference a 32-bit JDK/JRE.

To work around this issue, run the Oracle Service Bus installer using the following command:

setup.exe -jreLoc <path_to_JDK/JRE>

For example:

setup.exe -jreLoc C:\oracle11g\jrockit_160_17_R28.0.0-679

24.2.2 Installer Fails to Open Using the Sun JDK 1.6.0_03

When installing Oracle Service Bus, the installer user interface does not appear when you reference Sun JVM 1.6.0_03 at the beginning of the installation process. Sun JVM 1.6.0_03 is missing the required JAXP 2.1 API JARs.

To work around this issue, use Sun "jdk 160_18" instead.

24.2.3 Error Starting the IDE After Installation

After installation, when trying to start the IDE (Oracle Enterprise Pack for Eclipse), the IDE fails to launch with a "Plug-in 'plug-in_name' was unable to instantiate class" error.

To address this issue, you must install Oracle WebLogic Server with the default directory name (wlserver_10.3) in the default location under the Oracle Fusion Middleware home directory.

24.2.4 Email Business Service Throws an Exception when the Message Body is Empty

An Email business service with Service Type='Any XML' throws an IOException when it receives a message from a proxy service containing an empty body, such as <soap-env:Body></soap-env:Body>. A patch for this issue will be provided in the future. Please contact Oracle Support.

24.2.5 Copying a Project to Another Configuration Project Does Not Work as Expected

In Eclipse Project Explorer view, when you use copy an Oracle Service Bus project and paste it to another Oracle Service Bus configuration project, the pasted project appears at the top of the Project Explorer view as a stand-alone node.

To move the copied project to the desired Oracle Service Bus configuration project, drag the copied project to the desired configuration project.

24.2.6 Extended Alert History Chart Shows Alert Numbers in Server Locale Format

When viewing the Extended Alert History bar chart for SLA or Pipeline alerts in the Oracle Service Bus Console, the number of alerts shown above each bar is in the format of the server locale, not the browser locale. This issue is a jFreeChart limitation.

24.2.7 Summary of Split-Joins Page Shows Extra Space in Internet Explorer 8

When viewing the Summary of Split-Joins page in the Oracle Service Bus Console in Internet Explorer 8, extra empty space appears to the right of the page.

To fix this issue, use the Internet Explorer 8 Compatibility View settings. Click the Compatibility View icon in the Internet Explorer 8 toolbar to open the Compatibility View Settings window. Add the current URL to the list of URLs to be viewed in Compatibility View, or select one of the Display options at the bottom of the window, such as "Display all websites in Compatibility View."

24.2.8 UDDI Import in IDE Fails When Dependency Resource Has No File Extension

In Eclipse, when importing a service from a UDDI repository that has a dependent resource (such as a schema for a WSDL-based service), and the dependent resource does not have a file extension (such as .xsd), the import fails.

To work around this issue, manually add the extension to the dependent resource and modify the parent resource (such as the WSDL) to ensure the dependent resource name contains the extension.

24.2.9 Domain Command Window Closes on Error

When starting an Oracle WebLogic Server domain with the startWebLogic.cmd/.sh script, the command window abruptly closes when an error is encountered, not allowing you to view the cause of the error.

The recommended fix for this issue is to edit the domain's setDomainEnv.cmd/.sh script so that doExitFlag=false.

Alternatively, you can use a noExit parameter when running the startWebLogic script. For example: startWebLogic.cmd noExit.

24.2.10 Oracle Service Bus Console Online Help Search Shows Only English Results

When performing a search in the Oracle Service Bus Console online help, only English language results are returned, even if you are viewing non-English help content.

This issue will be addressed in future releases of Oracle Service Bus.

24.3 Configuration Issues and Workarounds

This section describes configuration issues and their workarounds. It includes the following topics:

24.3.1 Logical Delete Using Inbound Database Adapter Shows Twice the Alerts

When using an Oracle Service Bus JCA proxy service with the Oracle JCA Adapter for Database, logical delete pipeline alerts appear twice.

To prevent this behavior from happening, use the following guidelines for logical delete operations:

  • Do not perform inbound logical delete operations on the primary key column.

  • Performing logical delete for inbound operations that use the MarkReservedValue column show additional alerts if the reserved value also appears in rows. You should use the reserved value only for distributed polling.

24.3.2 JNDI Provider Does Not Accept IPv6 IP Addresses for Cluster URLs

When entering a cluster endpoint URI for an Oracle Service Bus service using an IPv6 hexadecimal format, you receive a validation error. For example:

t3://[0db8::ffff:ffff:ffff:ffff%4]:7001,[0db8::ffff:ffff:ffff:ffff%4]:7002

or

t3://[0db8::ffff:ffff:ffff:ffff]:7001,[0db8::ffff:ffff:ffff:ffff]:7002

To work around this issue, use an IPv6 machine hostname instead of the hexadecimal format.

24.3.3 Server Startup and URL Access Failures when Listen Port is IPv6

When using an IPv6 format for a server's listen port or for URL access, omitting %4 from the end of the address (to specify IPv4 compatibility) results in server startup failure or URL access failure in certain situations.

To prevent this issue, use the following patterns:

  • Windows

    • <listen-address>0db8::ffff:ffff:ffff:ffff%4</listen-address>

    • http://[0db8::ffff:ffff:ffff:ffff%4]:7001/sbconsole

  • Linux

    • <listen-address>0db8::ffff:ffff:ffff:ffff</listen-address>

    • http://[0db8::ffff:ffff:ffff:ffff%4]:7001/sbconsole

The Linux listen-address is the only scenario that does not require %4 at the end.

24.3.4 Extending an Oracle Service Bus Domain in a Cluster Using WLST Results in Configuration Errors

Using the Oracle Fusion Middleware WebLogic Scripting Tool (WLST) to extend an existing domain where Oracle Service Bus is deployed to a cluster results in improper domain configuration.

To avoid this issue, use the Oracle Fusion Middleware Configuration Wizard to extend a domain where Oracle Service Bus is deployed to a cluster.

You can, however, use WLST to create a new Oracle Service Bus domain that is deployed to a cluster. But you should not extend that domain using WLST.

24.3.5 JDBC Limitation when Using Oracle Service Bus 11g with Oracle Database Express Edition 10g

When using Oracle Service Bus 11g with Oracle Database Express Edition 10g, errors occur when you use the ojdbc5.jar or ojdbc6.jar resources. Use the ojdbc14.jar resource.

24.3.6 Message Length Limitation when Using a Report Action with SQL Server

Included per bug 9556359.

When using a SQL Server database with the Oracle Service Bus reporting provider, you will be unable to store data from a report action when the message associated with the report action is longer than 445 characters. The reporting provider hits a problem when exceeding the maximum length of an index on the table. If you encounter this issue, please contact Oracle Support.

24.3.7 Oracle BAM Adapter Uses Different Logging Mechanism than Other JCA Adapters

The Oracle BAM Adapter (Business Activity Monitoring) does not use the JCA framework logging interface that the other JCA adapters use. Oracle BAM Adapter log messages go to server.diagnostics.log file instead of server.log file. Changing alsb-transports-debug or alsb-jca-framework-adapter-debug flags in alsbdebug.xml may have no effect on Oracle BAM Adapter logging.

24.3.8 No Database Adapter Debug Logging on Business Service Invocation

The Oracle JCA Adapter for Database does not generate debug logs when a corresponding JCA business service is invoked in Oracle Service Bus. Oracle will provide a patch for this issue.

24.3.9 Unable to Find Namespace for Prefix 'tns' Error on WSDL Services

You receive an "Unable to find namespace for prefix 'tns'" error for a WSDL-based service when activating a session, generating an effective WSDL, or performing a similar activation task.

The error likely occurs because the WSDL contains a partnerLink paragraph that contains a namespace that was not automatically renamed to match the run-time representation of the WSDL.

Use one of the following options to work around this issue:

  • Comment out the partnerLink paragraph in the WSDL.

or

  • If you want to retain the partnerLink information, add an empty <wsdl:types xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/> element after the </plnk:partnerLinkType> closing element.

24.4 Documentation Errata

This section describes documentation errata. It includes the following topics:

24.4.1 Importing/Exporting Using Scripts

When importing or exporting Oracle Service Bus configurations using WLST, Ant, or the command line:

  • Be sure to include the following in your classpath:

    • OSB_ORACLE_HOME/lib/sb-kernel-api.jar

    • OSB_ORACLE_HOME/lib/sb-kernel-impl.jar

    • OSB_ORACLE_HOME/modules/com.bea.common.configfwk_version

  • Be sure the resource JAR names in your scripts contain the correct version numbers.

24.4.2 Business Service Endpoint Property for Database Adapter

Oracle Service Bus implicitly sets the value of the cacheConnections endpoint property to "true" for business services that connect to the Oracle JCA Adapter for Database. With this property value set to true, outbound connections to the database adapter are cached. If you change the default and set this property to false, a connection open and close occurs for every outbound invocation.

24.4.3 Incorrect Escape Character Format in Format Builder Help

The Format Builder help shows an incorrect escape character when creating a delimiter match rule, which prevents you from saving the MFL. Instead of a single backslash for an escape character ("\"), the escape character should be two backslash characters ("\\"). The accompanying graphic also shows the escape character incorrectly. The documentation should read:

"Specify an escape character that precedes the delimiter character occurring as part of the field data. The escape character value can be obtained via a reference field and by specifying the value in the Esc Char field. For example, if the Esc Char is \\, then the data appears as A\\;B;."

The graphic should also show two backslash characters.

24.4.4 Command Line and Script Updates for Export

Options have changed for exporting an Oracle Service Bus configuration from the command line or with a script. Use the following information instead of what appears in "Using the Command Line or a Script to Export an Oracle Service Bus Configuration" in the Oracle Fusion Middleware Developer's Guide for Oracle Service Bus at http://www.oracle.com/pls/as111130/lookup?id=OSBDV123.

24.4.4.1 Before You Begin

Refer to the following prerequisites and guidance before you begin.

  • Be sure OSB_ORACLE_HOME/lib/sb-kernel-api.jar is in your classpath.

  • Be sure the resource JAR names in your scripts contain the correct version numbers.

  • Java 1.6 is required.

  • Oracle Service Bus 10gR3 MP1 or later and Eclipse must be installed.

  • You may see exception stack traces in the output or the workspace log file if workspace files are read-only.

  • An exit value of 0 means the export succeeded.

24.4.4.2 Exporting a Configuration Using the Command Line

Oracle Service Bus provides a ConfigExport class that you can configure and launch using the following command line arguments. Command line export is for more advanced users who need more flexibility.

Exporting from the command line generates an Oracle Service Bus configuration JAR from the Eclipse workspace.

java -Xms384m -Xmx768m
-Dosgi.bundlefile.limit=500
-Dosgi.nl=en_US
-Dosb.home=OSB_ORACLE_HOME
-Dweblogic.home=WEBLOGIC_HOME
-Dharvester.home=${osb.home}/HARVESTER_HOME
-Dsun.lang.ClassLoader.allowArraySyntax=true
-jar ECLIPSE_HOME/eclipse/plugins/org.eclipse.equinox.launcher_launcher_version.jar
-data WORKSPACE_DIR 
-application com.bea.alsb.core.ConfigExport
-configProject PROJECT_NAME 
-configJar config_filename.jar
-configSubProjects projects_to_export
-includeDependencies true/false

where

  • OSB_ORACLE_HOME is the top-level Oracle Service Bus directory in the Oracle Fusion Middleware home.

  • WEBLOGIC_HOME is the location of the installed Oracle WebLogic Server.

  • HARVESTER_HOME is the location of Harvester, an Oracle Enterprise Repository tool that lets you harvest enterprise artifacts into Oracle Enterprise Repository from multiple sources, including Oracle Service Bus. An Oracle Service Bus installation includes Harvester.

  • ECLIPSE_HOME is the location of the installed Eclipse that is linked to the Oracle Service Bus IDE plug-ins.

  • launcher_version is the version of the Eclipse launcher JAR.

  • WORKSPACE_DIR is the location that contains Oracle Service Bus artifacts to be exported. For example, c:/oracle/user_projects/workspaces/default. If this location contains an Eclipse workspace, the workspace is used and the configuration jar is exported from the workspace projects. If this location does not contain a workspace, but instead contains only Eclipse Oracle Service Bus projects, the utility imports the projects into a temporary workspace for the configuration JAR export.

  • PROJECT_NAME is the name of the Oracle Service Bus Configuration project to be exported. For example, "OSB Configuration." If you do not specify this argument, the first Oracle Service Bus Configuration Project found in the workspace is exported.

  • config_filename.jar is the name and location of the Oracle Service Bus Configuration JAR to be exported. For example, c:/sbconfig.jar.

  • configSubProjects projects_to_export is one or more specific projects within a configuration to export. If you do not specify configSubProjects, all projects in the configuration are exported.

  • includeDependencies true/false determines whether configuration-level dependencies such as JNDI Providers and Proxy Servers are included in the export.

Following is an example of exporting an Oracle Service Bus Configuration from the command line.

Note:

Following is a sample command line operation. If you use this sample, be sure to check paths and file names against your current installation for accuracy.
java -Xms384m -Xmx768m
-Dosgi.bundlefile.limit=500
-Dosgi.nl=en_US
-Dosb.home=D:/oracle/Oracle_OSB1
-Dweblogic.home=D:/oracle/wlserver_10.3
-Dharvester.home=${osb.home}/harvester
-Dsun.lang.ClassLoader.allowArraySyntax=true
-jar D:/oracle/oepe_11gR1PS1/eclipse/plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
-data D:/oracle/user_projects/myWorkspace
-application com.bea.alsb.core.ConfigExport
-configProject config
-configJar sbconfig.jar
-configSubProjects OSB Project 1,OSB Project 2
-includeDependencies true

24.4.4.3 Exporting a Configuration Using Ant

You can export an Oracle Service Bus configuration using an Apache Ant buildfile. Exporting with Ant generates an Oracle Service Bus configuration JAR from the Eclipse workspace.

Following is a sample Ant buildfile with an accompanying properties file.

Note:

Following is a sample script. If you use this sample script, be sure to check paths and file names against your current installation for accuracy.

Ant Buildfile Example

<project name="ConfigExport">
    <property file="./build.properties"/>
    <property name="eclipse.home" value="${oracle.home}/oepe_11gR1PS2"/>
    <property name="weblogic.home" value= "${oracle.home}/wlserver_10.3"/>
    <property name="metadata.dir" value="${workspace.dir}/.metadata"/>
    <target name="export">
        <available file="${metadata.dir}" type="dir"
         property="metadata.dir.exists"/>
        <java dir="${eclipse.home}"
jar="${eclipse.home}/plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar"
          fork="true"
          failonerror="true"
          maxmemory="768m">
           <arg line="-data ${workspace.dir}"/>
           <arg line="-application com.bea.alsb.core.ConfigExport"/>
           <arg line="-configProject ${config.project}"/>
           <arg line="-configJar ${config.jar}"/>
           <arg line="-configSubProjects ${config.subprojects}"/>
           <arg line="-includeDependencies ${config.includeDependencies}"/>
           <sysproperty key="weblogic.home" value="${weblogic.home}"/>
           <sysproperty key="osb.home" value="${osb.home}"/>
           <sysproperty key="osgi.bundlefile.limit" value="500"/>
           <sysproperty key="harvester.home" value="${osb.home}/harvester"/>
           <sysproperty key="osgi.nl" value="en_US"/>
           <sysproperty key="sun.lang.ClassLoader.allowArraySyntax" value="true"/>
        </java>
<antcall target="deleteMetadata"/>
    </target>
<target name="deleteMetadata" unless="metadata.dir.exists">
         <delete failonerror="false" includeemptydirs="true"
          dir="${metadata.dir}"/>
</target>
</project>

build.properties Example

oracle.home=c:/oracle
workspace.dir=c:/oracle/user_projects/workspaces/default
config.project="OSB Configuration"
config.jar=c:/sbconfig.jar
config.subprojects="OSB Project 1,OSB Project 2"
config.includeDependencies=true

Running "ant export" (after you run the setDomainEnv script) results in exporting the project "OSB Configuration" from the default workspace to c:\sbconfig.jar.