Skip Headers
Oracle® Application Server Release Notes
10g Release 3 (10.1.3.1.0) for Microsoft Windows
B31012-02
  Go To Documentation Library
Home
Go To Table Of Contents
Contents

Previous
Previous
 
Next
Next
 

6 Oracle Application Server Adapters

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

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

This section describes the following issue and workaround:

6.1.1 Using CorrelationSets With File Adapter

If CorrelationSets are used with file adapter (starting with empty bpel project template), then the PropertyAliases get created in the partnerlink wsdl files. However, if you edit the adapter partnerlink, the propertyaliases are removed from the wsdl file, and this leads to compilation issues for the bpel project.

To overcome this issue you must edit the adapter partnerlinks files(wsdl files) manually instead of going through the wizard.

6.2 Oracle Application Server Adapter for JMS Issues and Workarounds

This section describes the following issues and workarounds:

6.2.1 JMS adapter in an XA scenario against AQ-JMS (OJMS)

You must use separate Resource Providers for inbound and outbound AQJMS 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 J2EE_HOME/config/application.xml) for inbound and outbound JMS destinations (queues or topics) participating in the same global transaction.

6.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; you should not assume that non-managed equates no server configuration is required. 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. Exact same issue pertains to BPEL as well. Note that this is applicable only for OEMS JMS provider.

6.2.3 Regression Stress - Dequeue Fails with AQJMSException in AQJMS 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.

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.

6.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), which 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>
    
    
    
    

6.3 Oracle Application Server Adapter for AQ Issues and Workarounds

This section describes the following issue and workaround:

6.3.1 Dequeuing in the AQ Adapter is Very Slow for Large Numbers of Messages

When there are large number of messages (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.

6.4 Oracle Application Server Adapter for Database Issues and Workarounds

This section describes the following issues and workarounds:

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

After migration of 10.1.2.0.2 122.DBAdapter/InsertWithCatch (when you open in JDeveloper 10.1.3.1), 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.

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

6.4.2 Faulted DBAdapter Instances Do Not Appear in BPEL Console

Faulted DBAdapter 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 DBAdapter 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 DBAdapter 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.)