AW: AW: Synchronizing ejb method
Andreas Berg <[email protected]> Fri, 19 May 2006 13:00:51 +0200
| Newsgroups | gmane.comp.java.sun.ejb.general |
|---|---|
| Message-ID | <[email protected]> |
If you quote the spec you should read it very very carefully. "The = container may throw..." is just a recommendation for the container = developer, not a must have. I had to experience this problem in a real = world project, where ATG Dynamo Application Server did not throw such an = exception on concurrent access to a stateful bean. As I said in my first posting there should be no state in a stateless = bean so no need to synchronize. Unless you share the client id = explicitly you will also not get into the situation, that two different = clients access a stateful bean at the same time. To make further discussion easier, Ashwani, you should tell us why you = want to synchronize (is there a state in the instance, some static = state, DB DB state?) and on what object this snychronization should = happen (on EJB instance, on method for all instances, or on some member = or static object?). Regards, Andreas. http://www.andiberg.de/ ________________________________ Von: A mailing list for Enterprise JavaBeans development = [mailto:[email protected]] Im Auftrag von Kalra, Ashwani Gesendet: Freitag, 19. Mai 2006 07:37 An: [email protected] Betreff: Re: AW: Synchronizing ejb method You are right John, It just got out of my mind that batch process is not = a web client. =20 Thanks Ashwani ________________________________ From: Johan Eltes [mailto:[email protected]]=20 Sent: Friday, May 19, 2006 11:03 AM To: Kalra, Ashwani Cc: [email protected] Subject: Re: AW: Synchronizing ejb method I don't think the batch and the clients will get th same session id. = That's the whole idea of stateful session beans - that each client gets = its own instance and that the instance has affinity for requests from = its owning "user" during the lifetime of the users session. I would = recommend application-controlled database state management for locking = out one type of client from the other (with stateless session bean).=20 /Johan 19 maj 2006 kl. 06.15 skrev Kalra, Ashwani: No its not correct.=20 Section 7.5.8 , Ejb 2.1 =20 "Clients are not allowed to make concurrent calls to a stateful session = object. If a client-invoked business method is in progress on an instance when another client-invoked call, = from the same or different client, arrives at the same instance of a stateful session bean class, the = container may throw the java.rmi.RemoteException to the second client[7] if the client is a = remote client, or the javax.ejb.EJBException if the client is a local client. This = restriction does not apply to a stateless session bean because the container routes each request to a different = instance of the session bean class." I think there is no standard approach as Andreas said. My problem is = that there is some batch process running and there is jsp page that can = access the same method of ejb which I wanted to avoid. I think I can use = statefull session bean so that at least second client gets the = exception. =09 =20 Thanks Ashwani =09 =20 =09 =20 ________________________________ From: A mailing list for Enterprise JavaBeans development = [mailto:[email protected]] On Behalf Of Tareq Ayub Sent: Friday, May 19, 2006 7:55 AM To: [email protected] Subject: Re: AW: Synchronizing ejb method =09 =09 Refer to the EJB spec. The container will not allow multiple threads to = use the same instance of an SLSB. From the spec - "The container must = ensure that only one thread can be executing an instance at any time". = Given that, why would you want to synchronize on an EJB method anyways ? = Also, SLSB have no state (no instance variables). The same principle = applies to SFSB in addition to the fact an instance is tied to a single = client.=20 Tareq=20 =09 =09 On May 15, 2006, at 2:40 AM, Andreas Berg wrote: You shouldn't. The only reason to synchronize a stateless session bean = is if your bean is not stateless. Then ask yourself why you chose a = stateless bean for some stateful purpose. =20 If you really want to synchronize your SLSB you need to think about = the runtime environment. If all the instances of the SLSB run in a = single JVM, you can use the standard Java synchronization features = inside the bean to synchronize. But this doesn't work with a clustered = environment. AFAIK there is no standard approach to solve this. =20 Kind regards, =20 Andreas. =20 =20 Andreas Berg Zelfi AG Hechtsheimer Stra=DFe 33 55131 Mainz Telefon: 06131-9064850 Telefax: 06131-9064853 [email protected] http://www.zelfi.com/ =20 ________________________________ Von: A mailing list for Enterprise JavaBeans development = [mailto:[email protected]] Im Auftrag von Kalra, Ashwani Gesendet: Montag, 15. Mai 2006 06:42 An: [email protected] Betreff: Synchronizing ejb method =09 =09 Hi, The client of my ejb can be an jsp or standalone java class. How can = I synchronize access to the SLSB ejb method? I am using ejb2.0 version =20 =20 __________________=20 Regards=20 Ashwani Kalra=20 =09 =20 This message contains information that may be privileged or = confidential and is the property of the Capgemini Group. It is intended = only for the person to whom it is addressed. If you are not the intended = recipient, you are not authorized to read, print, retain, copy, = disseminate, distribute, or use this message or any part thereof. If you = receive this message in error, please notify the sender immediately and = delete all copies of this message. =09 =09 = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 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".=20 = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 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".=20 = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 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".=20 This message contains information that may be privileged or = confidential and is the property of the Capgemini Group. It is intended = only for the person to whom it is addressed. If you are not the intended = recipient, you are not authorized to read, print, retain, copy, = disseminate, distribute, or use this message or any part thereof. If you = receive this message in error, please notify the sender immediately and = delete all copies of this message. =09 =09 = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 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".=20 This message contains information that may be privileged or confidential = and is the property of the Capgemini Group. It is intended only for the = person to whom it is addressed. If you are not the intended recipient, = you are not authorized to read, print, retain, copy, disseminate, = distribute, or use this message or any part thereof. If you receive this = message in error, please notify the sender immediately and delete all = copies of this message. =09 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 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".=20 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D 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".