Hi Jonathan,

Thank you for your study and for your time. The solution was simple as it can 
be and I could knock my head against the wall that I didn't see the problem 
yesterday.
All works correcly, but I missed something as I investigated the problem. The 
session bean I wanted to access was within a stateless session bean. So for 
that it's clear that @PostConstruct of the stateful reference is only invoked 
once inside a stateless session bean. My JNDI lookups were only at the 
stateless bean.

Thank you again for your time,
Marco

-----Ursprüngliche Nachricht-----
Von: Jonathan Gallimore [mailto:[email protected]]
Gesendet: Donnerstag, 26. Februar 2009 00:06
An: [email protected]
Betreff: Re: Are stateful session beans cached?

I investigated this using the simple-stateful example, and I added these 
methods to CounterImpl:

    public CounterImpl() {
        System.out.println("Construct");
    }

    @PostConstruct
    void postConstruct() {
        System.out.println("PostConstruct");
    }

and added a simple loop to the test:

    public void testCounterViaRemoteInterface() throws Exception {
        for (int i = 0; i < 10; i++) {
            Object object = initialContext.lookup("CounterImplRemote");

            assertNotNull(object);
            assertTrue(object instanceof CounterRemote);
            CounterRemote counter = (CounterRemote) object;
            assertEquals(0, counter.reset());
            assertEquals(1, counter.increment());
            assertEquals(2, counter.increment());
            assertEquals(0, counter.reset());
        }
    }


The result for me was that both the constructor and PostConstruct method were 
both invoked 10 times.

Are you able to share your client code to give us a better idea of what's going 
on?

Cheers

Jon


[email protected] wrote:
> Hi all,
>
> I have a stateful session bean with a @PostConstruct method.
>
> @Stateful
> public class MyStatefulBeanImpl implements MyStatefulBean {
>
>         public ProcessContextImpl() {
>                 log.info("CREATE NEW MyStatefulBeanImpl ...");
>         }
>
>         @PostConstruct
>         public void init() {
>                 log.info("Init ...");
>                 ...
>         }
>
>
> So now I'm wondering why the post construct is invoked only at the first time 
> I use such kind of stateful session bean.
> A second lookup over JNDI or using of the @EJB annotation in an other SB 
> doesn't call neither the constructor nor the post construct method.
> The logging statement are only once in my whole log file.
>
> I know there is cache for stateless session beans, but is there also one for 
> stateful session beans? Or do I miss something.
>
> Thank you for your help
>
> Marco
>

Reply via email to