1 Primary Considerations for Developing Custom Technology Adapters

This chapter discusses the aspects that you must consider before you begin developing custom technology adapters.

Oracle JCA-compliant adapters enable you to integrate your business applications, and provide a robust, lightweight, highly-scalable and standards-based integration framework for disparate applications to communicate with each other. You can create your own Custom Adapters and runtime components, based on your own requirements.

The Custom JCA Adapter wizard is a generic adapter wizard that reads and displays its interaction/activation specs, properties, and default values from a configuration file. The user employs the design time facilities of JDeveloper to use the wizard, select the specs, override the default property values, and add new properties to the adapter.

This means that the Custom JCA Adapter must obtain information from the user and use that information to create a WSDL file and a JCA file containing the interaction/activation specs and properties that are required by the runtime adapter.

1.1 Preliminary Decision: Uni-Directional or Bidirectional Adapter?

When creating a Custom Adapter, the first decision you need to make is to decide if the Custom Adapter will be uni-directional or bidirectional-will it support invocation for outbound (synchronous) operations-that is, through the JCA Common Client (CCI) API. Alternatively, should the Adapter support both outbound and inbound (asynchronous) message flow?

Once you make this decision and then create a Custom Adapter that supports outbound and inbound message flow, it is important to know that:

  • To support outbound message flow, the adapter needs to define one or more implementations of javax.resource.cci.InteractionSpec.

  • To support inbound message flow, the adapter needs to define one or more implementations of javax.resource.spi.ActivationSpec.

Each of these specs (Java Beans) provide metadata as name/value pairs that define a specific operation that your adapter intends to support.

For example, for an FTP adapter, the interaction spec exposes a bean property named Directory. When the FTP adapter is invoked, the invoker can instruct the adapter to place the payload in a specific directory, by setting the interaction spec property Directory - for example, by setting FtpInteractionSpec.setDirectory("/tmp/receive")

If the adapter supports different kinds or categories of invocations, which each require a different set of properties, you can model each invocation type by a distinct implementation of javax.resource.cci.InteractionSpec.

For example. the adapter might further implement SshFtpInteractionSpec and SSLFtpInteractionSpec, with the first interaction spec supporting the S-FTP protocol and the second interaction spec supporting the FTP/S protocol.

Knowing this information, and the potential use of your Adapter in terms of the operations it supports, is a helpful first step in your customization.

1.2 Purpose

Delving deeper into the Adapters, you should know that the Custom JCA Adapter wizard has several purposes:

  • Customers or third party adapter providers can use the Custom Adapter Wizard "as is" to support their custom runtime adapters. They only need to supply (or extend) the Custom Adapter configuration file (customAdapter-config.xml).

  • Customers and third party adapter providers can extend the Custom Adapter classes if they want to create a more specific adapter (for example, they can change the text to match their adapter)

  • The Custom Adapter wizard is a simple example of how to develop a new adapter wizard (or to convert an old adapter wizard) using the JCA Adapter Framework and hooking into the SCAEndpoint interface. After the SOA jdev extension is installed, the Custom Adapter java source files can be found in <JAVA_HOME>/developer/integration/adapters/samples/custom

Before you learn about creating the Adapter design-time components, you need to understand the screens that make up the default Custom Adapter Wizard.