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