Wednesday Dec 02, 2009

Java EE Connector Architecture 1.6 Specification approved!

The final approval ballot for the Connectors 1.6 specification and the Java EE 6 platform closed yesterday and the EC has approved the specification and the platform. As Roberto shared in his blog, the final release happens on December 10 along with the release of the reference implementation, GlassFish v3.

The Connector Architecture in the Java EE platform enables an enterprise application to work with disparate enterprise information systems (EIS), like databases, MoM products, transaction monitors etc.

The Connector 1.6 specification developed through the JSR 322 expert group, builds upon the the earlier Connector 1.5 specification in the following areas:

  • Generic Work Context mechanism: Defined a generic mechanism for propagating contextual information during Work execution. The specification standardizes passing in security, transactional and other quality-of-service parameters from an EIS to a Java EE component during Work execution.
  • Security Work Context: Defined a standard contract that a resource adapter could employ to establish security information(established identity) while submiting a Work instance for execution to a WorkManager, and while delivering messages to message endpoints (MDBs) residing in the application server
  • Ease of Development: Dramatically simplify the development of resource adapters through extensive use of Java language annations, reducing the need to write redundant code and the need for a deployment descriptor, provide better programmatic defaults, etc.
  • Standalone Container Environment: Defined container provider requirements for implementations of the Connector specification that exists outside the Full Java EE Profile.
  • Bean Validation: Defined how resource adapters could leverage the underlying Bean Validation support in Java EE to express their configuration validation requirements.
  • Added Features that enhance QoS and reliability around Connection Management, Work execution etc.

I had provided brief overviews of these features in previous blog entries and presentations. There are more articles/tutorials on the technology coming up in the next few weeks.

I would like to take this opportunity to thank all those who have helped in this version of the specification -- the expert group members of JSR 322, the spec-leads and EG members of related JSRs, the reference implementation (RI) and the technology compatibility kit (TCK) teams and all those from the community who had provided feedback and suggestions on the previous milestone drafts.

Edit: Jagadish Ramu, the Connectors RI lead, blogs about the release here.

Edit: GlassFish v3 is now available and further Aquarium coverage here.

Friday Dec 05, 2008

Connectors 1.6 Public Review available

The JSR 322 expert group has been working hard on defining new features, addressing comments from the public and improving the early draft. We are happy to announce that the Public Review Draft document is now available off the JSR page in JCP. This blog introduces some of the new and noteworthy features that are part of this draft.

Given the short time between Public Draft and Proposed Final Draft, it would be great if you could read the draft and send your feedback to the expert group as soon as you can.

As mentioned above, this draft also addresses early draft related comments that we received from the community and so we encourage you to help us continue that effort by sending your review comments to the JSR comments alias or in this blog.

Some of the major new features in the public review draft are:
  • Ease of Development (EoD) through use of metadata annotations, optional deployment descriptor(ra.xml),better defaults, optional configuration etc.
  • Integration with JSR 303: Bean Validation specification to handle validation requirements of configuration properties in various resource adapter JavaBeans.
  • Support for Distributed Work Processing and Work processing Hints
A detailed changeset is listed in Appendix. I.1 of the specification. Please refer to it while reviewing the changes.

Here is a brief overview of the new features:
  • Ease of Development through metadata annotations: Java EE 5 brought in a huge change in the enterprise application programming model through the introduction of EoD enhancements such as the use of metadata annotations, better defaults, removal of boilerplate code etc. These improvements simplified component development to a great extent while still retaining the richness and the power of the technology.  
Since the Conectors technology was not updated as part of Java EE 5, the ease with which resource adapters can be developed has not improved since J2EE 1.4. However, as Roberto points out, EoD is an ongoing goal in Java EE 6 and improvements are made to the Connectors spec as well.

The spec now defines (in Chapter 18)  a simplified API for development of resource adapters. The goal of the API was to simplify the development of resource adapter implementations for programmers who are just starting with resource adapters, or developing resource adapters of small to medium complexity.Through the introduction of new metadata annotations, the specification now reduces or completely eliminates the need to deal with a deployment descriptor(ra.xml) in many cases.
The new annotations defined in the spec are:
  • @Connector: specify that the JavaBean is a resource adapter JavaBean. Used to provide metadata about the capabilities provided by the resource adapter. It is optional to provide a JavaBean implementing the ResourceAdapter interface. [However, there are scenarios where a resource adapter may want to provide an implementation -- see Section 18.4.1]
  • @ConfigProperty: specifies to the application server, that the decorated property is a configuration property for that JavaBean. Configuration Properties are now auto-discoverable by the application server and hence need not specified using the deployment descriptor.
  • @ConnectionDefinition(s): defines a set of connection interfaces and classes pertaining to a particular connection type (identical to the role played by the connection-definition element in ra.xml).
  • @Activation: designate a JavaBean as an ActivationSpec JavaBean
  • @AdministeredObject: designates a JavaBean as an administered object.

Through the use of these annotations and other improvements such as the auto-discovery of configuration properties, the use of JSR 303 to express validation constraints etc, we hope resource-adapter development would be radically simplified. Please see Chapter 18 for more information on these annotations and code samples on how then can be used.

[Please note: Metadata annotations and some new usecases (Resource injection, definition of a component naming context (ENC) for resource adapters etc) are still being actively discussed in the Expert group and hence these interfaces must be considered as work-in-progress and may go through changes in the next phases of the specification. -- We would also love to hear from the community on their thoughts on the proposed annotations and EoD capabilities defined so far.]

As the reference implementation is developed, I will follow up with more samples showcasing the use of annotations while building connectors. So, stay tuned.

  • JavaBean Validation: The Bean Validation (JSR 303) specification is "defining a meta-data model and API for JavaBean validation based on annotations, with overrides and extended meta-data through the use of XML validation descriptors." The Connector spec now allows its JavaBeans such as ResourceAdapter, ManagedConnectionFactory, ActivationSpec, AdministeredObject and InteractionSpec to be decorated with the Bean Validation constraint annotations. This now provides the RA developer a richer and standard way of expressing their constraints and also get the configuration of a JavaBean validated prior to use. Please see Section in the spec for more information
  • Distributed Work Processing: In deployment runtimes which span multiple VMs/hosts, it is useful to have Work instances that were submitted by a resource adapter to  a local WorkManager to be distributed  to a different remote WorkManager, for reasons of scaling, performance etc. The specification defines a mechanism to allow such distributed Work processing. See Section 10.3.11 for more information on this
  • Work processing hints: The specification also now enables a resource adapter to pass quality-of-service metadata to the WorkManager during the submission of a Work instance. The WorkManager implementation of the application server may then use the specified hints to control the execution of the Work instance. For those who followed the InflowContext mechanism defined in the Early Draft, the propagation of QoS hints is defined as a standard InflowContext, HintsInflowContxt. See Section 11.7 for more information on this.



« April 2014