You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by he...@apache.org on 2005/02/01 16:07:42 UTC

svn commit: r149403 - in webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis: impl/llom/OMElementImpl.java impl/llom/factory/OMLinkedListImplFactory.java impl/receivers/InOutSyncReceiver.java transport/AbstractTransportSender.java

Author: hemapani
Date: Tue Feb  1 07:07:39 2005
New Revision: 149403

URL: http://svn.apache.org/viewcvs?view=rev&rev=149403
Log:
fix the pooling

Modified:
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/llom/OMElementImpl.java
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/llom/factory/OMLinkedListImplFactory.java
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/receivers/InOutSyncReceiver.java
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/transport/AbstractTransportSender.java

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/llom/OMElementImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/llom/OMElementImpl.java?view=diff&r1=149402&r2=149403
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/llom/OMElementImpl.java (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/llom/OMElementImpl.java Tue Feb  1 07:07:39 2005
@@ -58,9 +58,15 @@
     public void free(){
             this.namespaces.clear();
             this.attributes.clear();
-            firstChild.free();
+            if(firstChild != null){
+				firstChild.free();
+            }
+            
             OMFactory.newInstance().free(this);
-            nextSibling.free();
+            if(nextSibling != null){
+				nextSibling.free();	
+            }
+            
         }
 
     public void init(String localName, OMNamespace ns, OMElement parent, OMXMLParserWrapper builder) {

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/llom/factory/OMLinkedListImplFactory.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/llom/factory/OMLinkedListImplFactory.java?view=diff&r1=149402&r2=149403
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/llom/factory/OMLinkedListImplFactory.java (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/llom/factory/OMLinkedListImplFactory.java Tue Feb  1 07:07:39 2005
@@ -3,9 +3,7 @@
 import java.util.Stack;
 
 import org.apache.axis.impl.llom.OMElementImpl;
-import org.apache.axis.impl.llom.OMNamedNodeImpl;
 import org.apache.axis.impl.llom.OMNamespaceImpl;
-import org.apache.axis.impl.llom.OMNodeImpl;
 import org.apache.axis.impl.llom.OMTextImpl;
 import org.apache.axis.impl.llom.SOAPBodyImpl;
 import org.apache.axis.impl.llom.SOAPEnvelopeImpl;
@@ -15,7 +13,6 @@
 import org.apache.axis.om.OMConstants;
 import org.apache.axis.om.OMElement;
 import org.apache.axis.om.OMFactory;
-import org.apache.axis.om.OMNamedNode;
 import org.apache.axis.om.OMNamespace;
 import org.apache.axis.om.OMNode;
 import org.apache.axis.om.OMText;
@@ -43,16 +40,43 @@
  * <p/>
  */
 public class OMLinkedListImplFactory extends OMFactory {
+	public static final int MAX_TO_POOL = 100;
 	private Stack elements = new Stack();
 	private Stack textNodes = new Stack();
+
+	private OMElementImpl findElement(){
+		OMElementImpl element = null;
+		if(elements.isEmpty()){
+			element = new OMElementImpl();
+		}else{
+			element = (OMElementImpl)elements.pop();
+		}
+		return element;
+	}
+
+	private OMTextImpl findText(){
+		OMTextImpl text = null;
+		if(elements.isEmpty()){
+			text = new OMTextImpl();
+		}else{
+			text = (OMTextImpl)textNodes.pop();
+		}
+		return text;
+	}
 	
 	public void free(OMNode node){
 		int type = node.getType();
 		switch(type){
 			case OMNode.ELEMENT_NODE:
-			elements.push(node);
+				if(elements.size() < MAX_TO_POOL){
+					elements.push(node);				
+				}
+			break;
 			case OMNode.TEXT_NODE:
-			textNodes.push(node);
+			if(textNodes.size() < MAX_TO_POOL){
+				textNodes.push(node);
+			}
+			break;
 			default:
 			//NOOP;
 			
@@ -61,19 +85,13 @@
 
 
     public OMElement createOMElement(String localName, OMNamespace ns) {
-		OMElementImpl element = null;
-		if(elements.isEmpty()){
-			element = new OMElementImpl();
-		}
+		OMElementImpl element = findElement();
 		element.init(localName, ns);
 		return element;
     }
 
     public OMElement createOMElement(String localName, OMNamespace ns, OMElement parent, OMXMLParserWrapper builder) {
-    	OMElementImpl element = null;
-    	if(elements.isEmpty()){
-    		element = new OMElementImpl();
-    	}
+    	OMElementImpl element = findElement();
         element.init(localName, ns, parent, builder);
         return element;
     }
@@ -95,19 +113,13 @@
 //    }
 
     public OMText createText(OMElement parent, String text) {
-		OMTextImpl textNode = null;
-		if(textNodes.isEmpty()){
-			textNode = new OMTextImpl();
-		}
+		OMTextImpl textNode = findText();
 		textNode.init(parent, text);
 		return textNode;
     }
 
     public OMText createText(String s) {
-		OMTextImpl textNode = null;
-		if(textNodes.isEmpty()){
-			textNode = new OMTextImpl();
-		}
+		OMTextImpl textNode = findText();
 		textNode.init(s);
 		return textNode;
     }

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/receivers/InOutSyncReceiver.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/receivers/InOutSyncReceiver.java?view=diff&r1=149402&r2=149403
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/receivers/InOutSyncReceiver.java (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/receivers/InOutSyncReceiver.java Tue Feb  1 07:07:39 2005
@@ -51,6 +51,8 @@
 		Provider provider = msgContext.getService().getProvider();
 		log.info("start invoke the web service impl");
 		MessageContext outMsgContext = provider.invoke(msgContext);
+		msgContext.getEnvelope().free();
+		
 		log.info("Invoked the Web Servivces impl");
         Sender sender = new Sender();
         sender.send(msgContext);

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/transport/AbstractTransportSender.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/transport/AbstractTransportSender.java?view=diff&r1=149402&r2=149403
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/transport/AbstractTransportSender.java (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/transport/AbstractTransportSender.java Tue Feb  1 07:07:39 2005
@@ -16,6 +16,11 @@
 
 package org.apache.axis.transport;
 
+import java.io.OutputStream;
+
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamWriter;
+
 import org.apache.axis.addressing.EndpointReference;
 import org.apache.axis.context.MessageContext;
 import org.apache.axis.engine.AxisFault;
@@ -23,11 +28,6 @@
 import org.apache.axis.impl.handlers.AbstractHandler;
 import org.apache.axis.om.SOAPEnvelope;
 
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-import java.io.OutputStream;
-
 /**
  */
 public abstract class AbstractTransportSender extends AbstractHandler implements TransportSender {
@@ -58,6 +58,7 @@
                 outputWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(out);
                 envelope.serialize(outputWriter,false);
                 outputWriter.flush();
+                envelope.free();
             } catch (Exception e) {
                 throw new AxisFault("Stream error",e);
             }