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.