Skip Headers
Oracle® Application Server Release Notes and New Features
10g Release 3 (10.1.3.4)

Part Number E12523-05
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Feedback page
Contact Us

Go to previous page
Previous
Go to next page
Next
View PDF

11 Oracle Application Server Packaged-Application Adapter

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

11.1 MaxTransactionSize Should be Limited for Oracle Database Adapter

In Database adapter, set a limited value for MaxTransactionSize. For example, set

MaxTransactionSize=10

Setting higher values to MaxTransactionSize will likely time out.

11.2 Oracle Database Adapter Loses Record When Processing Master-Detail Adapter During Failover

XA on RAC results in message loss when processing master-detail adapter during failover.

For XA on RAC in Oracle Application Server 10g Release 10.1.3.4, ensure that if multiple components are connecting to a RAC database, then they share the same managed datasource definition, and not just the same connection pool definition.

11.3 Adapter Clustering Fails When Two or More Cluster Groups are Configured for the BPEL Processes

Oracle File/FTP adapter clustering will not work across endpoints in different subnets. However, it works fine with UDP protocol.

To resolve this problem, when the SOA cluster is across the subnet, use TCP protocol in jgroups-protocol.xml, and ensure that you set the activation agent property useJGroupConfigFile=false in bpel.xml of the corresponding BPEL process.

11.4 New Features

This section describes the new features for Oracle Application Server 10g Release 10.1.3.4 for the following technology adapters:

11.4.1 Native Format Builder Wizard New Features

Oracle Application Server 10g Release 10.1.3.4 includes the following new features for the Native Format Builder Wizard:

11.4.1.1 Escape Character

There can be instances where the special characters, such as a delimiter are part of the data. In such cases, the actual data should be included within quotes. If quotes exist in the field data, then you must double the embedded quote characters, and delimit the field with double-quotes. Consider the following CSV data field example:

Arun said, " I love google".

The special characters in the preceding example must be escaped in the native as follows:

"Arun said, "" I love google""."

Note that here the special characters, , (comma) and " (double-quotes) are part of the data.

11.4.1.2 Top-Level and Field-Level Validations

you can configure adapters to perform stricter validations on inbound operation at level 1 and level 2. This new feature ensures that the adapter will not publish invalid records.The following validations are available in this release:

11.4.1.2.1 Level 1: Top-Level Validation

At the top level, you can validate DOMResult against the XML schema. Though this sort of validation is useful, it does not provide translation context information, such as the line and the column in the native stream where this error occurred. However, this validation can control the publishing of invalid records and provide XML validation errors. The following code snippet enables XML validation:

<schema xmlns="http://www.w3.org/2001/XMLSchema"
       xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
       targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
       elementFormDefault="qualified"
       attributeFormDefault="unqualified"
       nxsd:stream="chars"
       nxsd:version="NXSD"
       nxsd:validation="true"
       >
11.4.1.2.2 Level 2: Field-Level Validation

Type validation support at the field level - XML schema type validation is performed for each token read from the native stream. In case of an error, an error is reported with the line and column number in the native stream, and the corresponding XML type where this validation failure occurred.

The following code snippet enables field-level validation:

<schema xmlns="http://www.w3.org/2001/XMLSchema"
       xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
       targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
       elementFormDefault="qualified"
       attributeFormDefault="unqualified"
       nxsd:stream="chars"
       nxsd:version="NXSD"
       nxsd:fieldValidation="true"
       >

Note that, currently, field-level validation does not support XML schema patterns and facet-level validation.

11.4.2 Oracle Application Server Adapter for Files/FTP New Features

Oracle Application Server 10g Release 10.1.3.4 includes the following new features for the File and FTP adapters:

11.4.2.1 Support for Copying, Moving, and Deleting Files by Using an Outbound Service

The File and FTP adapter includes a functionality that allows you to copy or move a file from one location to another or delete a file from the target folder. Additionally, the FTP adapter allows you to move or copy files from a local file system to a remote file system and vice versa.

Note that the FTP adapter includes variants for SFTP and FTPS.

Oracle JDeveloper Release 10.1.3.4 does not support this feature. However, it is possible to configure this feature manually. This new feature is being implemented as a new interaction specification for outbound services. So, this feature can be accessed either by using a BPEL invoke activity or an ESB routing rule.

At a high level, you will need to create an outbound service and configure this service with the source and target directories and filenames.

The following use cases demonstrate the new functionality supported by File and FTP adapters that allow you to copy, move, and delete files by using an outbound service:

11.4.2.1.1 Use Case 1: Moving a File from a Local Folder on the File System to Another Local Folder

You will model only a part of this procedure by using the wizard because the corresponding Oracle JDeveloper Wizard is not available. You will complete the rest of the procedure by configuring the generated WSDL file manually.

The following are the steps to move a file from a local folder on the file system to another local folder:

  1. Create an empty BPEL process, as shown in Figure 11-1.

    Figure 11-1 An Empty BPEL Process

    Description of Figure 11-1 follows
    Description of "Figure 11-1 An Empty BPEL Process"

  2. Drag and drop File Adapter from the BPEL Services list for the outbound service.

    The Adapter Configuration Wizard is displayed.

  3. Click Next. The Service Name page is displayed.

  4. Enter a service name, and optionally enter a description, as shown in Figure 11-2, and then click Next.

    Figure 11-2 The Service Name Page

    Description of Figure 11-2 follows
    Description of "Figure 11-2 The Service Name Page"

  5. In the Operation page, select Synchronous Read File as the operation, as shown in Figure 11-3. You may optionally change the name of operation, and then click Next.

    Figure 11-3 The Operation Page

    Description of Figure 11-3 follows
    Description of "Figure 11-3 The Operation Page"

    Note that you have selected Synchronous Read File as the operation because the WSDL file that is generated as a result of this operation is similar to the one required for the file IO operation.

  6. In the File Directories page, select a dummy directory for now, which will not be used, as shown in Figure 11-4, and then click Next. You will change the directory manually in a later step.

    Figure 11-4 The File Directories Page

    Description of Figure 11-4 follows
    Description of "Figure 11-4 The File Directories Page"

  7. In the File Name page, select a dummy file for now, as shown in Figure 11-5, which will not be used, and then click Next. You will change the file name manually in a later step.

    Figure 11-5 Specifying a Dummy File Name

    Description of Figure 11-5 follows
    Description of "Figure 11-5 Specifying a Dummy File Name"

  8. In the Messages page, as shown in Figure 11-6, select Native format translation is not required (Schema is opaque), and then click Next.

    Figure 11-6 The Messages Page

    Description of Figure 11-6 follows
    Description of "Figure 11-6 The Messages Page"

  9. Click Finish.

  10. Create an invoke activity for the MoveFileService service that you just created, as shown in Figure 11-7.

    Figure 11-7 The Invoke Activity

    Description of Figure 11-7 follows
    Description of "Figure 11-7 The Invoke Activity"

    The next step is to modify the generated WSDL file for MoveFileService service and configure it with the new interaction specification for the move operation.

  11. Open the MoveFileService.wsdl file and modify the jca:operation, as shown in the following example.

    You will configure the WSDL file with the source, target directory, and file details. You can either hardcode the source, target directory, and file details in the WDL file or use header variables to populate them. In this example, you will use header variables.

    <jca:operation
       InteractionSpec="oracle.tip.adapter.file.outbound.FileIoInteractionSpec"
       SourcePhysicalDirectory="foo1"
       SourceFileName="bar1"
       TargetPhysicalDirectory="foo2"
       TargetFileName="bar2"
       Type="MOVE">
    </jca:operation>
    

    Note:

    Note that you have modified the className attribute, and added SourcePhysicalDirectory, SourceFileName,TargetPhysicalDirectory, TargetFileName and Type. Currently, the values for the source and target details are dummy. You will populate them at runtime. You can also hardcode them to specific directories or filenames.

    The Type attributes decides the type of operation. Apart from MOVE, the other acceptable values for the Type attribute are COPY and DELETE.

  12. Now that you have configured the WDL file with dummy source and target details, you will need to specify headers so that you can override them at runtime. First, you will need to modify fileAdapterOutboundHeader.wsdl, and then add the new headers, as shown in the following example:.

    <types>
            <schema ..>
                <element name="OutboundFileHeaderType">
                    <complexType>
                        <sequence>
                            <element name="fileName" type="string"/>
                            <element name="directory" type="string"/>
                            <element name="sourceDirectory" type="string"/>
                            <element name="sourceFileName" type="string"/>
                            <element name="targetDirectory" type="string"/>
                            <element name="targetFileName" type="string"/>
                        </sequence>
                    </complexType>
                </element>
            </schema>
        </types>
    

    This is required because you will use the BPEL header mechanism to override the source, target directory, and file details at runtime.

  13. Create a header variable for the invoke activity, as shown in Figure 11-8.

    Figure 11-8 Creating a Header Variable

    Description of Figure 11-8 follows
    Description of "Figure 11-8 Creating a Header Variable"

  14. Create a new header variable, as shown in Figure 11-9 , and configure it with the OutboundHeader_msg message type from the fileAdapterOutboundHeader.wsdl file.

    Figure 11-9 Creating a Header Variable

    Description of Figure 11-9 follows
    Description of "Figure 11-9 Creating a Header Variable"

  15. Create an assign activity to assign the header variable values for sourceDirectory, sourceFileName, targetDirectory and targetFileName, as shown in Figure 11-10.

    Figure 11-10 Creating an Assign Activity

    Description of Figure 11-10 follows
    Description of "Figure 11-10 Creating an Assign Activity"

  16. Similarly, create a copy operation for sourceFileName, targetDirectory and targetFileName. Now, the assign operation appears in the BPEL source view, as shown in the following code snippet.

    <assign name="AssignFileDetails">
          <copy>
            <from expression="'C:\source'"/>
            <to variable="outHeader" part="outboundHeader"
                query="/ns2:OutboundFileHeaderType/ns2:sourceDirectory"/>
          </copy>
          <copy>
            <from expression="'in.zip'"/>
            <to variable="outHeader" part="outboundHeader"
                query="/ns2:OutboundFileHeaderType/ns2:sourceFileName"/>
          </copy>
          <copy>
            <from expression="'C:\target'"/>
            <to variable="outHeader" part="outboundHeader"
                query="/ns2:OutboundFileHeaderType/ns2:targetDirectory"/>
          </copy>
          <copy>
            <from expression="'out.zip'"/>
            <to variable="outHeader" part="outboundHeader"
                query="/ns2:OutboundFileHeaderType/ns2:targetFileName"/>
          </copy>
          
        </assign>
    

    Note that you have hardcoded the source and target details here. You can also provide these details as run-time parameters.

  17. Finally, add an initial receive or pick activity.

    You have completed moving a file from a local folder on the file system to another local folder.

11.4.2.1.2 Use Case 2: Copying a File from a Local Folder on the File System to Another Local Folder

The following are the steps to copy a file from a local folder on the file system to another local folder:

  1. Follow steps 1 through 10 in Section 11.4.2.1.1, "Use Case 1: Moving a File from a Local Folder on the File System to Another Local Folder".

  2. Change the value of the TYPE attribute to COPY in the jca:operation, as shown in the following example in Step 11 in Section 11.4.2.1.1, "Use Case 1: Moving a File from a Local Folder on the File System to Another Local Folder".

    <jca:operation
              InteractionSpec="oracle.tip.adapter.file.outbound.FileIoInteractionSpec"
              SourcePhysicalDirectory="foo1"
              SourceFileName="bar1"
              TargetPhysicalDirectory="foo2"
              TargetFileName="bar2"
              Type="COPY">
          </jca:operation>
    
11.4.2.1.3 Use Case 3: Deleting a File from a Local File System Folder

To delete a file, the parameters you require are TargetPhysicalDirectory and TargetFileName. Note that you do not require SourcePhysicalDirectory and SourceFileName to delete a file from a local file system folder.

The following are the steps to delete a file delete_me.txt from /home/alex:

  1. Follow steps 1 through 10 in Section 11.4.2.1.1, "Use Case 1: Moving a File from a Local Folder on the File System to Another Local Folder"

  2. Change the value of the TYPE attribute to DELETE in the jca:operation in Step 11 in Section 11.4.2.1.1, "Use Case 1: Moving a File from a Local Folder on the File System to Another Local Folder", as shown in the following example:

    <jca:operation
              InteractionSpec="oracle.tip.adapter.file.outbound.FileIoInteractionSpec"
              TargetPhysicalDirectory="/home/alex"
              TargetFileName="delete_me.txt"
              Type="DELETE">
          </jca:operation>
    
11.4.2.1.4 Use Case 4: Working with Huge CSV Files

Consider the following scenario:

You have a large CSV file of size 1 gigabyte coming on the source folder, and you need to perform the following:

  1. Translate the CSV into XML.

  2. Transform the resulting XML using XSL.

  3. Finally, translate the result from the transform operation into a fixed length file.

This use case is similar to the FlatStructure sample in the BPEL samples directory for 121.FileAdapter. The difference is that the three steps will occur in a single File IO interaction.

Note that all the three steps occur in a single File IO interaction only if all the records in the data file are of the same type.

The following are the steps to perform the three operations on the CSV file:

  1. Copy the address-csv.xsd and address-fixedLength.xsd files from the FlatStructure sample into the xsd directory of your project.

  2. Copy addr1Toaddr2.xsl from the FlatStructure sample into the xsl directory of your project.

  3. Configure the File IO interaction, as shown in the following example. At a high level, you will need to specify the source and target schemas as well as the XSL in the interaction specification along with the source, target folder, and file details, as shown in the following example:

    <jca:operation
              InteractionSpec="oracle.tip.adapter.file.outbound.FileIoInteractionSpec"
              SourcePhysicalDirectory="C:\inputDirectory"
              SourceFileName="input.csv"
              TargetPhysicalDirectory="C:\outputDirectory"
              TargetFileName="output_fixedLength.txt"
              SourceSchema="address-csv.xsd"
              SourceSchemaRoot ="Root-Element"
              SourceType="native"
              TargetSchema="address-fixedLength.xsd"
              TargetSchemaRoot ="Root-Element"
              TargetType="native"
              Xsl="addr1Toaddr2.xsl"
              Type="MOVE">
          </jca:operation>
    

    Note that you have provided the following additional parameters:

    • SourceSchema: Relative path to the source schema.

    • SourceSchemaRoot: The root element in the source schema.

    • SourceType: The type of data. The other possible type is XML.

    • TargetSchema: Relative path to the target schema.

    • TargetSchemaRoot: The root element in the target schema.

    • TargetType: The type of data. The other possible type is XML.

    • XSL: Relative path to the XSL file.

11.4.2.1.5 Use Case 5: Moving a File from a Remote Folder to Another Remote Folder on the Same FTP Server

The IO use-cases for the FTP adapter are very similar to those for File adapter. However, there are a few nuances that need attention.

Note that you are moving a file within the same folder, so it seems more like a rename operation on the same server. Most FTP servers support the RNFR, and the RNTO FTP commands that allow you to rename a file on the FTP server.

However, even if the RNFR, and the RNTO commands are not supported, moving a file within the same folder is still possible by virtue of a binding property UseNativeRenameOperation. If this property is set to TRUE, then the FTP adapter uses the native RNFR and RNTO commands. However, if this property is set to FALSE, then the FTP adapter uses the Get and Put commands followed by a Delete command to emulate a move operation. By default, UseNativeRenameOperation is set to FALSE in which case the FTP adapter emulates a move operation. If your FTP server supports the RNFR and RNTO commands, then set this property to TRUE.

Similar to the File IO, you will need model a part of the use case using the Oracle JDeveloper wizard because the corresponding Oracle JDeveloper wizard is not available.

Modeling this use case is similar to Section 11.4.2.1.1, "Use Case 1: Moving a File from a Local Folder on the File System to Another Local Folder" except for the following two differences from Use Case 1:

  1. Change InteractionSpec to oracle.tip.adapter.ftp.outbound.FTPIoInteractionSpec

  2. Add an endpoint property in the bpel.xml file for the outbound partner link for UseNativeRenameOperation.

    If the FTP server supports the RNFR, and the RNTO FTP commands, then you must set UseNativeRenameOperation to TRUE. Otherwise, you will need to set it to FALSE. Define the property in bpel.xml, as shown in the following example:

    <partnerLinkBinding name="FtpRenameSvc">
                <property name="wsdlLocation">FtpRenameSvc.wsdl</property>
                <property name=" UseNativeRenameOperation">true</property>
                <property name="retryInterval">60</property>
             </partnerLinkBinding>
    
  3. Follow the rest of the steps as mentioned in Section 11.4.2.1.1, "Use Case 1: Moving a File from a Local Folder on the File System to Another Local Folder", with changes only to the InteractionSpec class name, as shown in the following example:

    <jca:operation
              InteractionSpec="oracle.tip.adapter.ftp.outbound.FTPIoInteractionSpec"
              SourcePhysicalDirectory="foo1"
              SourceFileName="bar1"
              TargetPhysicalDirectory="foo2"
              TargetFileName="bar2"
              Type="MOVE">
        </jca:operation>
    
11.4.2.1.6 Use Case 6: Copying a File from a Local Folder on the File System to a Remote Folder on the FTP Server

The steps for this use case are the same as in Section 11.4.2.1.5, "Use Case 5: Moving a File from a Remote Folder to Another Remote Folder on the Same FTP Server" except that you must configure the source folder as local and the target folder as remote.

Use the two properties SourceIsRemote and TargetIsRemote to specify whether the source/target file is on the local or remote file system, as shown in the following example:

<jca:operation
          InteractionSpec="oracle.tip.adapter.ftp.outbound.FTPIoInteractionSpec"
          SourcePhysicalDirectory="foo1"
          SourceFileName="bar1"
          SourceIsRemote="false"
          TargetPhysicalDirectory="foo2"
          TargetFileName="bar2"
          Type="COPY">
    </jca:operation>

Notice that you have configured SourceIsRemote as FALSE. In this case, the FTP IO assumes that the source file comes from a local file system. Also, notice that you did not specify the parameter for target because, by default TargetIsRemote is set to TRUE.

11.4.2.1.7 Use Case 7: Copying a File from a Remote Folder on the File System to a Local Folder on the File System

The steps for this use case are the same as in Section 11.4.2.1.6, "Use Case 6: Copying a File from a Local Folder on the File System to a Remote Folder on the FTP Server" except that you must configure the source folder as remote and the target folder as local, as shown in the following example:

<jca:operation
          InteractionSpec="oracle.tip.adapter.ftp.outbound.FTPIoInteractionSpec"
          SourcePhysicalDirectory="foo1"
          SourceFileName="bar1"
          TargetPhysicalDirectory="foo2"
          TargetFileName="bar2"
          TargetIsRemote="false"
          Type="COPY">
    </jca:operation>

Notice that you have configured TargetIsRemote as FALSE. In this case, the FTP IO will assume that the source file comes from a remote file system whereas the target is on a local file-system folder. Also, notice that you did not specify the parameter for source because, by default, SourceIsRemote is set to TRUE.

Also, note that you cannot set both SourceIsRemote and TargetIsRemote as FALSE, because this use case is applicable for a File adapter and not an FTP adapter.

11.4.2.1.8 Use Case 8: Copying a File from One FTP Server to Another

For this use case, you will need to perform Section 11.4.2.1.6, "Use Case 6: Copying a File from a Local Folder on the File System to a Remote Folder on the FTP Server" and Section 11.4.2.1.7, "Use Case 7: Copying a File from a Remote Folder on the File System to a Local Folder on the File System" in a sequential manner. In Use case 6 the file from the FTP server is downloaded to a local directory and in Use case 7 the file is uploaded to another FTP server from the local directory.

11.4.2.2 Support for FTPS (FTP over SSL) in Linux

Oracle Application Server 10g Release 10.1.3.4 includes a functionality in which the FTP adapter now supports SSL on Linux in addition to previously supported Solaris.

The configuration for SSL on Linux is the same as the one for Solaris, described in the documentation for FTP over SSL in earlier versions, for example Oracle Application Server 10g Release 10.1.3. In addition, you have to configure the following parameters:

  • keyStoreProviderName: oracle.security.pki.OraclePKIProvider

  • keystoreType: PKCS12

  • keystoreAlgorithm: OracleX509

  • pkiProvider: OraclePKI

  • jsseProvider: OracleJSSE

Ensure that you add the OraclePKIProvider in java.security policy file in the SOA-HOME\jdk\jre\lib\security directory.

11.4.2.3 End of Line Characters Handling in File and FTP Adapters in Linux

The current XML specification, available at http://www.w3.org/TR/REC-xml/#sec-line-ends states the following:

  1. Every 0x0D, that is, carriage return (CR) is converted to 0x0A, that is, line feed (LF)

  2. Every consecutive 0x0A are converted into ONE single 0x0A

    For example,

    0x0D --> 0x0A
             0x0D0x0A --> 0x0A
           0x0A0x0A0x0A --> 0x0A
    

An option is required to avoid any CR and LF characters (that is, 0x0D and 0x0A) transformation as described in the preceding example to maintain data consistency from source to target.

Oracle Application Server 10g Release 10.1.3.4 includes a functionality whereby two new parameters normalizeLineTerminators and encodeLineTerminators have been added as top level schema directives.

If nxsd:normalizeLineTerminators="false", then the translator will not normalize new line characters. For example, \r\n will be retained as a 0x0D0x0A sequence. By default, normalizeLineTerminators="true", and line terminator character sequences are normalized to \n. If nxsd:encodeLineTerminators="true", then the translator will encode line terminators. For example, line feed (\n) will be encoded as &#10; and a carriage return (\r) will be encoded as &#13;. By default, encodeLineTerminators is set to FALSE, that is, \n will appear as 0x0A and \r will appear as 0x0D.

11.4.2.4 Processing of Files by Their Last Modified Time in File Adapter

Oracle Application Server 10g Release 10.1.3.4 includes a functionality, whereby the inbound adapter can be configured to sort files by configuring a new parameter, Sorter, in the activation specification for the File adapter.

The Sorter parameter supports two values currently, one that sorts files in ascending order of modified times and the other that sorts in descending order, as shown in the following example:

Set
Sorter="oracle.tip.adapter.file.sorter.TimestampSorterAscending"
in order to sort the file names by their modified timestamps in ascending manner
or
Sorter="oracle.tip.adapter.file.sorter.TimestampSorterDescending
in order to sort the file names by their modified timestamps in descending manner
You can also plugin your own sorter by implementing java.util.Comparator e.g.
public class MySorter implements Comparator
{
        public int compare(Object a, Object b)
        {
                FileInfo first = (FileInfo)a;
                FileInfo second = (FileInfo)b;
                if(first.get…()… > second.get…())
                        return 1;
                else if(first.get…() < second.get…())
                        return -1;
                return 0;
        }
}

Finally, you need to copy MySorter.class to the bpel/system/classes folder.

Note:

This feature works only if the following two conditions are met:
  • A synchronous Oracle BPEL Process is created or a synchronous ESB routing rule is used.

  • The number of threads is set to 1 in the pc.properties file. For Oracle BPEL Process Manager, this file is available in ORAHOME/bpel/system/service/config, and for Oracle ESB, it is available in ORAHOME/integration/esb/config. Note that you must rename pc.properties.esb to pc.properties. oracle.tip.adapter.file.numProcessorThreads=1.

11.4.3 Oracle Application Server Adapter for Java Message Service New Features

Oracle Application Server 10g Release 10.1.3.4 includes the following new features for the Oracle JMS adapter:

11.4.3.1 Mapped Message Feature

A MapMessage is used to send a set of name-value pairs where names are strings and values are Java primitive types. The entries can be accessed sequentially or randomly by name. The order of the entries is undefined. It inherits from a message and adds a map message body.

Oracle JMS adapter provides support for processing MapMessage. It now supports one new Activation and Interaction Spec each namely JmsMapMessageConsumeActivationSpec and JmsMapMessageProduceInteractionSpec. The PayloadEntry property specifies that the MapMessage entry that will be used as the payload. Users have the option to send payload as an attachment if the AttachmentList property is defined. If both PayloadEntry and AttachmentList property are not defined, then the entire MapMessage is converted to XML and the XML is transferred as the payload.

11.4.3.2 Certification with Weblogic JMS and Active MQ

Oracle JMS adapter now works with both WebLogic JMS Provider and Active MQ-JMS provider.

11.4.4 Oracle Application Server Adapter for Advanced Queuing New Features

Oracle Application Server 10g Release 10.1.3.4 includes the following new features for the Oracle AQ adapter:

11.4.4.1 DequeueTimeout Property

The DequeueTimeOut property applicable to 10.1.3.x releases supports for multiple inbound dequeue threads. The value for this property determines how many seconds the dequeue() API waits for messages before it returns and the next polling cycle begins.

Add this property to the bpel.xml file, as shown in the following example:

<partnerLinkBindings> 
    <partnerLinkBinding name="InboundPartnerLink"> 
      <property name="wsdlLocation">Dequeuer.wsdl</property> 
    </partnerLinkBinding> 
    ... 
   <activationAgents> 
     <activationAgent className="oracle....JCAActivationAgent" 
                      partnerLink="InboundPartnerLink"> 
       <property name="DequeueTimeOut">60</property>

11.4.4.2 Support for Multiple Inbound Dequeue Threads

Oracle AQ adapter now support multiple dequeue threads through the activation property adapter.aq.dequeue.threads. The value of this property determines the number of polling threads that are active at any point in time when the activation is initiated. The following example uses the activation property adapter.aq.dequeue.threads:

<service name="Raw-Dequeuer">
    <interface.wsdl interface="http://xmlns.oracle.com/pcbpel/adapter/aq/Raw_Dequeuer/#wsdl.interface(Dequeue_ptt)"/>
    <binding.jca config="Raw-Dequeuer_aq.jca"/>
    <property name="adapter.aq.dequeue.threads">2</property>  </service>

11.4.5 Oracle Application Server Adapter for Database New Features

Oracle Application Server 10g Release 10.1.3.4 includes the following new feature for the Oracle Database adapter:

11.4.5.1 Pure SQL - XML Type Support

Pure SQL Adapter is an option in the database adapter wizard that allows you to type the SQL directly and have an XSD/Web service generated automatically. The database tables are introspected dynamically in the wizard to test the SQL and better populate the XSD, that is, with valid return type.

The Pure SQL support allows the database adapter to deal with tables/views as entities and for dealing directly with SQL. You can use Pure SQL:

  • for simple data projection style report queries

  • in cases where the result set is not table oriented, such as select count(*)

  • to perform an update or delete all

  • when working with XMLType columns and xquery

  • when using complex SQL, which are not modelled in the wizard expression builder

You can use the Pure SQL Adapter with Oracle XMLTypes. It is a natural fit for inserting XML into XMLType tables and columns, and retrieving XML using xquery selects. Pure SQL is a natural fit for the database adapter that provides a relational-xml mapping that parallels XML DB(XDB) support. So when using XDB the adapter should be as lightweight and transparent as possible, to let you focus on XDB and Xquery.

If your data is in XML (unstructured/semi-structured) format, and you have no relational schema at all that you can map your data to, then you could use XDB. The conventional database adapter allows you to import an existing relational schema as an XML schema to be used with web services. XDBs XML shredding algorithm can generate a relational schema from an existing XML schema for persistent storage.

Note:

In Oracle Application Server 10g Release 10.1.3.3, XMLTypes are NOT supported with the conventional tables/views database adapter. Database Adapter stored procedures supports anonymous XMLTypes.

11.4.6 Oracle Application Server Adapter for MQSeries New Features

Oracle Application Server 10g Release 10.1.3.4 includes the following new feature for the Oracle MQSeries adapter:

11.4.6.1 Using MQSeries Message Character Set for Translation

To use the character set of MQ message for translation in inbound adapter, set the following property to TRUE in ActivationSpec:

UseMessageEncodingForTransalation="true"

Once, UseMessageEncodingForTransalation is set to TRUE, then the MQSeries adapter will use the character set as specified in the MQ message for translation. The default value for this property is TRUE.If the UseMessageEncodingForTransalation is set to FALSE, then the adapter would use the character set as specified in the schema (NXSD) file.

Similarly, for the outbound adapter if you want to use the character set to be specified at the run time, then you can specify the character set in the outbound header file MQOutboundHeader.wsdl and set UseMessageEncodingForTransalation to TRUE in InteractionSpec.

In the MQOutboundHeader.wsdl file, currently, the CodedCharSetId element is not available. You must add this manually in Oracle JDeveloper. If you want to assign the CodedCharSetId element to the outbound WSDL, then perform the following steps:

  1. After creating the outbound service for the MQ adapter, add the following code in the MQOutboundHeader element in the MQAdapterOutboundHeader.wsdl file:

    <element name="CodedCharSetId" type="string" minOccurs="0" />
    
  2. Restart Oracle JDeveloper.

  3. Create an Invoke activity, and in the Adapters tab, create an Outbound header variable.

  4. Use the outbound header variable created in Step 3 to assign the CodedCharSetID element to the outbound header.