|Michael Rowley||Sep 25, 2007 3:31 pm|
|Barack, Ron||Oct 4, 2007 2:30 am|
|Michael Rowley||Oct 4, 2007 6:30 am|
|Peshev, Peter||Oct 5, 2007 12:12 am|
|Simon Nash||Nov 1, 2007 10:13 am|
|Blohm, Henning||Nov 1, 2007 11:15 am|
|Simon Nash||Nov 2, 2007 3:17 am|
|Mike Edwards||Nov 5, 2007 2:46 am|
|Michael Rowley||Nov 29, 2007 12:19 pm|
|Peshev, Peter||Nov 29, 2007 1:31 pm|
|Michael Rowley||Nov 30, 2007 4:45 pm|
|Mike Edwards||Dec 4, 2007 7:22 am|
|David Booz||Dec 4, 2007 12:59 pm|
|Michael Rowley||Dec 4, 2007 5:07 pm|
|Michael Rowley||Dec 4, 2007 5:11 pm|
|David Booz||Dec 4, 2007 6:37 pm|
|Mike Edwards||Dec 5, 2007 1:52 am|
|Mike Edwards||Dec 5, 2007 1:58 am|
|David Booz||Dec 5, 2007 5:35 am|
|Mike Edwards||Dec 5, 2007 5:57 am|
|Blohm, Henning||Dec 5, 2007 7:05 am|
|Peshev, Peter||Dec 6, 2007 1:05 am|
|Michael Rowley||Dec 6, 2007 5:18 am|
|Mike Edwards||Dec 6, 2007 9:07 am|
|Peshev, Peter||Dec 7, 2007 12:58 am|
|Peshev, Peter||Dec 7, 2007 2:29 am|
|Michael Rowley||Dec 7, 2007 7:55 am|
|Mike Edwards||Dec 7, 2007 8:50 am|
|Subject:||RE: [sca-j] ISSUE 4 - Dependency reinjection|
|From:||Michael Rowley (mrow...@bea.com)|
|Date:||Dec 4, 2007 5:11:40 pm|
And tagging on a few more questions:
1) I presume that the use of setter based injection would allow for
concurrency serialization by the component implementation so that it could
stabilize it's use of references. This brings up an interesting question;
is there (or should there be) some linkage between the lifecycle of the
target service and these references? Just because a ref target has been
altered, does not mean that the target service is gone. It's the lifecycle
of that target service which will determine how long a reference remains
usable after a wiring change occurs. Just raising the question for now
because it will affect all the component's whose references can't be
[MR: I'm sorry, but I don't follow you.]
2) I'm curious about your introduction of InvalidServiceException. We
already have ServiceUnavailableException. I think there's room to clarify
the wording of SUE to make room for ISE.
[MR: I think that a service that has been correctly identified, but isn't currently available is quite different from a service that is incorrectly identified (it isn't in the logical domain). As such, I think it deserves a different exception.]
3) +1 to Mike E.
[MR: No objection from me.]
STSM, SCA and WebSphere Architecture
Co-Chair OASIS SCA-Policy TC
"Distributed objects first, then world hunger"
Poughkeepsie, NY (845)-435-6093 or 8-295-6093
12/04/2007 10:22 <sca...@lists.oasis-open.org>
RE: [sca-j] ISSUE 4 - Dependency
Thanks for the proposal. It is good to have something concrete as it help
Please help me understand the rationale for treating Composite-scoped
differently from Conversation scoped components.
Both types of component have an extended lifecycle. Both may easily have a
that spans changes in configuration that affects their references, even
references are not conversational and do not in themselves involve some
lifetime. Why is it justified to change references in the one case and not
in the other case?
Strategist - Emerging Technologies, SCA & SDO.
Co Chair OASIS SCA Assembly TC.
IBM Hursley Park, Mail Point 146, Winchester, SO21 2JN, Great Britain.
Phone & FAX: +44-1962-818014 Mobile: +44-7802-467431
"Michael Rowley" <mrow...@bea.com> wrote on 29/11/2007 20:19:28:
I took an action item to make a more specific proposal for
dependency reinjection. Here it is:
References MAY be reinjected after the initial creation of a
component due to a change in wiring that has occurred since the
component was initialized. In order for reinjection to occur, the
following MUST be true:
- The component MUST be composite-scoped.
- The reference MUST use either field-based injection or setter
injection. References that are injected through constructor
injection MUST NOT be changed.
- If the reference has a conversational interface, then a
conversation MUST NOT be active at the time of the reinjection.
If processing in reaction to a change in a reference is necessary,
then setter injection should be used, with code in the setter method
that does the proper processing in reaction to a change.
Components with any scope other than the composite scope MUST NOT
have references reinjected. If an operation is called on a
reference where the target of that reference is no longer valid,
then InvalidServiceException MUST be thrown.
In cases where changes to a reference are not valid, the reference
as accessed through the component context also MUST NOT change.
More precisely, the ComponentContext.getService() and
getServiceReference() methods MUST return the same reference target
as would be accessed through injection. However, the
ServiceReference that is returned by getServiceReference() never
changes its target. If the wiring of a composite component causes a
reference to be reinjected, any ServiceReference object that was
acquired before the reinjection will still correspond to the target
prior to the change. If the target service for a ServiceReference
ever becomes invalid, then attempts to call business methods through
that ServiceReference MUST throw InvalidServiceException.
The rules for reference reinjection also apply to references with a
0..N or 1..N. This means that in the cases listed above where
reference reinjection is not allowed, the array or Collection for
the reference MUST NOT change their contents. In cases where the
contents of a reference collection MAY change, then for references
that use setter injection, the setter method MUST be called for any
change to the contents. The injected collection MAY be the same
collection object as is currently used by the component, but with
some change to its contents.
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
To unsubscribe from this mail list, you must leave the OASIS TC that
generates this mail. You may a link to this group and all your TCs in OASIS