Strengthening the Alliance Between Java EE and SCA
The Open SOA collaboration has just published a 0.9 draft of the SCA Java EE Integration specification. This specification defines the integration of SCA and Java EE within the context of a Java EE application, the use of Java EE components as service component implementations, and the deployment of Java EE archives either within or as SCA contributions. It defines a model of using SCA assembly in the context of a Java EE runtime that enables integration with Java EE technologies on a fine-grained component level as well as use of Java EE applications and modules in a coarse-grained large system approach.
The specification defines support for the following scenarios of Java EE and SCA integration:
- Consumption of SCA-exposed services from Java EE components. The specification defines how a web component (a servlet or a JSP) can consume a service implemented by a SCA service component.
- Usage of Session Beans as Service Component Implementations. The specification defines how to use a session bean as service component implementations. Using RMI, JMS and web services traffic.
- Exposure of Enterprise Applications into an SCA domain. The specification defines relationships between SCA and Java EE Assembly models and describes a deployment model for SCA contributions that provides cross-enterprise application assembly capabilities when layered over Java EE.
- Usage of Recursive SCA Assembly in Enterprise Applications. The specification describes how SCA Assembly can be used to provide means for defining sophisticated application assembly for enterprise applications.
- Deployment of SCA Components as a Part of a Java EE application. The specification defines a deployment model for components implemented in “foreign” technologies (for example BPEL) as part of a Java EE application, taking advantage of whatever tooling and infrastructure support exists for the deployment and life cycle management of Java EE applications.
- Usage of Java EE Archives as Service Component Implementation. The specification defines creation of high level SCA applications that contain multiple Java EE archives, through wiring of Java EE archives to each other and to components implemented using other technologies. This use-case requires a high-level view of the Java EE application as a single SCA component, providing services and consuming references as a single component.
Additionally, support for SCA annotations in EJB classes or session bean interfaces is defined.
This specification aims to further strengthen relationships between Java EE and SCA, putting SCA in a better position for becoming a prevalent technology for SOA implementation in Java EE. One of the major motivations for doing so is that currently, the Java community is still split between SCA and JBI. The JSR 316: Java Platform, Enterprise Edition 6 (Java EE 6) Specification is still considering both, but has not made a definite decision which way to go.While the majority of vendor’s application servers support SCA, open source implementation are still mostly based on JBI.
It's not JBI versus SCA
The two can be complementary. An SCA system can be built atop a Java EE platform augmented by JBI.
JBI is all about pluggability in the infrastructure not directly the creation of service networks.
SCA: Society for Creative Anachronism? Scottish Canoe Association? Software Communications Architecture? Service Component Architecture?