Hi Arun!
There is nothing to worry. This usually happens at the time some proxy instance
gets created for your class.
It is generally considered a _very_ bad idea to do initialisation and stuff in
class construction code.
The reason is that Weld, OWB, various EJB containers, etc not only use interface
proxying (as java.lang.reflect.Proxy does) but also provide class proxying. This
is basically a kind of 'extends' of the class you proxy, and while initialising
the proxy it therefor also needs to initialise all the superclass chain. Thus
your constructor will get called here also.
It's basically always a good idea with CDI managed beans (same is true for EJBs
or objects managed by lots of other DI containers) to perform initialisation in
a @PostConstruct or @Inject annotated method.
E.g.: it's not a good idea to have something like
private Map x = new ConcurrentHashMap();
because creating a ConcurrentHashMap is not a cheap operation!
It would be much better to
private Map x;
@PostConstruct
protected void init() {
x = new ConcurrentHashMap();
}
LieGrue,
strub
----- Original Message ----
From: Arun Gupta <arun.p.gupta(a)oracle.com>
To: Pete Muir <pmuir(a)redhat.com>
Cc: weld-dev(a)lists.jboss.org
Sent: Thu, July 22, 2010 8:39:03 PM
Subject: Re: [weld-dev] Bean created twice
Thanks posted
http://www.seamframework.org/Community/BeanCreatedTwice
-Arun
On 7/22/10 3:35 PM, Pete Muir wrote:
> Hi Arun
>
> Please post on the forum at
http://www.seamframework.org/Community/WeldUsers
- this list for development discussions.
>
> Thanks
>
> On 22 Jul 2010, at 19:26, Arun Gupta wrote:
>
>> For the attached simple application (WAR and source), accessing
http://localhost:8080/HelloConversation/faces/index.xhtml creates ShoppingCart
twice. Any idea ?
>>
>> Utility class is ...
>>
>> @Named("util")
>> @ConversationScoped
>> public class ConvUtil implements Serializable {
>> @Inject ShoppingCart cart;
>>
>> public ShoppingCart getCart() {
>> return cart;
>> }
>> }
>>
>> index.xhtml has ...
>> <h:inputText value="#{util.cart}"
title="name" id="name"
>> required="true" />
>>
>>
>> ShoppingCart is ...
>>
>> @Named
>> @ConversationScoped
>> public class ShoppingCart implements Serializable {
>> public ShoppingCart() {
>> System.out.println("Creating shopping cart ..." +
Calendar.getInstance().get(Calendar.MILLISECOND));
>> }
>>
>> }
>>
>> At least the log messages like:
>>
>> INFO: Creating shopping cart ...264
>> INFO: Creating shopping cart ...265
>>
>> are printed.
>>
>> Tried changing the scope of ShoppingCart to RequestScoped but still the
same. Changed @Named to @javax.faces.bean.ManagedBean on ShoppingCart.
>>
>> What am I not doing correctly ?
>>
>> -Arun
>> --
>> Blog:
http://blogs.sun.com/arungupta
>> Twitter:
http://twitter.com/arungupta
>>
>>
<HelloConversation.zip><HelloConversation.war>_______________________________________________
>> weld-dev mailing list
>> weld-dev(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/weld-dev
>
--
Blog:
http://blogs.sun.com/arungupta
Twitter:
http://twitter.com/arungupta
_______________________________________________
weld-dev mailing list
weld-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/weld-dev