Oracle BPEL PM Integration with Inbound Interaction

Adapter Integration with Oracle Application Server Components 3-9 destroy is called by the Application Server, enter a temporary recovery loop, and then try to reestablish a new connection. In the case of outbound interactions J2CA, each port caches tuples of the following: ■ ConnectionFactory ■ ConnectionSpec ■ Connection ■ Interaction ■ InteractionSpec As the BPEL engine typically invokes the port concurrently with any number of threads, the size of the cache will typically reflect the highest concurrency level at any given time. The cache can be tuned to automatically expire unused tuples after a configured idle period interactions and connection handles are then closed. The cache greatly improves performance in high load environments, for example, Retek 8 million transactions every hour. If just one JCA adapter interaction using the cache throws a ResourceException, then all members of the cache are closed and released immediately purged, so new interactions will have to re-create fresh members to the cache. The BPEL engine has a feature known as PartnerLink retry which can be configured for each invoke. Thus, any JCA adapter invoke or interaction which throws a ResourceException exception marked as Retryable will make the engine retry the Invoke Database update which will then repopulate the port cache if the Database has become available again: typically immediately the case with RAC.For non-transactional adapters adapterMetadata.supportsLocalTransactionDemarcation == false, such as File adapter, the J2CA connection cache contains only one member. Thus all threads coming through will multiplex over the same CCI Connection handle. The JCA connection cache can be enabled or configured explicitly by using the following bpel.xml partnerlink properties: property name=useJCAConnectionPooltrueproperty Generally, this property is derived from the declared transactional support of the adapter. For example, the File adapter does not use this connection pool because it is multi thread safe, but that can be overridden through the following property: property name=maxSizeJCAConnectionPool500property If the property mentioned in the preceding example is not specified, then the size of the connection pool is assumed to be unbounded. This applies for each partnerlink. property name=lruConnectionMaxIdleAge50000property The maximum age of idle connections in the pool is important because some type of connections hold on to expensive external resources, for example DB shadow processes which is measured in ms, as shown in the following example: property name=lruConnectionCheckInterval10000property Finally, the property mentioned in the preceding example determines how frequently the connection pool should be scanned for idle connections, also measured in ms. The following is a code snippet of the composite.xml file for an inbound polling receive operation referred to as service in the 11g release: service name=poll ui:wsdlLocation=poll.wsdl interface.wsdl 3-10 Oracle Fusion Middleware Users Guide for Technology Adapters interface=http:xmlns.oracle.compcbpeladapterdbDBRetriesApplication XARollbackpoll2Fwsdl.interfacepoll_ptt http:xmlns.oracle.compcbpeladapterdbDBRetriesApplicationXARollbackpoll2F wsdl.interface28poll_ptt29 binding.jca config=poll_db.jca service Note how the composite.xml file links together the WSDL interface the interface.wsdl file, the name of the component which is handling the request the binding.jca file, and the binding information required to invoke a particular call the config file. Hence the JCA Binding Component is registered in SCA as the implementation of the binding.jca file others include binding.ejb and binding.java, while in the 10.1.3 release it was registered as a WSIF provider. In the current release the binding.jca element is in the composite.xml file, which explicitly indicates that the JCA Binding Component is handling the invoke activity. Whereas in the 10.1.3 release you had to look at the concrete binding in the WSDL to see whether it was an adapter invoke or not, as shown in the following example: binding name=invokeService_binding type=tns:invokeService_ptt jca:binding operation name=merge jca:operation

3.2.3.6 Use Case: Integration with Oracle BPEL Process Manager

From the Partner Link dialog in Oracle BPEL PM, shown in Figure 3–5 , you can access the adapters that are provided with Oracle BPEL PM. Figure 3–5 Partner Link dialog box Click the Define Service icon, shown in Figure 3–6 , to access the Configure Service or Adapter dialog. Figure 3–6 Defining an Adapter Adapter Integration with Oracle Application Server Components 3-11 This dialog enables you to configure the types of adapters shown in Figure 3–7 for use with Oracle BPEL processes. Figure 3–7 Adapter Types When you select an adapter type Oracle AQ Adapter in this example, and then click OK , the Adapter Configuration Wizard - Welcome page appears, as shown in Figure 3–8 . Figure 3–8 The Adapter Configuration Wizard- Welcome Page Click Next, and the Service Name page appears, as shown in Figure 3–9 . You are prompted to enter a name for the service. For this example, AQ Adapter is selected, as shown in Figure 3–7 . When the wizard completes, a WSDL file by this service name appears in the Application Navigator for the BPEL process for this example, named DequeueDemo.wsdl. This file includes the adapter configuration settings you specify with this wizard. Other configuration files such as header properties and files specific to the adapter are also created and displayed in the Application Navigator.