sca-javacaa-1.1-spec-csd06 15 August 2011
Standards Track Work Product Copyright © OASIS Open 2011. All Rights Reserved. Page 19 of 123
The SCA Runtime MUST ensure that the correct synchronization model is used so that all injected
properties and references are made visible to the component implementation without requiring the
component implementation developer to do any specific synchronization. [JCA40007]
The SCA Runtime MUST NOT invoke Service methods on the component implementation when the
component implementation is in the Injecting state. [JCA40008]
The result of invoking operations on any injected references when the component implementation is in
the Injecting state is undefined.
When the injection of properties and references completes successfully, the SCA Runtime MUST
transition the component implementation to the Initializing state. [JCA40009] If an exception is thrown
whilst injecting properties or references, the SCA Runtime MUST transition the component
implementation to the Destroying state. [JCA40010] If a property or reference is unable to be injected, the
SCA Runtime MUST transition the component implementation to the Destroying state. [JCA40024]
4.2.3 Initializing State
When the component implementation enters the Initializing State, the SCA Runtime MUST call the
method annotated with @Init on the component implementation, if present. [JCA40011]
The component implementation can invoke operations on any injected references when it is in the
Initializing state. However, depending on the order in which the component implementations are
initialized, the target of the injected reference might not be available since it has not yet been initialized. If
a component implementation invokes an operation on an injected reference that refers to a target that has
not yet been initialized, the SCA Runtime MUST throw a ServiceUnavailableException. [JCA40012]
The SCA Runtime MUST NOT invoke Service methods on the component implementation when the
component implementation instance is in the Initializing state. [JCA40013]
Once the method annotated with @Init completes successfully, the SCA Runtime MUST transition the
component implementation to the Running state. [JCA40014] If an exception is thrown whilst initializing,
the SCA Runtime MUST transition the component implementation to the Destroying state. [JCA40015]
4.2.4 Running State
The SCA Runtime MUST invoke Service methods on a component implementation instance when the
component implementation is in the Running state and a client invokes operations on a service offered by
the component. [JCA40016]
The component implementation can invoke operations on any injected references when the component
implementation instance is in the Running state.
When the component implementation scope ends, the SCA Runtime MUST transition the component
implementation to the Destroying state. [JCA40017]
4.2.5 Destroying State
When a component implementation enters the Destroying state, the SCA Runtime MUST call the method
annotated with @Destroy on the component implementation, if present. [JCA40018]
The component implementation can invoke operations on any injected references when it is in the
Destroying state. However, depending on the order in which the component implementations are
destroyed, the target of the injected reference might no longer be available since it has been destroyed. If
a component implementation invokes an operation on an injected reference that refers to a target that has
been destroyed, the SCA Runtime MUST throw an InvalidServiceException. [JCA40019]
The SCA Runtime MUST NOT invoke Service methods on the component implementation when the
component implementation instance is in the Destroying state. [JCA40020]
Once the method annotated with @Destroy completes successfully, the SCA Runtime MUST transition
the component implementation to the Terminated state. [JCA40021] If an exception is thrown whilst
destroying, the SCA Runtime MUST transition the component implementation to the Terminated state.
[JCA40022]