openamf/src/java/org/openamf/invoker EJBServiceInvoker.java,1.7,1.8

[email protected] Fri, 15 Aug 2003 09:54:47 -0700
Newsgroups gmane.comp.java.openamf.cvs
Message-ID <[email protected]>
Update of /cvsroot/openamf/openamf/src/java/org/openamf/invoker
In directory sc8-pr-cvs1:/tmp/cvs-serv24050/src/java/org/openamf/invoker

Modified Files:
	EJBServiceInvoker.java 
Log Message:
1) added support for EJBLocalHomes and EJBLocalObjects
2) fixed bug with persistant services by adding prepare method

Index: EJBServiceInvoker.java
===================================================================
RCS file: /cvsroot/openamf/openamf/src/java/org/openamf/invoker/EJBServiceInvoker.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** EJBServiceInvoker.java	9 Aug 2003 16:59:22 -0000	1.7
--- EJBServiceInvoker.java	15 Aug 2003 16:54:45 -0000	1.8
***************
*** 16,19 ****
--- 16,20 ----
  import javax.ejb.Handle;
  import javax.naming.InitialContext;
+ import javax.naming.NamingException;
  import javax.servlet.ServletContext;
  import javax.servlet.http.HttpServletRequest;
***************
*** 32,35 ****
--- 33,37 ----
  	private static Log log = LogFactory.getLog(EJBServiceInvoker.class);
  	
+ 	private Object home = null;
  	private boolean persistService = false;
  
***************
*** 47,51 ****
  
  		try {
! 			EJBObject ejb = null;
  			if (persistService) {
  				log.debug("Trying to get Handle from persistantObject");
--- 49,54 ----
  
  		try {
! 			Object ejb = null;
! 			
  			if (persistService) {
  				log.debug("Trying to get Handle from persistantObject");
***************
*** 58,69 ****
  			 
  			if (ejb == null) {
- 				InitialContext context = new InitialContext();
- 				EJBHome home = (EJBHome)context.lookup(request.getServiceName());
- 			
  				Method ejbCreateMethod =
  					home.getClass().getMethod("create", new Class[0]);
  				log.info("Calling Create Method: " + request.getServiceName());
! 				ejb =
! 					(EJBObject) ejbCreateMethod.invoke(home, new Object[0]);
  			}
  			
--- 61,68 ----
  			 
  			if (ejb == null) {
  				Method ejbCreateMethod =
  					home.getClass().getMethod("create", new Class[0]);
  				log.info("Calling Create Method: " + request.getServiceName());
! 				ejb = ejbCreateMethod.invoke(home, new Object[0]);
  			}
  			
***************
*** 76,81 ****
  
  			if (persistService) {
! 				log.debug("setting persistantObject = Handle");
! 				setPersistantServiceObject(ejb.getHandle());
  			}
  
--- 75,82 ----
  
  			if (persistService) {
! 				if (ejb instanceof EJBObject) {
! 					log.debug("setting persistantObject = Handle");
! 					setPersistantServiceObject(((EJBObject)ejb).getHandle());
! 				}
  			}
  
***************
*** 88,108 ****
  	}
  
! 	private boolean checkPersistService(EJBHome home) throws RemoteException {
! 		
! 		boolean persistService;
  		
! 		EJBMetaData metaData = home.getEJBMetaData();
  		
! 		if (metaData.isSession()) {
! 			if (metaData.isStatelessSession()) {
! 				log.debug("Stateless Session Bean");
! 				persistService = false;
  			} else {
! 				log.debug("Stateful Session Bean");
  				persistService = true;
  			}
- 		} else {
- 			log.debug("Not Session Bean, assume Entity EJB");
- 			persistService = true;
  		}
  		
--- 89,111 ----
  	}
  
! 	private boolean checkPersistService(Object home) throws RemoteException {
  		
! 		boolean persistService = false;
  		
! 		if (home instanceof EJBHome) {
! 			EJBMetaData metaData = ((EJBHome)home).getEJBMetaData();
! 			
! 			if (metaData.isSession()) {
! 				if (metaData.isStatelessSession()) {
! 					log.debug("Stateless Session Bean");
! 					persistService = false;
! 				} else {
! 					log.debug("Stateful Session Bean");
! 					persistService = true;
! 				}
  			} else {
! 				log.debug("Not Session Bean, assume Entity EJB");
  				persistService = true;
  			}
  		}
  		
***************
*** 118,123 ****
  		try {
  			InitialContext context = new InitialContext();
! 			EJBHome home = (EJBHome)context.lookup(request.getServiceName());			
! 			persistService = checkPersistService(home);			
  			supports = true;
  		} catch (Exception e) {
--- 121,125 ----
  		try {
  			InitialContext context = new InitialContext();
! 			getHome(request);			
  			supports = true;
  		} catch (Exception e) {
***************
*** 125,128 ****
--- 127,153 ----
  
  		return supports;
+ 	}
+ 
+ 	/* Used to check if this is a persistant service (Stateful Session Bean or Entity Bean)
+ 	 * @see org.openamf.invoker.ServiceInvoker#prepare(org.openamf.ServiceRequest)
+ 	 */
+ 	public void prepare(ServiceRequest request) {
+ 		
+ 		try {
+ 			persistService = checkPersistService(getHome(request));			
+ 		} catch (Exception e) {
+ 		}
+ 	}
+ 	
+ 	private Object getHome(ServiceRequest request) throws NamingException {
+ 		
+ 		InitialContext context = new InitialContext();
+ 
+ 		if (home == null) {
+ 			home = context.lookup(request.getServiceName());
+ 		}
+ 		
+ 		return home;
+ 		
  	}
  




-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01