Eike Stepper wrote:
"Stephen McConnell" <[EMAIL PROTECTED]> schrieb im Newsbeitrag news:[EMAIL PROTECTED]
Eike Stepper wrote:
"Stephen McConnell" <[EMAIL PROTECTED]> schrieb im Newsbeitrag news:[EMAIL PROTECTED]
Eike Stepper wrote:
hi,
i'd like to bring that topic back to your attention:
am i really forced to carry a resolved proxy of a transient component as long as i want the component be prevented from disposal?
Lets get back to an underlying question. The transient lifestyle is intended for create-use-forget style components - however - everything seems to indicate that your using transients in order to achieve some specific objective. Can you fill me in?
hmm, your counter question makes me suspicious again ;-)
:-)
is there another big concept that i 'm missing? i thought it's quite natural to have singleton classes like let' say a SessionManager. but it's even more natural to have many non-singleton classes (you call them transient) like a Session. it's most vital for most abstractions to simultaneously have multiple instances with different states. if i want such an abstraction to be implemented as a component, i have to declare it transient, do i not?
Short answer - no.
What you seem to be describing is singleton lifestyle. Keep in mind that the notion of "single" refers to a single identifiable deployment scenario. Consider the following two component declarations (and assume that the underlying component type is a singleton):
<component name="widget" class="IdentifiableDemo"/> <component name="gizmo" class="IdentifiableDemo"/>
The above declarations will result in the establishment of two instances - widget and gizmo, each with their own state. As far as Merlin is concerned both component declarations represent unique deployment scenario (doing a widget.equals( gizmo ) will return false). Programatically you can construct the deployment models for widget and gizmo by creating the profile on-the-fly, add it to the container, commission the returned model and instantiate it using resolve.
Does that make sense?
yes ;-)) it would also solve the problem that my components all share the same name, what makes log-analysis annoying...
how exactly is "creating the profile on-the-fly" done?
Just create an instance of ComponentProfile and add this to your container. Without looking at the docs it should be something like:
String name = "widget-" + ( n++ );
String classname = "IdentifiableDemo";
ComponentProfile profile = new ComponentProfile( name, classname );
ComponentModel model =
(ComponentModel) m_containerModel.addModel( profile );
model.commission();
IdentifiableDemo widget = model.resolve();Also - take a look at the javadoc for ComponentProfile to get an idea of the sorts of things you can do with the class.
D:\dev\avalon\merlin\target\docs\api\org\apache\avalon\composition\data\ComponentProfile.html
Cheers, Steve.
--
|---------------------------------------| | Magic by Merlin | | Production by Avalon | | | | http://avalon.apache.org | |---------------------------------------|
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
