Skip Headers
Oracle® Application Server Release Notes
10g Release 2 (10.1.2) for AIX
B25203-10
  Go To Documentation Library
Home
Go To Product List
Solution Area
Go To Table Of Contents
Contents

Previous
Previous
 
Next
Next
 

13 Oracle Application Server Technology Adapters

This chapter describes issues associated with Oracle Application Server Adapters. It includes the following topics:

13.1 Oracle Application Server Adapter for Files/FTP Issues and Workarounds

This section describes the following issues and workarounds related to Oracle Application Server Adapter for Files (file adapter) and Oracle Application Server Adapter for FTP (FTP adapter):

13.1.1 Using CorrelationSets with File Adapter

When you use correlation sets with file adapter by using the empty BPEL project template, the property aliases get created in the partnerlink WSDL files. However, if you edit the adapter partnerlink, then the property aliases are removed from the WSDL file. This can cause some compilation issues for the BPEL project.

To overcome this issue, you need to manually edit the partnerlinks wsdl files by using the source view.

13.1.2 Multiple Batching Invokes from the Same BPEL Process

If you do multiple batching file adapter invokes from the same BPEL process, then your data is not correctly batched.

If you must have multiple batching file adapter invokes from the same BPEL process, then perform the second (and subsequent) invoke through another shell BPEL process. This invokes the file adapter. That is, change your second partner link in the original BPEL process to point to a small BPEL process instead of the file adapter service. This BPEL process can perform the file adapter invoke for you without issues.

13.2 Oracle Application Server Adapter for Java Message Service Issues and Workarounds

This section describes the following issues and workarounds:

13.2.1 JMS Adapter in an XA scenario against AQ-JMS (OJMS)

You must use separate Resource Providers for inbound and outbound AQ-JMS adapters:

  1. You must set a new partnerlink property (BPEL) or endpoint property (ESB) called "cacheConnections" to false. If this is not specified, then the default value is true (which is the default in both 10.1.2 and 10.1.3).

  2. You should use separate OJMS resource providers (defined in J2EE_HOME/config/application.xml) for inbound and outbound JMS destinations (queues or topics) participating in the same global transaction.

13.2.2 ESB Cannot Run JMS Adapter (OEMS JMS provider) in Non-Managed Mode

JMS Adapter cannot use connection information from WSDL to run in non-managed mode. It reports missing connection factory.

Even in non-managed mode, some adapters have pre-requisites, such as server configuration. For instance, the JMS Adapter requires a resource provider to be configured inapplication.xml and potentially data-sources.xml (if the resource provider refers to a data source). If these pre-requisites exist ahead of time, then non-managed mode would also work for ESB. The same issue exactly pertains to BPEL as well. Note that this is applicable only for OEMS JMS provider.

13.2.3 Regression Stress - Dequeue Fails with AQJMSException in AQ-JMS Advanced Scenario

Under heavy system load, that is, when the load for inbound and outbound for AQ JMS adapters is high, dequeue fails with an AQjmsException exception.

To address this issue, use the following workaround:

Create two separate physical connection pools (that is, use two separate (AQ) JMS resource providers). Each JMS WSDL (Enqueue and Dequeue) then points to a different JCA JNDI connection factory, which in turn would point to two separate JMS connection factories, each using one of the two resource providers, as shown in the following examples:

Enqueue WSDL

<jca:address location="eis/aqjms1" />

Dequeue WSDL

<jca:address location="eis/aqjms2" />

JmsAdapter/oc4j-ra.xml

<connector-factory location="eis/aqjms1" ...
     <config-property name="connectionFactoryLocation"
value="java:comp/resource/aqjms1/QueueConnectionFactories/qcf"/>
     ...
<connector-factory location="eis/aqjms2" ...
<config-property name="connectionFactoryLocation"
value="java:comp/resource/aqjms2/QueueConnectionFactories/qcf"/>
...

J2EE/home/config/application.xml

<resource-provider class="oracle.jms.OjmsContext" name="aqjms1">
   <description>OJMS Context using thin JDBC</description>
   <property name="url"value="jdbc:oracle:thin:scott/tiger@localhost:1521:ORCL" />
<resource-provider class="oracle.jms.OjmsContext" name="aqjms2">
   <description>OJMS Context using thin JDBC</description>
  <property name="url" value="jdbc:oracle:thin:scott/tiger@localhost:1521:ORCL" />

Note:

Even when the scenario works fine under regression stress, you will still see the AQJMSException in the log. You can use this workaround to avoid this exception.

13.2.4 When using Topics with OJMS (AQ based JMS), AQ JMS Topic Hangs, and Ceases to Dequeue

When using topics with OJMS (AQ based JMS), AQ- JMS topic hangs, and does not dequeue even though there are messages at topic.

The JMS adapter subscriber (inbound) WSDL should use a JCA connection factory (for example, eis/OJms/myConnectionFactory1) which uses an OJMS resource provider (for example, resprov1). This resource provider is based on a URL (for example, jdbc:oracle:thin:@host:1521:orcl).

The following list exemplifies the workaround mentioned in the preceding paragraph:

  • MyJmsSubsriber.wsdl

    ...
    <service name="JmsSubscribe">
      <port name="jmsSubscribe_pt" binding="tns:jmsSubscribe_binding">
        <jca:address location="eis/OJms/myConnectionFactory1"/>
      ...
    
  • J2EE_HOME/application-deployments/default/JmsAdapter/oc4j-ra.xml

    <connector-factory location="eis/OJms/myConnectionFactory1" connector-name="Jms Adapter">
       <config-property name="connectionFactoryLocation"
               value="java:comp/resource/resprov1/QueueConnectionFactories/myQCF"/>
    
  • J2EE_HOME/config/application.xml

    <orion-application  ...
        ...
        <resource-provider class="oracle.jms.OjmsContext" name="resprov1">
            <property name="url" value="jdbc:oracle:thin:@host:1521:orcl" />
            <property name="username" value="scott" />
            <property name="password" value="tiger" />
        </resource-provider>
    

13.2.5 Enabling Native Correlation in JMS Adapter

The following types of correlation schemas are available for JMS adapter message correlation within Oracle BPEL Process Manager:

13.2.5.1 Native Adapter Correlation

One of the choices available for JMS Adapter message correlation within BPEL process is native adapter correlation when a BPEL invoke is followed by BPEL receive.


Note:

Native adapter correlation is applicable only to AQ, JMS and MQ Series adapters.

The messaging adapters, such as JMS have support for native correlation and perform automatic correlation between an outbound (BPEL invoke) message and an inbound (BPEL receive) message mimicking a request-response scenario. The correlation ID of the incoming message has to be set to the Message ID of the outgoing JMS message. This needs to be implemented in the JMS application that is sending the reply on the other end. The underlying Adapter Framework (AF) stores a hashmap table whose entries map the Message Id of the outgoing JMS message with that of the native BPEL correlation ID. However, adapter native correlations can be used only in certain specific cases involving an invoke followed by a receive pointing to the same PartnerLink activity. You need to use the BPEL correlation sets for all other cases.

13.2.5.2 Oracle BPEL Process Manager Correlation Sets

The following correlation sets are available:

  • Based on JMS and AQ headers (available to JMS and AQ adapters only)

  • Based on payload (available to all adapters)

Correlation sets are a BPEL mechanism that provides for the correlation of asynchronous messages based on message body contents. Correlation sets needs to be defined when the interactions are not simple invoke-receive activities.

13.3 Oracle Application Server Adapter for Advanced Queuing Issues and Workarounds

This section describes the following issue and workaround:

13.3.1 Dequeuing in the AQ Adapter is Very Slow for Large Number of Messages

When the number of messages is large (more than 100K) in an AQ queue, dequeuing in the AQ adapter can be very slow. The problem is a performance issue with the 10.x.x version of the database. However, the previous versions of the database work fine.

When you encounter this issue, run one of the following commands to generate statistics for the queue or topic table:

dbms_stats.gather_table_stats('JMSUSER', 'QTAB')

or

dbms_stats.gather_schema_stats('JMSUSER')

where QTAB is the Queue/Topic table and JMSUSER is the user/schema. Note that statistics should be refreshed every time a large number of rows are updated, inserted, or deleted.

13.4 Oracle Application Server Adapter for Database Issues and Workarounds

This section describes the following issues and workarounds:

13.4.1 DB Adapter Wizard Shows Empty (Blank) Page After Creating DB Connection

After migration of 10.1.2.0.2 122.DBAdapter/InsertWithCatch, if you open the project, and double-click the DB adapter partnerlink, then you will get a message stating that your UI connection is missing. After you create the UI connection, and click the Next button, you will get a blank page. This happens when you open in Oracle JDeveloper 10.1.3.1.

The issue here is that the Next button should be disabled, which in this case, is not. The workaround is to ensure that a connection exists and is selected, and not to click the Next button otherwise.

13.4.2 Faulted DB Adapter Instances Do Not Appear in BPEL Console

Faulted DB adapter instances do not appear in BPEL console because the BPEL auditing is tied to the JTA transaction, that is, auditing can only occur if the JTA transaction commits.

The faulted instance does not appear if a XA/JTA DB adapter invoke fails, and the JTA transaction cannot (must not) be committed. This problem also occurs with server timeouts, where the JTA transaction is marked rollback only. However, in 10.1.3.1 DB adapter is configured for JTA out-of-the-box so this problem is now apparent all the time.

Report of success or failure has to be tied to JTA, but you cannot report failure and rollback the transaction at the same time. If the instance is successful you must audit through JTA, but if unsuccessful you theoretically cannot (you are writing as part of a transaction which can never commit.)

13.4.3 Database Adapter Throws an Exception for SYS.XMLTYPE

OracleAS TopLink does not support SYS.XMLTYPE.

13.4.4 NCLOB Data Read by the Outbound Database Adapter Contains Invalid Characters

When you configure two processes to perform the following tasks, invalid characters appear when the data is read from the inbound Database adapter:

  • A file adapter reads a Word document (in opaque format) and sends it in the database outbound direction. The data is inserted into the table.

  • The database inbound direction reads the same data and sends it to the outbound file adapter, which writes to a document.

The workaround is to use a CLOB instead of NCLOB.

13.4.5 Date/Time Format Values Not Displayed as Expected

When you use datatypes such as DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, and TIMESTAMP WITH LOCAL TIMEZONE, for which they are providing specific values, you do not see the expected formats. This is because the Database adapter maps these database types to the XML type dateTime. For both incoming values in the instance XML and for outgoing values in the generated XML, dateTime is used. This is consistent with the ISO 8601 standard.

13.4.6 SELECT Query Does Not Work for Multiple AND Conditions for DEPT:EMP Table

Consider the following SELECT query:

select dept.*,emp.* from departments dept,employees emp where
dept.department_id='50' and emp.manager_id=dept.MANAGER_ID;

which can be worded as follows:

Find department 50 where any employee in that department has the same manager_id as the department itself.

Note that the above SQL command returns only those departments and employees that match the query. To get this same result with the adapter, you must choose Employee as the root table. If you chose Department as the root table, then the adapter logically reads the employees in a separate relationship query:

select dept.* from departments dept,employees emp where
dept.department_id='50' and emp.manager_id=dept.MANAGER_ID;

select emp2.* from departments dept, employees emp, employees emp2 where
dept.department_id='50' and emp.manager_id=dept.MANAGER_ID and emp2.department_id
 = dept.department_id;

The adapter returns the matching departments, plus all the employees for each matching department, even those whose mangager_id != dept.MANAGER_ID.

Remember this simple rule: The SQL syntax only determines which rows from the root table get returned. The detail rows that are returned depend only on which root and master rows were returned. The above SQL syntax was difficult to express in the adapter because it returned columns from two tables that were both part of the WHERE clause. Selecting Employees as the root table instead of Department worked, but not vice versa.

13.4.7 XML WSDL XSD Files Remain After the Partner Link Is Deleted

After deleting a Database adapter partner link from the Diagram View of JDeveloper BPEL Designer, the toplink_mappings.xml file, the XSD, and the WSDL file remain in the Applications Navigator, even after refreshing. This is a known issue.

13.4.8 XML File Stored as a CLOB Is Returned as a String, Not as an XML Node

When an XML file (stored as a CLOB) is read and assigned to a variable whose type conforms to the schema, then the Database adapter returns the contents of the CLOB as a string and not as an XML document/node. This is the expected behavior because XMLType is not supported.

13.4.9 Cannot Query on Multiple Views

Querying on multiple views when using the Database adapter is not supported because you cannot create relationships between views. No option for doing so is provided in JDeveloper BPEL Designer. In addition, you cannot query on views and tables within a single query.

13.4.10 Using Function Calls Inside a SQL Query

Entering the following type of SQL query:

sqlquery : 'select count(*) from user_objects' 
rowset : false() 
row : false() 
datasource : 'jdbc:oracle:thin:system/welcome1@localhost:1521:ORCL' 

Results in the following exception error:

oracle.xml.sql.OracleXMLSQLException: Character ')' is not allowed in an 
XML tag name. 

If you use function calls inside a SQL query string such as count(*), sum(price), or avr(price), include a pseudo-alias name. For example:

sqlquery : 'select count(*) as pseudo_alias_name_XXX  from user_objects'

or

sqlquery : 'select sum(price) as total_price  from user_objects

13.5 Oracle Application Server Adapter for MQSeries Issues and Workarounds

This section describes the following issues and workarounds:

13.5.1 Mandatory Patch for Oracle Application Server Adapter for MQSeries

You must apply patch 5594751 before using the Oracle Application Server Adapter for MQSeries. The patch is available at the following location:

https://www.metalink.oracle.com/

13.6 Oracle Application Server Adapter for Oracle Applications Issues and Workarounds

This section describes the following issues and workarounds:

13.6.1 Schema for Business Event Payload Cannot be Specified in the Wizard

Issue: While configuring Oracle Application Server Adapter for Oracle Applications to create business event outbound messages, users must specify the schema file location and select the schema element that defines the messages for the event payload using the Adapter Configuration Wizard in Oracle JDeveloper. However, if users are not sure about the event payload data type or the schema details, then users may not have the correct WDSL file generated corresponding to a selected business event.

Resolution: To resolve this issue, Oracle Application Server Adapter for Oracle Applications provides an updated schema selection page allowing you to select the business event payload schema from one of the following options through the Wizard:

  • No Schema

  • Any Schema

  • Specify Schema

When you select either the "No Schema" or "Any Schema" option, there is no need to further specify the schema information for your business event service. The associated WSDL file corresponding to your specified business event service will be generated. If you select the "Specify Schema" option, then you must specify the location of schema file and then select the schema element that defines the payload of outbound business event.

For more information, refer to Oracle Application Server Adapter for Oracle Applications User's Guide (B28351-03) for details.

13.7 Documentation Errata

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

13.7.1 Incorrect Values of the hostOSType and Indextype Parameters

Section 6.4.2 "Modify the oc4j-ra.xml File" of Oracle Application Server Adapters for Files, FTP, Databases, and Enterprise Messaging User's Guide contains incorrect values of the hostOSType and Indextype parameters.

The value of hostOSType should be specified as z/os or Z/OS and Indextype of the MQSeries queues should be set to MQIT_GROUP_ID.

13.7.2 Incorrect Segmentation Property Name

Section 6.3.8 "Message Segmentation" of Oracle Application Server Adapters for Files, FTP, Databases, and Enterprise Messaging User's Guide contains incorrect property name. The property name in this section should be SegmentIfReqd. For example:

SegmentIfReqd="true"

13.7.3 Using Data Source While Creating a Server Connection in AQ Adapters when oc4j-ra.xml Is Not Configured

Section 3.2.1.3 "Adding a Partner Link" of Oracle Application Server Adapters for Files, FTP, Databases, and Enterprise Messaging User's Guide has missing information about using Data Source. While creating a server connection while defining an AQ adapter service, you can use Data Source when oc4j-ra.xml is not configured with the correct JNDI location for connector factory. Consider the following code snippet from the adapter service WSDL:

<jca:address location="eis/AQ/aqSample" UIConnectionName="aqSample" />

If the adapter service is configured as shown in the preceding example and oc4j-ra.xml does not have an entry for "eis/AQ/aqSample", then the data source value specified by "Data Source" will be used. Additionally, the data source should be defined in the data-sources.xml file as well.

13.7.4 Implication of Dequeue Condition in AQ Adapters

Section 3.1.1.2 "Dequeue and Enqueue Features" of Oracle Application Server Adapters for Files, FTP, Databases, and Enterprise Messaging User's Guide has missing information about the implication of Dequeue condition.

Dequeue condition is an Advanced Queuing product feature that AQ adapter uses. A dequeue condition is specified as part of the AQDequeueOption object, which is internally used by the Dequeue AQ API. If a dequeue condition is specified and no messages meet the specified condition, then no dequeue will happen.

A dequeue condition element is a Boolean expression using syntax similar to the WHERE clause of a SQL query. This Boolean expression can include conditions on message properties, user object payload data properties, and PL/SQL or SQL functions. Message properties include priority, corrid, and other columns in the queue table.

13.7.5 XMLType Is Supported in the 10.1.3.1 Release

Section 3.1.1 "AQ Adapter Features" of Oracle Application Server Adapters for Files, FTP, Databases, and Enterprise Messaging User's Guide contains incorrect information about XMLType not being supported by AQ adapters. XMLType is supported by AQ adapters from release 10.1.3 onwards.