You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ch...@apache.org on 2005/09/14 15:14:35 UTC

svn commit: r280840 - in /webservices/axis2/trunk/java/modules/core/src/org/apache/axis2: addressing/ addressing/miheaders/ context/

Author: chamikara
Date: Wed Sep 14 06:12:10 2005
New Revision: 280840

URL: http://svn.apache.org/viewcvs?rev=280840&view=rev
Log:
These changes allows the context hierarchy to be serialized. Basically added the read write methods to the Context classes. Default serialization is used for non-transient fields and descriptions have to be set through a special init method. RM module can use this functionality to support true persistance. 

Modified:
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/AnyContentType.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/EndpointReference.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/MessageInformationHeaders.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/ServiceName.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/miheaders/RelatesTo.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/AbstractContext.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/MessageContext.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/OperationContext.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceGroupContext.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/SessionContext.java

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/AnyContentType.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/AnyContentType.java?rev=280840&r1=280839&r2=280840&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/AnyContentType.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/AnyContentType.java Wed Sep 14 06:12:10 2005
@@ -16,13 +16,15 @@
 package org.apache.axis2.addressing;
 
 import javax.xml.namespace.QName;
+
+import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Iterator;
 
 /**
  * Class AnyContentType
  */
-public class AnyContentType {
+public class AnyContentType implements Serializable {
     /**
      * Field anyContentTypeName
      */

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/EndpointReference.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/EndpointReference.java?rev=280840&r1=280839&r2=280840&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/EndpointReference.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/EndpointReference.java Wed Sep 14 06:12:10 2005
@@ -15,6 +15,8 @@
  */
 package org.apache.axis2.addressing;
 
+import java.io.Serializable;
+
 import org.apache.axis2.om.OMElement;
 
 import javax.xml.namespace.QName;
@@ -23,7 +25,7 @@
  * Class EndpointReference
  * TODO : Policy has not been integrated to this
  */
-public class EndpointReference {
+public class EndpointReference implements Serializable {
     /**
      * Required property. may be a logical address or identifier for the service endpoint
      */

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/MessageInformationHeaders.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/MessageInformationHeaders.java?rev=280840&r1=280839&r2=280840&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/MessageInformationHeaders.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/MessageInformationHeaders.java Wed Sep 14 06:12:10 2005
@@ -19,12 +19,13 @@
 import org.apache.axis2.om.OMElement;
 import org.apache.axis2.soap.SOAPHeader;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 
 /**
  * This holds the WSA Message Information Headers
  */
-public class MessageInformationHeaders {
+public class MessageInformationHeaders implements Serializable {
 
     /**
      * The address of the intended receiver of the message. This is mandatory

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/ServiceName.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/ServiceName.java?rev=280840&r1=280839&r2=280840&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/ServiceName.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/ServiceName.java Wed Sep 14 06:12:10 2005
@@ -15,12 +15,14 @@
  */
 package org.apache.axis2.addressing;
 
+import java.io.Serializable;
+
 import javax.xml.namespace.QName;
 
 /**
  * Class ServiceName
  */
-public class ServiceName {
+public class ServiceName implements Serializable{
     /**
      * Field name
      */

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/miheaders/RelatesTo.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/miheaders/RelatesTo.java?rev=280840&r1=280839&r2=280840&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/miheaders/RelatesTo.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/addressing/miheaders/RelatesTo.java Wed Sep 14 06:12:10 2005
@@ -15,10 +15,12 @@
  */
 package org.apache.axis2.addressing.miheaders;
 
+import java.io.Serializable;
+
 /**
  * Class RelatesTo
  */
-public class RelatesTo {
+public class RelatesTo implements Serializable{
     /**
      * Field value
      */

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/AbstractContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/AbstractContext.java?rev=280840&r1=280839&r2=280840&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/AbstractContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/AbstractContext.java Wed Sep 14 06:12:10 2005
@@ -1,8 +1,14 @@
 package org.apache.axis2.context;
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.io.Serializable;
 import java.util.HashMap;
 
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.engine.AxisConfiguration;
+
 /*
  * Copyright 2004,2005 The Apache Software Foundation.
  *
@@ -26,10 +32,21 @@
  */
 public abstract class AbstractContext implements Serializable {
 
-    protected transient final HashMap nonPersistentMap;
+    protected transient HashMap nonPersistentMap;
     protected final HashMap persistentMap;
     protected AbstractContext parent;
 
+	public abstract void init (AxisConfiguration axisConfiguration) throws AxisFault;
+	
+    private void writeObject(ObjectOutputStream out) throws IOException {
+    	out.defaultWriteObject();    	
+    }
+
+    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+    	in.defaultReadObject();
+    	nonPersistentMap = new HashMap ();
+    }
+    
     protected AbstractContext(AbstractContext parent) {
         this.persistentMap = new HashMap();
         this.nonPersistentMap = new HashMap();

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java?rev=280840&r1=280839&r2=280840&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java Wed Sep 14 06:12:10 2005
@@ -27,7 +27,11 @@
 
 import javax.xml.namespace.QName;
 import java.io.File;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
 
 /**
@@ -37,12 +41,14 @@
 
 public class ConfigurationContext extends AbstractContext {
 
-    private AxisConfiguration axisConfiguration;
+    private transient AxisConfiguration axisConfiguration;
     private AxisStorage storage;
 
     private Map sessionContextMap;
     private Map moduleContextMap;
-    private ThreadPool threadPool;
+    
+    private transient ThreadPool threadPool;
+    
     private File rootDir;
 
     /**
@@ -51,26 +57,57 @@
      */
     private final Map operationContextMap = new HashMap();
 
-    private final Map serviceContextMap;
+    private final Map serviceContextMap = new HashMap ();
 
     private final Map serviceGroupContextMap = new HashMap();
 
-    public ConfigurationContext(AxisConfiguration registry) {
-        super(null);
-        this.axisConfiguration = registry;
-        serviceContextMap = new HashMap();
-        moduleContextMap = new HashMap();
-        sessionContextMap = new HashMap();
-    }
-
     /**
      * The method is used to do the intialization of the EngineContext
-     *
      * @throws AxisFault
      */
+    public void init(AxisConfiguration axisConfiguration) throws AxisFault {
+    	this.axisConfiguration = axisConfiguration;
+    	
+    	Iterator operationContextIt = operationContextMap.keySet().iterator();
+    	while (operationContextIt.hasNext()) {
+    		Object key = operationContextIt.next();
+    		OperationContext operationContext = (OperationContext) operationContextMap.get(key);
+    		if (operationContext!=null)
+    			operationContext.init(axisConfiguration);
+    	}
+    	
+    	Iterator serviceContextIt = serviceContextMap.keySet().iterator();
+    	while (serviceContextIt.hasNext()) {
+    		Object key = serviceContextIt.next();
+    		ServiceContext serviceContext = (ServiceContext) serviceContextMap.get(key);
+    		if (serviceContext!=null)
+    			serviceContext.init(axisConfiguration);
+    	}
+    	
+    	Iterator serviceGroupContextIt = serviceGroupContextMap.keySet().iterator();
+    	while (serviceGroupContextIt.hasNext()) {
+    		Object key = serviceGroupContextIt.next();
+    		ServiceGroupContext serviceGroupContext = (ServiceGroupContext) serviceGroupContextMap.get(key);
+    		if (serviceGroupContext!=null)
+    			serviceGroupContext.init(axisConfiguration);
+    	}
+    }
+    
+    private void writeObject(ObjectOutputStream out) throws IOException {
+    	out.defaultWriteObject();
+    }
 
-    public void init() throws AxisFault {
-
+    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+    	in.defaultReadObject();
+    	threadPool = new ThreadPool ();
+    }
+    
+    public ConfigurationContext(AxisConfiguration registry) {
+        super(null);
+        this.axisConfiguration = registry;
+        //serviceContextMap = new HashMap();
+        moduleContextMap = new HashMap();
+        sessionContextMap = new HashMap();
     }
 
     public synchronized void removeService(QName name) {

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/MessageContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/MessageContext.java?rev=280840&r1=280839&r2=280840&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/MessageContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/MessageContext.java Wed Sep 14 06:12:10 2005
@@ -15,6 +15,10 @@
 */
 package org.apache.axis2.context;
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.addressing.MessageInformationHeaders;
@@ -94,14 +98,14 @@
     private ServiceContext serviceContext;
     private ServiceGroupContext serviceGroupContext;
 
-    private OperationDescription operationDescription;
-    private ServiceDescription serviceDescription;
-    private ServiceGroupDescription serviceGroupDescription;
+    private transient OperationDescription operationDescription;
+    private transient ServiceDescription serviceDescription;
+    private transient ServiceGroupDescription serviceGroupDescription;
+    
     private ConfigurationContext configurationContext;
 
-    private TransportInDescription transportIn;
-
-    private TransportOutDescription transportOut;
+    private transient TransportInDescription transportIn;
+    private transient TransportOutDescription transportOut;
 
     /**
      * Field sessionContext
@@ -167,6 +171,42 @@
      * This will hold a key to retrieve the correct ServiceGroupContext.
      */
     private String serviceGroupContextId;
+    
+    QName transportInName = null;
+    
+	QName transportOutname = null;
+	
+	String serviceGroupDescId = null;
+	
+	QName serviceDescName = null;
+	
+	QName operationDescName = null;
+    
+    /**
+     * The method is used to do the intialization of the EngineContext
+     * @throws AxisFault
+     */
+    public void init(AxisConfiguration axisConfiguration) throws AxisFault {
+    	if (transportInName!=null)
+    		transportIn = axisConfiguration.getTransportIn(transportInName);
+    	if (transportOutname!=null)
+    		transportOut = axisConfiguration.getTransportOut(transportOutname);
+    	if (serviceGroupDescId!=null)
+    		serviceGroupDescription = axisConfiguration.getServiceGroup(serviceGroupDescId);
+    	if (serviceDescName!=null)
+    		serviceDescription = axisConfiguration.getService(serviceDescName.getLocalPart());
+    	if (serviceDescription!=null)
+    		operationDescription = serviceDescription.getOperation(operationDescName);	
+    }
+    
+    private void writeObject(ObjectOutputStream out) throws IOException {
+    	out.defaultWriteObject();
+    }
+
+    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+    	in.defaultReadObject();
+    }
+
 
     /**
      * Conveniance Method, but before call engine.send() or  engine.receive() one must send transport in/out
@@ -186,6 +226,9 @@
             TransportOutDescription transportOut)
             throws AxisFault {
         this(engineContext, null, transportIn, transportOut);
+        
+        this.transportInName = transportIn.getName();
+        this.transportOutname = transportOut.getName();
     }
 
     /**
@@ -212,7 +255,11 @@
         this.transportIn = transportIn;
         this.transportOut = transportOut;
         this.configurationContext = engineContext;
-
+        
+        if (transportIn!=null)
+        	this.transportInName = transportIn.getName();
+        if (transportOut!=null)
+        	this.transportOutname = transportOut.getName();
     }
 
     /**
@@ -464,6 +511,8 @@
      */
     public void setTransportIn(TransportInDescription in) {
         transportIn = in;
+        if (in!=null)
+        	this.transportInName = in.getName();
     }
 
     /**
@@ -471,6 +520,8 @@
      */
     public void setTransportOut(TransportOutDescription out) {
         transportOut = out;
+        if (out!=null)
+        	this.transportOutname = out.getName();
     }
 
     /**
@@ -822,6 +873,9 @@
 
     public void setOperationDescription(OperationDescription operationDescription) {
         this.operationDescription = operationDescription;
+        this.operationDescName = operationDescription.getName(); 
+        if (operationDescription!=null)
+        	this.operationDescName = operationDescription.getName();
     }
 
     public ServiceDescription getServiceDescription() {
@@ -830,6 +884,8 @@
 
     public void setServiceDescription(ServiceDescription serviceDescription) {
         this.serviceDescription = serviceDescription;
+        if (serviceDescription!=null)
+        	this.serviceDescName = serviceDescription.getName();
     }
 
     public ServiceGroupDescription getServiceGroupDescription() {
@@ -838,6 +894,9 @@
 
     public void setServiceGroupDescription(ServiceGroupDescription serviceGroupDescription) {
         this.serviceGroupDescription = serviceGroupDescription;
+        this.serviceGroupDescId = serviceGroupDescription.getServiceGroupName();
+        if (serviceGroupDescription!=null)
+        	this.serviceGroupDescId = serviceGroupDescription.getServiceGroupName();
     }
 
     public String getServiceGroupContextId() {

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/OperationContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/OperationContext.java?rev=280840&r1=280839&r2=280840&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/OperationContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/OperationContext.java Wed Sep 14 06:12:10 2005
@@ -18,12 +18,19 @@
 
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.description.OperationDescription;
+import org.apache.axis2.description.ServiceDescription;
+import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.axis2.engine.AxisError;
 import org.apache.axis2.i18n.Messages;
 import org.apache.wsdl.WSDLConstants;
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.util.Map;
 
+import javax.xml.namespace.QName;
+
 /**
  * An OperationContext represents a running "instance" of an operation, which is
  * represented by an OperationDescription object. This concept is needed to allow
@@ -46,7 +53,7 @@
 
     // the OperationDescription of which this is a running instance. The MEP of this
     // OperationDescription must be one of the 8 predefined ones in WSDL 2.0.
-    private OperationDescription axisOperation;
+    private transient OperationDescription axisOperation;
 
     private int operationMEP;
 
@@ -56,6 +63,36 @@
     // the EngineContext. We're caching it here for faster acccess.
     private Map operationContextMap;
 
+    private QName operationDescName = null;
+    
+    private QName serviceDescName = null;
+    
+    /**
+     * The method is used to do the intialization of the EngineContext
+     * @throws AxisFault
+     */
+
+    public void init(AxisConfiguration axisConfiguration) throws AxisFault {
+    	if (operationDescName!=null && serviceDescName!=null){
+    		axisOperation = axisConfiguration.getService(serviceDescName.getLocalPart()).
+							getOperation(operationDescName);
+    	}
+    	
+    	if (inMessageContext!=null)
+    		inMessageContext.init(axisConfiguration);
+    	
+    	if (outMessageContext!=null)
+    		outMessageContext.init(axisConfiguration);
+    }
+    
+    private void writeObject(ObjectOutputStream out) throws IOException {
+    	out.defaultWriteObject();
+    }
+
+    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {	
+    	in.defaultReadObject();
+    }
+    
     /**
      * Construct a new OperationContext.
      *
@@ -71,12 +108,22 @@
         this.operationMEP = axisOperation.getAxisSpecifMEPConstant();
         this.operationContextMap = getServiceContext().getEngineContext()
                 .getOperationContextMap();
+        
+        operationDescName = axisOperation.getName();
+        ServiceDescription serviceDescription = axisOperation.getParent();
+        if (serviceDescription!=null)
+        	serviceDescName = serviceDescription.getName();
     }
 
     public OperationContext(OperationDescription axisOperation) {
         super(null);
         this.axisOperation = axisOperation;
         this.operationMEP = axisOperation.getAxisSpecifMEPConstant();
+
+        operationDescName = axisOperation.getName();
+        ServiceDescription serviceDescription = axisOperation.getParent();
+        if (serviceDescription!=null)
+        	serviceDescName = serviceDescription.getName();
     }
 
     /**

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java?rev=280840&r1=280839&r2=280840&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java Wed Sep 14 06:12:10 2005
@@ -18,8 +18,14 @@
  * 
  */
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+import org.apache.axis2.AxisFault;
 import org.apache.axis2.description.OperationDescription;
 import org.apache.axis2.description.ServiceDescription;
+import org.apache.axis2.engine.AxisConfiguration;
 
 import javax.xml.namespace.QName;
 
@@ -28,15 +34,37 @@
  * So I advised to NOT to use this .. as it might not live up to your expectation.
  */
 public class ServiceContext extends AbstractContext {
-    private ServiceDescription serviceConfig;
+	
+    private transient ServiceDescription serviceConfig;
 
     private String serviceInstanceID;
 
+    private QName serviceDescName = null;
+    
+    /**
+     * The method is used to do the intialization of the EngineContext
+     * @throws AxisFault
+     */
+    public void init(AxisConfiguration axisConfiguration) throws AxisFault {
+    	serviceConfig = axisConfiguration.getService(serviceDescName.getLocalPart());
+    }
+    
+    private void writeObject(ObjectOutputStream out) throws IOException {	
+    	out.defaultWriteObject();
+    }
+
+    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+    	in.defaultReadObject();
+    }
+    
     public ServiceContext(
         ServiceDescription serviceConfig,
         ServiceGroupContext serviceGroupContext) {
         super(serviceGroupContext);
         this.serviceConfig = serviceConfig;
+        
+        if (serviceConfig!=null)
+        	this.serviceDescName = serviceConfig.getName();
 
     }
 

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceGroupContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceGroupContext.java?rev=280840&r1=280839&r2=280840&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceGroupContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceGroupContext.java Wed Sep 14 06:12:10 2005
@@ -1,13 +1,18 @@
 package org.apache.axis2.context;
 
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.axis2.engine.AxisConfigurationImpl;
 import org.apache.axis2.description.ServiceGroupDescription;
 import org.apache.axis2.description.ServiceDescription;
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Iterator;
+
 /*
 * Copyright 2004,2005 The Apache Software Foundation.
 *
@@ -34,13 +39,30 @@
 
     private String id;
     private Map serviceContextMap;
-    private ServiceGroupDescription description;
+    private transient ServiceGroupDescription description;
+    private String serviceGroupDescName=null;
+    
+	public void init(AxisConfiguration axisConfiguration) throws AxisFault {
+		if (serviceGroupDescName!=null)
+			description = axisConfiguration.getServiceGroup(serviceGroupDescName);
+	}
+	
+    private void writeObject(ObjectOutputStream out) throws IOException {
+    	out.defaultWriteObject();    	
+    }
 
+    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+    	in.defaultReadObject();
+    	nonPersistentMap = new HashMap ();
+    }
 
     public ServiceGroupContext(ConfigurationContext parent ,ServiceGroupDescription description) {
         super(parent);
         this.description = description;
         serviceContextMap = new HashMap();
+        
+        if (description!=null)
+        	this.serviceGroupDescName = description.getServiceGroupName();
     }
 
     public String getId() {

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/SessionContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/SessionContext.java?rev=280840&r1=280839&r2=280840&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/SessionContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/SessionContext.java Wed Sep 14 06:12:10 2005
@@ -15,6 +15,9 @@
  */
 package org.apache.axis2.context;
 
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.engine.AxisConfiguration;
+
 /**
  * All the engine componets are stateless accross the executions and all the states should be kept in the
  * Contexts, there are three context Global, Session and Message
@@ -26,5 +29,10 @@
     public SessionContext(AbstractContext parent) {
         super(parent);
     }
+    
+	public void init(AxisConfiguration axisConfiguration) throws AxisFault {
+		
+	}
+	
 
 }