22 Oracle Technology Adapters

This chapter describes issues associated with Oracle Technology Adapters and the Oracle Fusion Middleware User's Guide for Technology Adapters. It includes the following topics:

22.1 General Issues and Workarounds

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

22.1.1 Oracle JCA Adapters Issues and Workarounds

This section describes issues and workarounds that are applicable to all adapters: Oracle AQ Adapter, Oracle JMS Adapter, Oracle Files/FTP Adapter, Oracle MQ Series Adapter, Oracle Database Adapter, and Oracle Socket Adapter.

This section includes the following issue:

22.1.1.1 ECID Propagation Is Not Supported by Oracle Technology Adapters

ECID (Execution Context Identifier) propagation is not supported by Oracle Technology adapters. The ECID is used to keep track of message flow in Oracle Enterprise Manager, and hence this feature is not available in Oracle Technology adapters.

22.1.1.2 Outbound Adapter Does Not Perform an Outbound Retry If the Outbound Adapter Throws an Exception with GLOBAL_RETRY

If an outbound adapter throws an exception with GLOBAL_RETRY, then the retry configured at the outbound adapter level will not take effect. The retry falls back to the caller which could be a BPEL process. It is observed that the retry happens from the inbound to the BPEL process (caller of BPEL process) in either of the following transaction semantics in Oracle BPEL process:

Scenario 1:

<property name="bpel.config.transaction">requiresNew</property>
<property name="bpel.config.oneWayDeliveryPolicy">sync</property>

Scenario 2:

<property  name="bpel.config.transaction">required</property>
<property name="bpel.config.oneWayDeliveryPolicy">sync</property>

If the adapter throws a LOCAL_RETRY, then the retry configured at the outbound adapter level will take effect.

Note that for the inbound retry to work, Oracle BPEL process must not have any dehydration points.

22.1.1.3 JCA Binding Component Error Messages During Forceful Shutdown

During forceful shutdown of Oracle WebLogic Server, if the severs are processing data, then you may see JCA Binding Component error messages. These messages are benign.

22.1.1.4 Manual Edits to WSDL Lost When Re-running the Adapter Configuration Wizard

Every time you use the Adapter Configuration Wizard to edit an adapter, the wizard uses the data you enter to recreate the adapter WSDL. If you made manual edits to the WSDL before, the Adapter Configuration Wizard will discard those changes the next time you edit the adapter.

The workaround for this issue is to make the same manual edits each time you use the Adapter Configuration Wizard.

22.1.2 Oracle JCA Adapter for Files/FTP Issues and Workarounds

This section describes the following issues and workarounds related to Oracle File and FTP Adapters:

It includes the following sections:

22.1.2.1 Files Lost During an SOA Server Failover

The Oracle File Adapter picks up a file from an inbound directory, processes the file, and sends the processed file to an output directory. However, during this process if a failover occurs in an SOA managed server, then the file may be lost because of the nontransactional nature of Oracle File Adapter. As a result, some files read by the inbound adapter may not be sent to the output directory. You must configure the Oracle File Adapter for high availability, to ensure that files are not lost during a failover.

22.1.2.2 DOM Parsing Exception at Run Time

When Oracle File and FTP Adapters read a Unicode XML file with byte order mark (BOM), a DOM parsing exception is thrown at runtime. If the Unicode XML file does not use BOM, then an exception is not thrown.

22.1.2.3 Rejection Handling Not Working Properly for XML-Debatching Scenarios

In case of debatching scenarios with XML payloads that have errors such as extra tags and spurious data, output files are created along with the rejected messages.

22.1.2.4 JCA Property Updates from Enterprise Manager Console Are Not Applied If a Logical Directory Is Used

If Oracle File and FTP Adapters use logical directories for inbound or outbound operations, then JCA property updates from Oracle Enterprise Manager Console are not applied.

22.1.2.5 Prerequisite for Oracle FTP Adapter Debatching Scenarios on FTPS

You must use a synchronous process in case of Oracle FTP Adapter debatching scenarios on FTP over SSL (FTPS) for large payloads. If a synchronous process is not used, then the FTP server throws the error code, 421.

22.1.2.6 Chunked Read Feature Not Supported for Secure FTP

The Chunked Read feature of Oracle FTP Adapter is not supported for SFTP (Secure FTP) using SSH transport.

22.1.2.7 Editable Append Property With Dynamic File Name

When a dynamic file name is specified for an output file, the Append property must not be edited. However, the Oracle Enterprise Manager Fusion Middleware Control Console allows you to edit the Append property even when you specify a dynamic file name for an output file. Ensure that you do not edit the Append property when you specify a dynamic file name for an output file.

When using a dynamic file name the value of the Append property must be false. By default, the value of the Append property is false and this must not be edited while using a dynamic file name.

22.1.2.8 Data Lost During Read Operation from an Input File with Errors

When an Oracle File Adapter processes a file with some invalid records, the invalid records are sent to the rejected messages directory, whereas, the valid records are lost. To ensure that no data is lost, input files with invalid data must be sent to the error archive queue. You must set the following properties in the WSDL file for the Read file operation to ensure that input files with errors are sent to the error archive queue:

  • PhysicalErrorArchiveDirectory="physical_directory_ path"
    
  • LogicalErrorArchiveDirectory="logical_directory_path"
    

22.1.2.9 Attachments and Payload Validation are Incompatible

If you enable payload validation when using attachments, the Oracle FTP Adapter fails with a java.lang.NullPointerException and logs an error like: "FtpIn FtpInAdapter Service FtpIn was unable to perform delivery of inbound message to the composite".

When using attachments, disable payload validation. For Attachments, payload validation is unnecessary.

22.1.3 Oracle JCA Adapter for AQ Issues and Workarounds

This section describes the following issue and workaround related to Oracle JCA Adapter for AQ:

It includes the following section:

22.1.3.1 Oracle JCA Adapter for AQ Reading Field from Object Type Depends on Server Locale Encoding

In an SOA project that contains outbound Oracle JCA Adapter for AQ, Mediator or BPEL, and an inbound Oracle JCA Adapter for AQ, when you select the business payload option as Field within the Object, the national characters are garbled. This issue depends on server locale encoding and exists only on native locale. However, when the server is running on UTF-8 encoding, this issue does not exist.

22.1.3.2 Oracle JCA Adapter for AQ Does Not Dequeue Messages from Queues in Oracle E-Business Suite Applications

It is recommended that you use Oracle Adapter for Oracle Applications to dequeue from queues in E-Business Suite Applications and not Oracle JCA Adapter for AQ.

22.1.3.3 AQ_INVALID_PAYLOAD_HEADERS_OUTBOUND Error When Payload Field is Selected

When using the Adapter Configuration Wizard to configure the object payload, you may configure the Business Payload as either:

  • Whole Object

  • Field within the Object

If you select Field within the Object, and you do not check the Access to non-payload fields also needed option, your composite may fail at run time with an AQ_INVALID_PAYLOAD_HEADERS_OUTBOUND error.

The workaround for this issue is to always select the Access to non-payload fields also needed option when you configure the Business Payload by selecting the Field within the Object option.

For more information, see "The Adapter Configuration Wizard Object Payload Page" in the Oracle Fusion Middleware User's Guide for Technology Adapters.

22.1.3.4 Enabling Payload Validation Using XSD

If you use Oracle Enterprise Manager Console to enable payload validation at the SOA-INFRA level, then for inbound Oracle JCA Adapter for AQ (including B2B adapters or Oracle Adapter for Oracle Applications that use Oracle JCA Adapter for AQ), then Oracle recommends that you use the following block in your payload XSD:

xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
nxsd:validation="true" 

22.1.4 Oracle JCA Adapter for JMS Issues and Workarounds

This section describes the following issues and workarounds related to Oracle JMS Adapter:

22.1.4.1 Example of Flow Control Settings for Oracle JMS Adapter

Anytime the exception weblogic.messaging.kernel.QuotaException: Quota blocking time exceeded and no quota available is encountered, WLS JMS provider allows flow control settings that you can tweak to control the number of messages that are produced/consumed.

For more information about tweaking the control settings, see

http://download.oracle.com/docs/cd/E13222_01/wls/docs90/ConsoleHelp/pagehelp/JMSjmsconnectionjmsconnectionfactoryconfigflowcontroltitle.html

The following is an example of the flow control settings used and the various thresholds for a message carrying a payload size of 5k:

Config JMSServer:
    Message Buffer Size:5000
    
Config JMSConnectionFactory:
    Flow Control:
    Flow Maximum: 30
    Flow Minimum: 1
    Flow Interval: 10
    Flow Step: 10
  
check Flow Control Enabled
    Default Delivery: Send Timeout: 3000000
    
Config JMS Destinations:
       Bytes Threshold High: 50000
       Bytes Threshold Low:  50
       Messages Threshold High: 100
       Messages Threshold Low: 1
       Set Quota

22.1.4.2 Oracle JMS Adapter Re-entrant Wizard Displays a Warning Message When the Destination and JNDI Names Are Invalid

While migrating a project from one environment to another, Oracle JMS Adapter Wizard populates the Destination and JNDI name fields in edit mode in the following pages:

  • Consume Operation Parameters page

  • Produce Operation Parameters page

  • Request Operation Parameters page

  • Reply Operation Parameters page

  • Request/Reply Operation Parameters page

However, if you click Next, the Adapter Configuration Wizard validates whether this is a valid destination, and accordingly, displays a warning message if found to be invalid. You have the option to proceed or enter a valid destination.

22.1.4.3 Distributed Topic in Clustered Environment Creates Extra Messages

When you use Oracle JMS adapter with a distributed topic deployed in a cluster, the scenario would result in more messages processed than the actual number of messages passed to the topic.

Each subscriber to the topic is handed a copy of the message to be processed by WLS JMS. So, the number of processed messages will be equal to the number of active subscribers on the distributed topic. This is a known behavior of Oracle WebLogic JMS in Oracle WebLogic Application Server 10.3.

22.1.4.4 Old Queue is Still Polled After Changing Queue Name

When using the Oracle JMS Adapter in an Enqueue-Dequeue Request-Reply scenario, if you change the Queue name (Inbound Queue and Reply Queue) to a new value, the old queue is still polled.

The workaround for this issue is to configure the new Queue name and redeploy the composite.

22.1.5 Oracle JCA Adapter for Database Issues and Workarounds

This section describes the following issues and workarounds related to Oracle Database Adapter:

22.1.5.1 The Value Of the Active Unit Of Work Property Is Not Saved for Outbound SELECT Operation

While configuring an outbound Oracle Database Adapter to perform a SELECT operation, if you select Get Active Unit of Work in the Adapter Configuration Wizard - Advanced Option page, then the value of the GetActiveUnitofWork property is not saved in the .jca file.

The workaround for this issue is to manually add this property in the .jca file of the Oracle Database Adapter, as shown in the following example:

<property name="GetActiveUnitOfWork" value="true"/>

22.1.5.2 The Binding Fault Retries During Remote Fault Is Not Captured in the Oracle Enterprise Manager Console

Consider a scenario in which the Oracle Database Adapter retries the transaction at remote fault (that is, when the database is down) in a condition where the binding fault retry is specified in the composite.xml file, and there is no fault policy defined. In such a scenario, the binding fault retry performed by the Oracle Database Adapter is not captured in the Audit Trail in the Oracle Enterprise Manager Console.

22.1.5.3 Invalid Datatype Exception After Re-Creating Schema Object

If you re-create an Oracle Database PL/SQL statement or other schema object (such as a data type), or recompile a package body, and re-deploy a SOA composite that uses the Oracle Database Adapter, then the Oracle Database Adapter runtime will throw an ORA-00902: invalid datatype exception.

The workaround for this issue is to set the following Oracle WebLogic Server properties:

  • Data Source:

    • Initial Capacity: 0

    • Statement Cache Size: 0

  • Adapter Connection Pool:

    • Initial Capacity: 0

If your SOA composite is incompatible with these property settings, the workaround for this issue is to stop and start the Oracle WebLogic Server.

For more information, see:

22.1.5.4 Distributed Polling Using MarkReservedValue Disabled by Default

In this release, Oracle recommends that you use the new distributed polling approach based on skip locking. When editing an Oracle Database Adapter service which has a MarkReservedValue set, that value will be removed to enable the new best practice.

To use the old distributed polling approach based on a reserved value, select the value from the drop down menu.

22.1.5.5 Stored Procedure Limitations in SQL Server 2008

The Oracle Database Adapter stored procedure interface does not support the following data types in SQL Server 2008:

  • TIME

  • DATE

  • DATETIME

  • DATETIME2

  • DATETIMEOFFSET

22.1.6 Oracle JCA Adapter for MQ Series Issues and Workarounds

This section describes the following issues and workarounds related to Oracle MQ Series Adapter:

22.1.6.1 Oracle MQ Series Adapter Does Not Support Asynchronous Request-Response Pattern for Mediator

Oracle MQ Series Adapter does not support asynchronous request-response pattern (where Mediator is the server).

22.1.6.2 Oracle MQ Series Adapter Does Not Perform an Outbound Retry If the Outbound Resource Is XA

If you select the outbound resource as XA, then the Oracle MQ Series Adapter throws an exception and does not retry because it does not support an outbound retry with outbound resource as XA. On the other hand, if the outbound resource is non-XA, then the retry happens correctly.

22.1.6.3 Oracle MQ Series Hangs If the Channel Is Brought Down in a Cluster Environment

When working with more than one managed server, if you try to bring down the channel, then Oracle MQ Series hangs. This occurs in both Windows and UNIX operating systems.

22.1.6.4 Adding Additional Encoding Not Supported

Standard Java encodings and their mappings are provided with the MQ Series Adapter but the Adapter Configuration Wizard does not support addition of additional Java encodings that you may require.

To add support for the standard Java encodings that are not provided in the list, you can perform the following steps:

  1. Extract the MQSeriesAdapter.jar file from the MQSeriesAdapter.rar file.

  2. Extract the mq.properties file from the MQSeriesAdapter.jar file.

  3. Add the entry in the mq.properties file. This file has two entries for a mapping between MQ Series encoding and Java encoding. For each new encoding that you require, you must make two entries to the mq.properties file. Make an entry for the MQ Series encoding to the corresponding Java encoding and the other entry for the Java encoding to the corresponding MQ Series encoding.

22.1.6.5 Using MQ Series version 7.0.0.2 and XA Transactions

Oracle JCA Adapter for MQ Series is certified with MQ Series version 7.0.0.2. If you are using XA transactions, then you must configure the server connection channel with a level of conversation sharing set to 0.

22.1.6.6 Old Queue is Still Polled After Changing Queue Name

When using the Oracle MQ Series Adapter in an Enqueue-Dequeue Request-Reply or Dequeue-Enqueue Request-Reply scenario, if you change the Queue name (Inbound Queue and Reply Queue) to a new value, the old queue is still polled.

The workaround for this issue is to configure the new Queue name and redeploy the composite.

22.1.6.7 Oracle MQ Series Adapter Reconnect Failure After Forceful Queue Manager Shutdown

If you forcefully shutdown the Inbound Queue Manger using the -i option (such as endmqm -i QUEUE-MANAGER), and then bring it up again, the Oracle MQ Series Adapter does not reconnect properly:

  • The Open Input count of the Inbound Queue is reduced from the default value 2 to 1 and the Inbound message is delivered to the Outbound Queue and then put back to the Inbound queue. The Oracle MQ Series Adapter repeats this infinitely.

  • In some cases, the Open Input count is reduced from the default value 2 to 1 and the messages are just delivered to the Outbound Queue.

The workarounds for this issue are:

  • Configure the SOA instances in non-blocking mode.

  • Restart the inbound partner link.

  • Stop and start the managed instance.

22.1.7 Oracle JCA Adapter for Socket Issues and Workarounds

This section describes the following issue and workaround related to Oracle Socket Adapter:

22.1.7.1 Oracle Socket Adapter Not Supported On a Cluster-Based Environment

Oracle Socket Adapter is not supported on a cluster-based environment. If you try to deploy an inbound Oracle Socket Adapter in a clustered environment, then one of the managed servers throws an error message that the server's port is already in use.

22.1.7.2 Inbound Operation Hostname Should Be an IP Address for a Multiple-NIC Host

When configuring the Oracle Socket Adapter using the Adapter Configuration Wizard, at step 4 of 7, if you select either of:

  • Inbound Synchronous Request/Reply

  • Inbound Receive

Then, at Adapter Configuration Wizard step 5 of 7, note the following:

  • If you want to override the default port for the given socket connection JNDI name, check Specify Host and Port.

  • If you check Specify Host and Port, you must enter a value for Host Name. Note the following:

    • If your host is associated with only one IP address, that is, if it has only one Network Interface Card (NIC), enter localhost.

    • If your host is associated with more than one IP address, that is, has more than one NIC, enter the one IP address you want the Oracle Socket Adapter to listen on.

      The Oracle Socket Adapter can listen on only one specific IP address. The Oracle Socket Adapter cannot listen on multiple IP addresses.

22.1.8 Native Format Builder Issues and Workarounds

This section describes the following issue and workaround related to Native Format Builder:

22.1.8.1 Delimited by White Space Option Not Supported in NXSD

In the Specify Delimiter's page of the Native Format Builder wizard, the White space (any number of tab, space) option in the Delimited by list is not supported.

22.1.8.2 Payload Validation Fails for Payloads Greater Than 10 MB in Size

When payload validation is enabled, it may fail with a java.lang.ClassCastException for payloads greater than 10 MB in size.

For more information, see "Payload Validation" in the Oracle Fusion Middleware User's Guide for Technology Adapters.

22.2 Configuration Issues and Workarounds

There are no known configuration issues at this time.

22.3 Documentation Errata

This section describes documentation errata for Oracle Fusion Middleware User's Guide for Technology Adapters. It includes the following topics:

22.3.1 The DBActivationSpec Property Undying Is Always True in 11g

Section 9.3.6.2, "Undying" in Chapter Oracle JCA Adapter for Database states that the new Undying property is supported. Instead, Undying is now always true, so the configuration property has been removed.

22.3.2 Online Help for Third Party Adapter Does Not Define JCA File Attribute

When you drag and drop Third Party Adapter from the Service Adapters list to the Exposed components swim lane in the composite.xml page and click the Help button, the online help does not define the JCA File attribute.

The definition should read: The JCA file provides adapter configuration information for the service.

The title of this help topic should read: Third Party Adapter.

The bread crumbs for this help topic should read: Component Palette for SOA Composite Editor > Adapter Services > Third Party Adapter > Adapter Configuration Wizard.

22.3.3 Online Help for JMS Adapter Does Not Define the Payload Attribute

In the Adapter Configuration Wizard for an Oracle JMS Adapter, when Message Body Type is MapMessage, the online help for the Consume Operation Parameters page does not define the Payload attribute.

The definition should read: Optionally specify the name of the MapMessage entry you want to designate as the payload. All other MapMessage entries are converted to adapter properties identified by jca.jms.Map.xxxx, where xxxx is name of the MapMessage entry. If you do not configure the Payload attribute, then the entire MapMessage is converted to XML and the XML file is transferred as the payload.

22.3.4 Online Help for JMS Adapter Does Not Define the As Attachment Attribute

In the Adapter Configuration Wizard for an Oracle JMS Adapter, when Message Body Type is MapMessage, the online help for the Consume Operation Parameters page does not define the As Attachment attribute.

The definition should read: Check this option to instruct the Oracle JMS Adapter to opaquely copy the payload as an attachment. This allows you to transfer a large amount (of often binary) data efficiently, without processing its contents within the composite application.

22.3.5 Specifying a TCP Port in a Configuration Plan For an Oracle Socket Adapter

In the Oracle Fusion Middleware User's Guide for Technology Adapters, the Oracle Socket Adapter chapter is missing a topic on how to specify a TCP port in a configuration plan for an Oracle Socket Adapter.

To do so, perform the following steps:

  1. Add the following code to your configuration plan XML file:

    <service name="Receive">
        <property name="Port">
              <replace>2222</replace>
       </property>
        <binding type="jca"/>
    </service>
    
  2. Add a port property to your .jca file as follows:

    <property name="Port" value="Port"/>
    
  3. Add the port property to your composite.xml file under the service element and specify a default value (in this example, 1111):

    <service name="Receive" ui:wsdlLocation="Receive.wsdl">
        <interface.wsdl interface="..." />
        <binding.jca config="Receive_tcp.jca"/>
        <property name="Port" type="xs:string" many="false" override="may">1111</property>
    </service>
    
  4. Deploy your composite with the configuration plan.

    When deployed, the Oracle Socket Adapter will listen on port 2222, as given in the configuration plan.

    If you deploy the composite without a configuration plan or if the configuration plan does not override the Port property, then the Oracle Socket Adapter will listen on the socket that the composite.xml file's default Port property specifies (in this example, port 1111).

22.3.6 Oracle Database Adapter Certification

The beginning of Section 9.6, "JDBC Driver and Database Connection Configuration" in the Oracle Fusion Middleware User's Guide for Technology Adapters reads as follows:

"In this release, Oracle JCA Adapters are certified against the following third-party databases using Oracle WebLogic Server Type 4 JDBC drivers:

  • Microsoft SQL Server 2008

  • Sybase 15

  • Informix 11.5"

It should read as follows:

"In this release, Oracle Database Adapter is certified against the following third-party databases using Oracle WebLogic Server Type 4 JDBC drivers:

  • Microsoft SQL Server 2005, 2008

  • Sybase 15

  • Informix 11.5

  • MySQL 5.x+

  • DB2/UDB 9.5 and later FixPaks"

22.3.7 Oracle MQ Series Adapter Properties in an Asynchronous Outbound Request/Reply Scenario

The following note applies only to Section 10.4.1.3, "Asynchronous Request-Response (Oracle BPEL PM As Client)" and Section 10.4.1.9, "Asynchronous Request-Response (Oracle Mediator As Client)"It does not apply to Sections 10.4.1.5, 10.4.2 and 10.4.3.

Note:

For Oracle MQ Series Adapter in an asynchronous outbound request/reply scenario, properties are differentiated by an (Enqueue) or (Dequeue) label in Oracle Enterprise Manager Console. For example, QueueName(Enqueue) is used for putting a message and QueueName(Dequeue) is used for dequeuing the reply.

When using Oracle Enterprise Manager Console to edit Oracle MQ Series Adapter properties in this scenario, note the following:

  • If you change the ReplyToQueueName(Enqueue) property, you must also change the QueueName(Dequeue) property to the same value.

  • If you change the MessageId(Dequeue) property, you must also change the MessageId(Enqueue) property to the same value.

  • If you change the CorrelationId(Dequeue) property, you must also change the CorrelationId(Enqueue) property to the same value.