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