Since the spec requires a copy to be returned I think the only way to
avoid it is to create a JBoss specific impl. as you suggested in the
previous post.

-- Juha


On Tue, 20 Jan 2004, Scott M Stark wrote:

> Is this enough as there are several places copies are being introduced:
>
> - AbstractMBeanInvoker.preRegister
>    + This calls initAttributeContexts(info.getAttributes());, which
> makes a copy of
>    the MBeanAttributeInfo[]
> - ModelMBeanInvoker.initAttributeContexts
>    + This calls ctx.setDescriptor(info.getDescriptor()); which passes in
> a copy of
>    Descriptor from the copy of the MBeanAttributeInfo obtained from the
> MBeanInfo.
>
> Therefore, all attribute sets are operating on copies of the
> MBeanAttributeInfo. Is
> adding info.setDescriptor(...) to the
> AbstractMBeanInvoker.setAttribute(Attribute)
> finally going to be enough? It looks like this might, I'll test it out.
>
> There seem to be an excessive number of copies being made tough, and the
> same
> descriptor synchronization is also required on operations. Is there a
> way to
> reduce the number of copies being created?
>
> xxxxxxxxxxxxxxxxxxxxxxxx
> Scott Stark
> Chief Technology Officer
> JBoss Group, LLC
> xxxxxxxxxxxxxxxxxxxxxxxx
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Juha
> Lindfors
> Sent: Tuesday, January 20, 2004 1:25 PM
> To: [EMAIL PROTECTED]
> Subject: Re: [JBoss-dev] Too many copies of model mbean info objects
>
>
> If I follow what you're trying to do correctly, the reason for the bug
> is that the context map descriptors are updated but the info reference
> we return from getMBeanInfo is not,
>
> in AbstractMBeanInvoker, for setters there's a finally block at the end
> that updates the context maps on the return of the invocation:
>
>
>       // TODO: should be fixed by adding invocation return value object
>       finally
>       {
>          ctx.setDescriptor(invocation.getDescriptor());
>          TCLStack.pop();
>       }
>
>
> getMBeanInfo() returns the metadata through invoker.getMetaData() call
> which returns the 'info' reference from AbstractMBeanInvoker
>
>       /**
>        * The metadata describing this MBean.
>        */
>       protected MBeanInfo info                        = null;
>
> Which has not been updated with the change.
>
> So, is this what needs to be done:
>
>       finally
>       {
>          ctx.setDescriptor(invocation.getDescriptor());
>          info.setDescriptor(invocation.getDescriptor(), "attribute");
>          TCLStack.pop();
>       }
>
> Or did I lose track of what you're trying to do?
>
>
> -- Juha
>
>
>
> -------------------------------------------------------
> The SF.Net email is sponsored by EclipseCon 2004
> Premiere Conference on Open Tools Development and Integration
> See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
> http://www.eclipsecon.org/osdn
> _______________________________________________
> JBoss-Development mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-development
>
>




-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
JBoss-Development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to