Hi Jozef,
Thank you very much for prompt reply.
Thanks again.
Regards,
Muhammad Bhutto
On Tue, Nov 19, 2013 at 2:51 PM, Jozef Hartinger <jharting(a)redhat.com>wrote:
On 11/19/2013 03:09 AM, Muhammad Bhutto wrote:
Hi All,
Can you please explain me this one, I have confusion which one is better.
1.
Bean<MyBean> bean = (Bean<MyBean>)
beanManager.resolve(beanManager.getBeans(MyBean.class));
MyBean= (MyBean) beanManager.getReference(bean, bean.getBeanClass(),
beanManager.createCreationalContext(bean));
This one gives you a new instance of a client proxy. The client proxy will
forward method calls to the current contextual instance of a particular
context. You can therefore obtain the proxy once and keep it and the method
calls will be invoked on the current instance (e.g. current request). It is
also useful if the contextual instance is not serializable - the client
proxy will be and will reconnect after you deserialize it.
2.
Bean<MyBean> bean = (Bean<MyBean>)
beanManager.resolve(beanManager.getBeans(MyBean.class));
MyBean bean = beanManager.getContext(bean.getScope()).get(bean,
beanManager.createCreationalContext(bean));
This obtains the target instance without a client proxy. You may still see
a Weld's proxy in the class name but that is an enhanced subclass that
provides interception and decoration. If the bean is not intercepted nor
decorated this will be a plain instance of the given bean.
Usually (1) is more suitable unless you have a special use-case where you
need to access the target instance directly (e.g. to access its fields).
As i know BeanManager.getReference() always creates a whole new proxy
instance, while the Context.get() reuses an existing proxy instance if
already created before.
Is BeanManager.getReference() is more use full than Context.get() ??
Thanks
Muhammad Asif Bhutto
_______________________________________________
weld-dev mailing
listweld-dev@lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/weld-dev