Do not rely on one piece of literature. The EJB spec clearly states that CMRs must use local interfaces. Read section 10.3.2 of the EJB 2.0 spec before ranting.
James Hicks -----Original Message----- From: A mailing list for Enterprise JavaBeans development [mailto:[EMAIL PROTECTED] On Behalf Of Janne Sent: Friday, August 15, 2003 5:03 AM To: [EMAIL PROTECTED] Subject: CMR & remote interface blues I have just spent a while scratching my head on CMR & Local interfaces, initially not knowing that CMR methods should use local interfaces. Partly because WL6.1 works without complaining with CMR & remote interfaces as long as they are 1:1....and partly because I'm sure that a previous version of mastering EJB II (downloadable at theserverside) did not mention local interfaces with CMR at all! Now, I downloaded the PDF again and checked that there is a info box about the subject (either a new one, or one that I missed previously). It goes to explain: "A common theme throughout this book has been to always use local interfaces when possible. This is especially true for entity beans, and has a big impact on relationships. Specifically, if you decide for some bizarre reason to use remote interfaces with entity beans, then - You must not expose get/set methods for relationship fields to remote clients. Doing so creates problems because, for example, the client does not have access to the container-implemented collection interface. - Your entity bean can only have unidirectional relationships with other entity beans. The lack of local interface prevents other entity beans from having relationship with you. " OK, the information may be there, but why not state it as clearly as O'reilly's book for example: "It is important to understand that although entity beans may have both local and remote interfaces, a CMR field can use only the enity bean's local interface when persisting a relationship." Also, the fact that the examples contain methods that at least look exactly like they would operate on remote interfaces public abstract Order getOrder(); public abstract void setOrder(Order order); is bound to confuse the reader. Just had to rant. ======================================================================== === To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff EJB-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help". =========================================================================== To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff EJB-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help".