Re: Problems with caching

From: Marcin Skladaniec (marci..sh.com.au)
Date: Thu Feb 09 2006 - 16:39:15 EST

  • Next message: Andrus Adamchik: "Re: Problems with caching"

    Caching as for now works only with queries with name, and that is all
    NamedQueries and SelectQuery initialized with queryWithParameters(Map
    params, boolean pruneMissing) (did I miss something ?). I think that
    exception telling that is consumed somewhere and never displayed.

    Cheers
    Marcin

    On 10/02/2006, at 2:53 AM, Ayhan Kondoz wrote:

    > Hi,
    >
    > i am trying to use the caching feature of cayenne but i can't get
    > it to
    > work
    > properly. I have 2 different problems but first a quick explanation of
    > my
    > environment.
    >
    > I have multiple servers and each of them has it's own tomcat5
    > installation.
    > Within the tomcat5 I have an axis webservice that uses cayenne
    > 1.1.3 to
    > interface with a database and provides SOAP services.
    >
    > Each SOAP Service uses a similar logic.
    > (a) Get the customer object, using a SelectQuery.
    > (b) Perform the job using accounts and other object that are
    > related to
    > this customer.
    >
    >
    > What I would like to have is something like this
    > (1) Cacheing of the SelectQuery (used in step (a))to prevent
    > unnecessary
    > database IO for subsequent SOAP calls with the same customer.
    > (2) Caching of objects that have a relationship to the customer.
    > Meaning
    > that if the first SOAP call accesses the accounts of a customer
    > subsequent SOAP calls should NOT read them from the database
    > again.
    > The
    > accounts should be cached along with the customer and calls to
    > Customer().getAccount() should read the accounts from cache.
    > (3) Changes made on one Server should be send to all other servers so
    > that
    > Objects that are cached can be refreshed.
    >
    >
    > The first objective is easy and I had no problems with it.
    >
    > Expression exp = Expression.fromString("cid=" + cid);
    > SelectQuery query = new SelectQuery(Customer.class, exp);
    > query.setName("Customer"+cid);
    > query.setCachePolicy(GenericSelectQuery.SHARED_CACHE);
    > query.setRefreshingObjects(false);
    > query.addPrefetch("accounts");
    >
    > It is the second and third objective I am having problems with. No
    > matter what I try the snapshot events are not relayed to the other
    > servers.
    >
    > My cayenne.xml looks like this:
    >
    > <property name="cayenne.JavaGroupsBridge.mcast.port" value="42000"/>
    > <property name="cayenne.DataDomain.validatingObjectsOnCommit"
    > value="true"/>
    > <property name="cayenne.DataRowStore.remote.notify" value="true"/>
    > <property name="cayenne.DataDomain.sharedCache" value="true"/>
    > <property name="cayenne.JavaGroupsBridge.mcast.address"
    > value="228.1.1.5"/>
    > <property name="cayenne.DataRowStore.EventBridge.factory"
    > value="org.objectstyle.cayenne.event.JavaGroupsBridgeFactory"/>
    >
    > JavaGroups seems to work fine, at least the McastReceiverTest and
    > McastSenderTest from the JavaGroups documentation works.
    > Nevertheless the snapshot events do not reach the other servers.
    >
    > Ideas? Comments?
    >
    > Thanks
    > Ayhan Kondoz



    This archive was generated by hypermail 2.0.0 : Thu Feb 09 2006 - 16:39:18 EST