cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marko <mpistot...@gmail.com>
Subject Shared cache
Date Wed, 18 Oct 2006 09:20:00 GMT
Hi, list!

I have a problem setting up a shared cache between two JVMs. The changes
in the JVM A don't all get propagated to JVM B. Here's the code:

JVM A:

        // The following doesn't trigger the remote snapshot event...
        DataContext context = DataContext.createDataContext();
        Dbe001 e001 = (Dbe001)context.createAndRegisterNewObject(Dbe001.class);
        e001.setA002(777);
        context.commitChanges();

        // While this does...
        SelectQuery query = new SelectQuery(Dbe001.class);
        List<Dbe001> artists = context.performQuery(query);
        artists.get(0).setA002(237846);
        context.commitChanges();

JVM B:

            SnapshotEventListener customListener = new DCSnapshotEventListener();

            DataDomain domain = Configuration.getSharedConfiguration()
                    .getDomain();

            domain.getEventManager().addListener(customListener,
                    "snapshotsChanged", SnapshotEvent.class,
                    domain.getSharedSnapshotCache().getSnapshotEventSubject(),
                    domain.getSharedSnapshotCache());

            System.in.read();


class DCSnapshotEventListener
        implements SnapshotEventListener
{
    public void snapshotsChanged(SnapshotEvent event)
    {
        Map<ObjectId, DataRow> diff = event.getModifiedDiffs();
        System.err.println(diff);
    }
}


The data object looks like this:

public class _Dbe001 extends org.apache.cayenne.CayenneDataObject {

    public static final String A002_PROPERTY = "a002";

    public static final String A001_PK_COLUMN = "a001";

    public void setA002(Integer a002) {
        writeProperty("a002", a002);
    }
    public Integer getA002() {
        return (Integer)readProperty("a002");
    }


}


And the database entity is as follows:

<data-map project-version="2.0">
        <db-entity name="dbe001">
                <db-attribute name="a001" type="INTEGER" isPrimaryKey="true"
isMandatory="true"/>
                <db-attribute name="a002" type="INTEGER"/>
        </db-entity>
        <obj-entity name="Dbe001" className="Dbe001" dbEntityName="dbe001">
                <obj-attribute name="a002" type="java.lang.Integer"
db-attribute-path="a002"/>
        </obj-entity>
</data-map>


The transport layer is JGroups with default settings. Any ideas?


Mime
View raw message