dain        2006/02/01 06:50:09

  Modified:    modules/core/src/java/org/openejb/server/axis
                        EJBContainerProvider.java WSContainer.java
                        WSContainerGBean.java
  Log:

  Major refactor
  Split container into an object to represent a deployed ejb and a set of 
shared containers which process invocations
  Introduced interface between CMP container and CMP engine
  
  Revision  Changes    Path
  1.8       +27 -18    
openejb/modules/core/src/java/org/openejb/server/axis/EJBContainerProvider.java
  
  Index: EJBContainerProvider.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/server/axis/EJBContainerProvider.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- EJBContainerProvider.java 21 Jun 2005 22:31:35 -0000      1.7
  +++ EJBContainerProvider.java 1 Feb 2006 11:50:09 -0000       1.8
  @@ -48,9 +48,7 @@
   import java.util.HashMap;
   import java.util.Map;
   import java.util.Vector;
  -import javax.xml.rpc.handler.soap.SOAPMessageContext;
   import javax.xml.rpc.holders.IntHolder;
  -import javax.xml.rpc.soap.SOAPFaultException;
   import javax.xml.soap.SOAPMessage;
   
   import org.apache.axis.AxisFault;
  @@ -72,17 +70,18 @@
   import org.apache.geronimo.core.service.SimpleInvocationResult;
   import org.apache.geronimo.transaction.context.TransactionContext;
   import org.apache.geronimo.webservices.MessageContextInvocationKey;
  -import org.openejb.EJBContainer;
   import org.openejb.EJBInstanceContext;
   import org.openejb.EJBInterfaceType;
  -import org.openejb.EJBInvocation;
  +import org.openejb.EjbDeployment;
  +import org.openejb.EjbInvocation;
  +import org.openejb.ExtendedEjbDeployment;
   import org.xml.sax.SAXException;
   
   public class EJBContainerProvider extends RPCProvider {
  -    private final EJBContainer ejbContainer;
  +    private final EjbDeployment ejbDeployment;
   
  -    public EJBContainerProvider(EJBContainer ejbContainer) {
  -        this.ejbContainer = ejbContainer;
  +    public EJBContainerProvider(EjbDeployment ejbDeployment) {
  +        this.ejbDeployment = ejbDeployment;
       }
   
       public void processMessage(MessageContext msgContext, SOAPEnvelope 
reqEnv, SOAPEnvelope resEnv, Object obj) throws Exception {
  @@ -90,19 +89,19 @@
           RPCElement body = getBody(reqEnv, msgContext);
           OperationDesc operation = getOperationDesc(msgContext, body);
   
  -        int index = ejbContainer.getMethodIndex(operation.getMethod());
  +        int index = ejbDeployment.getMethodIndex(operation.getMethod());
           AxisRpcInvocation invocation = new AxisRpcInvocation(operation, 
msgContext, index);
           invocation.put(MessageContextInvocationKey.INSTANCE, msgContext);
  -        SOAPMessage message = ((SOAPMessageContext) msgContext).getMessage();
  +        SOAPMessage message = msgContext.getMessage();
   
           Object objRes = null;
           try {
               message.getSOAPPart().getEnvelope();
               
msgContext.setProperty(org.apache.axis.SOAPPart.ALLOW_FORM_OPTIMIZATION, 
Boolean.FALSE);
   
  -            InvocationResult invocationResult = 
ejbContainer.invoke(invocation);
  +            InvocationResult invocationResult = 
ejbDeployment.invoke(invocation);
               if (invocationResult.isException()) {
  -                throw (Throwable) invocationResult.getException();
  +                throw invocationResult.getException();
               }
               objRes = invocationResult.getResult();
           } catch (Throwable throwable) {
  @@ -117,7 +116,7 @@
       }
   
       public Object getServiceObject(MessageContext msgContext, Handler 
service, String clsName, IntHolder scopeHolder) throws Exception {
  -        return ejbContainer;
  +        return ejbDeployment;
       }
   
       /**
  @@ -126,16 +125,18 @@
        *
        * @see org.apache.axis.providers.java.RPCProvider
        */
  -    private class AxisRpcInvocation implements EJBInvocation {
  +    private class AxisRpcInvocation implements EjbInvocation {
  +        // The container that we are invoking, this is set in the container 
before sending the invocation to the interceptor stack
  +        private ExtendedEjbDeployment ejbDeployment;
  +
           private int index;
   
           // Valid in server-side interceptor stack once an instance has been 
identified
  -        private transient EJBInstanceContext instanceContext;
  +        private EJBInstanceContext instanceContext;
   
           // Valid in server-side interceptor stack once a TransactionContext 
has been created
  -        private transient TransactionContext transactionContext;
  +        private TransactionContext transactionContext;
   
  -        private InvocationResult result;
           private Map attributes = new HashMap();
           private OperationDesc operation;
           private MessageContext messageContext;
  @@ -146,6 +147,14 @@
               this.operation = operation;
           }
   
  +        public ExtendedEjbDeployment getEjbDeployment() {
  +            return ejbDeployment;
  +        }
  +
  +        public void setEjbDeployment(ExtendedEjbDeployment ejbDeployment) {
  +            this.ejbDeployment = ejbDeployment;
  +        }
  +
           public int getMethodIndex() {
               return index;
           }
  @@ -163,7 +172,7 @@
           }
   
           private Object[] demarshallArguments() throws Exception {
  -            SOAPMessage message = ((SOAPMessageContext) 
messageContext).getMessage();
  +            SOAPMessage message = messageContext.getMessage();
               
messageContext.setProperty(org.apache.axis.SOAPPart.ALLOW_FORM_OPTIMIZATION, 
Boolean.TRUE);
               if (message != null) {
                   message.saveChanges();
  
  
  
  1.15      +7 -7      
openejb/modules/core/src/java/org/openejb/server/axis/WSContainer.java
  
  Index: WSContainer.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/server/axis/WSContainer.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- WSContainer.java  21 Aug 2005 07:36:30 -0000      1.14
  +++ WSContainer.java  1 Feb 2006 11:50:09 -0000       1.15
  @@ -53,7 +53,7 @@
   import org.apache.geronimo.axis.server.ServiceInfo;
   import org.apache.geronimo.gbean.GBeanLifecycle;
   import org.apache.geronimo.webservices.SoapHandler;
  -import org.openejb.EJBContainer;
  +import org.openejb.RpcEjbDeployment;
   
   public class WSContainer implements GBeanLifecycle {
   
  @@ -65,7 +65,7 @@
           location = null;
       }
   
  -    public WSContainer(EJBContainer ejbContainer,
  +    public WSContainer(RpcEjbDeployment ejbDeploymentContext,
                          URI location,
                          URI wsdlURI,
                          SoapHandler soapHandler,
  @@ -79,20 +79,20 @@
           this.soapHandler = soapHandler;
           this.location = location;
           //for use as a template
  -        if (ejbContainer == null) {
  +        if (ejbDeploymentContext == null) {
               return;
           }
  -        RPCProvider provider = new EJBContainerProvider(ejbContainer);
  +        RPCProvider provider = new 
EJBContainerProvider(ejbDeploymentContext);
           SOAPService service = new SOAPService(null, provider, null);
   
           JavaServiceDesc serviceDesc = serviceInfo.getServiceDesc();
           service.setServiceDescription(serviceDesc);
  -        Class serviceEndpointInterface = 
ejbContainer.getProxyInfo().getServiceEndpointInterface();
  +        Class serviceEndpointInterface = 
ejbDeploymentContext.getProxyInfo().getServiceEndpointInterface();
   
           service.setOption("className", serviceEndpointInterface.getName());
           serviceDesc.setImplClass(serviceEndpointInterface);
   
  -        ClassLoader classLoader = ejbContainer.getClassLoader();
  +        ClassLoader classLoader = ejbDeploymentContext.getClassLoader();
           AxisWebServiceContainer axisContainer = new 
AxisWebServiceContainer(location, wsdlURI, service, serviceInfo.getWsdlMap(), 
classLoader);
           if (soapHandler != null) {
               soapHandler.addWebService(location.getPath(), virtualHosts, 
axisContainer, securityRealmName, realmName, transportGuarantee, authMethod, 
classLoader);
  
  
  
  1.10      +3 -3      
openejb/modules/core/src/java/org/openejb/server/axis/WSContainerGBean.java
  
  Index: WSContainerGBean.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/server/axis/WSContainerGBean.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- WSContainerGBean.java     1 Dec 2005 08:34:52 -0000       1.9
  +++ WSContainerGBean.java     1 Feb 2006 11:50:09 -0000       1.10
  @@ -51,7 +51,7 @@
   import org.apache.geronimo.gbean.GBeanInfoBuilder;
   import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
   import org.apache.geronimo.webservices.SoapHandler;
  -import org.openejb.EJBContainer;
  +import org.openejb.RpcEjbDeployment;
   
   public class WSContainerGBean {
   
  @@ -62,7 +62,7 @@
   
   //        infoFactory.addOperation("invoke", new 
Class[]{WebServiceContainer.Request.class, WebServiceContainer.Response.class});
   
  -        infoFactory.addReference("EJBContainer", EJBContainer.class);
  +        infoFactory.addReference("EJBContainer", RpcEjbDeployment.class);
           infoFactory.addAttribute("location", URI.class, true);
           infoFactory.addAttribute("wsdlURI", URI.class, true);
           infoFactory.addAttribute("securityRealmName", String.class, true);
  
  
  

Reply via email to