Hello, i'm working with GAE too, may i clarify something?

Transaction tx = pm.currentTransaction();

This is a transaction of every session?
If no, how may i handle this situation:

When one user is accessing a page i must return data from one entity from
the datastore, then close it from returning to any other users. What can be
done here?

-- Tony.



On Mon, Apr 5, 2010 at 12:08 AM, Ian Marshall <ianmarshall...@gmail.com>wrote:

>
> I have a static initialisation method and two static data members as
> follows:
>
>  public class DataExchange
>  {
>    private static final Object objLockPMF = new Object();
>    private static volatile PersistenceManagerFactory g_pmf = null;
>
>    /**
>     * If this class's static singleton
> <code>PersistenceManagerFactory</code>
>     * is <code>null</code>, then construct it in a synchronised block of
> code.
>     * @return
>     *   This class's static singleton
> <code>PersistenceManagerFactory</code>.
>     */
>    public static PersistenceManagerFactory getPersistenceManagerFactory()
>    {
>      if (g_pmf == null)
>        synchronized(objLockPMF)
>        {
>          if (g_pmf == null)
>          {
>            loadProperties();    // My method which loads the string
> g_sDatabaseMode
>            g_pmf = JDOHelper.getPersistenceManagerFactory(g_sDatabaseMode);
>          }
>        }
>
>      return g_pmf;
>    }
>  }
>
>
> I then call the above static method when my Wicket application initiates by
> creating a queued task which calls this method fairly immediately but
> asynchronously. I ensure that my home page performs no data exchange, so
> creating the PMF does not delay the showing of the first page.
>
> I also call the above static method at the start of every data exchange.
> There will be nothing to construct unless the queued task has not yet
> finished or GAE has shut the relevant Wicket application instance down. For
> example (which will not be a surprise) when using a transaction:
>
>  PersistenceManager pm =
>   DataExchange.getPersistenceManagerFactory().getPersistenceManager();
>  Transaction tx = pm.currentTransaction();
>
>  try
>  {
>    tx.begin();
>
>    //
>    // Persistence code
>    //
>
>    tx.commit();
>  }
>  finally
>  {
>    try
>    {
>      if (tx.isActive())    // Because of an exception, say
>        tx.rollback();
>    }
>    finally
>    {
>      pm.close();
>    }
>  }
>
>
> Enjoy,
>
> Ian
>
>
>
> intmanch wrote:
> >
> > Hi Ian,
> >
> > Thanks a lot for your response. I use as you PMF, not JPA, that's quite
> > simple and easy to use. Can you give me more details (code snippet) about
> > the initialization of the PMF? Is there any other point to take into
> > consideration for the performance?
> >
> --
> View this message in context:
> http://old.nabble.com/Wicket-GAE-performance-tp28118591p28133464.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

Reply via email to