Lets say I have a persistent java object called Company. For now, I am not going to specify whether this is an entity bean, and JDO object, or an object persisted through straight jdbc.
Lets say my application makes some changes to that Company. I want the changes copied to many other systems. I guess they call this data-level EAI. Is there any tool or framework out there that facilitates this, by, for example, generating an XML message containing the changes I made to the object?
Now for the concrete problem statement! Currently I am using straight JDBC. To support this EAI kind of thing, I currently have to go through this process just before I commit the change to the company:
1 Read the company from the datastore to get the "before" picture.
2 Commit all changes to my company instance
3 Compute the field-by-field differences between the "before" company and the "now" company.
4 Generate an XML message containing the differences.
5 Put this message in a queue for dissemination to interested systems
I could imagine something like JDO or entity beans performing 1,3 and 4? I know some entity bean implementations (weblogic 6.1 for sure) internally know of the changes, because they issue SQL update statements only for the columns that have changed.
I could imagine that I could register a "CommitListener" to the PersistenceManager in the case of JDO and maybe to the container itself in the entity bean case. Each registered CommitListener would get an XML message containing the changes to all objects involved in the transaction in delta format.
In short, please let me know how you handle this ;-)