Java EE Connector Architecture 1.6 introduces a set of annotations to minimize the need for deployment descriptors.
The @Connector annotation can be used by the resource adapter developer to specify that the JavaBeans component is a resource adapter JavaBeans component. This annotation is used for providing metadata about the capabilities of the resource adapter. Optionally, you can provide a JavaBeans component implementing the ResourceAdapter interface, as in the following example:
@Connector( description = "Sample adapter using the JavaMail API", displayName = "InboundResourceAdapter", vendorName = "My Company, Inc.", eisType = "MAIL", version = "1.0" ) public class ResourceAdapterImpl implements ResourceAdapter, java.io.Serializable { ... ... }
The @ConnectionDefinition annotation defines a set of connection interfaces and classes pertaining to a particular connection type, as in the following example:
@ConnectionDefinition( connectionFactory = samples.mailra..api.JavaMailConnectionFactory.class, connectionFactoryImpl = samples.mailra.ra.outbound.JavaMailConnectionFactoryImpl.class, connection = samples.connectors.mailconnector.api.JavaMailConnection.class, connectionImpl = samples.mailra..ra.outbound.JavaMailConnectionImpl.class ) public class ManagedConnectionFactoryImpl implements ManagedConnectionFactory, Serializable { ... ... @ConfigProperty(defaultValue = "UnknownHostName") public void setServerName(String serverName) { ... } }
The @AdministeredObject annotation designates a JavaBeans component as an administered object.
The @Activation annotation contains configuration information pertaining to inbound connectivity from an EIS instance, as in the following example:
@Activation( messageListeners = { samples.mailra.api.JavaMailMessageListener.class } ) public class ActivationSpecImpl implements javax.resource.spi.ActivationSpec, java.io.Serializable { ... @ConfigProperty() // serverName property value private String serverName = new String(""); @ConfigProperty() // userName property value private String userName = new String(""); @ConfigProperty() // password property value private String password = new String(""); @ConfigProperty() // folderName property value private String folderName = new String("Inbox"); // protocol property value // Normally imap or pop3 @ConfigProperty( description = "Normally imap or pop3" ) private String protocol = new String("imap"); ... ... }
The @ConfigProperty annotation can be used on JavaBeans components to provide additional configuration information that may be used by the deployer and resource adapter provider. The preceding example code shows several @ConfigProperty annotations.
The specification allows a resource adapter to be developed in mixed-mode form, that is the ability for a resource adapter developer to use both metadata annotations and deployment descriptors in applications. An application assembler or deployer may use the deployment descriptor to override the metadata annotations specified by the resource adapter developer.
The deployment descriptor for a resource adapter is named ra.xml. The metadata-complete attribute defines whether the deployment descriptor for the resource adapter module is complete or whether the class files available to the module and packaged with the resource adapter need to be examined for annotations that specify deployment information.
For the complete list of annotations and JavaBeans components introduced in the Java EE 6 platform, see the Java EE Connector Architecture 1.6 specification.