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 di...@apache.org on 2005/12/26 01:09:20 UTC

svn commit: r359017 - in /webservices/axis2/trunk/java/modules: addressing/src/org/apache/axis2/handlers/addressing/ codegen/src/org/apache/axis2/rpc/receivers/ codegen/src/org/apache/axis2/wsdl/template/java/ core/src/org/apache/axis2/receivers/

Author: dims
Date: Sun Dec 25 16:09:10 2005
New Revision: 359017

URL: http://svn.apache.org/viewcvs?rev=359017&view=rev
Log:
prevent memory leaks, avoid using class private/protected variables in handlers/receivers if we can help it since at the end of invoke they are not needed anymore

Modified:
    webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/receivers/AbstractMessageReceiver.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java

Modified: webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java?rev=359017&r1=359016&r2=359017&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java (original)
+++ webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java Sun Dec 25 16:09:10 2005
@@ -164,6 +164,10 @@
                             addressingNamespaceObject);
                 }
         }
+        
+        // We are done, cleanup the references
+        addressingNamespaceObject = null;
+        addressingNamespace = null;
     }
 
 

Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java?rev=359017&r1=359016&r2=359017&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java Sun Dec 25 16:09:10 2005
@@ -34,6 +34,7 @@
 import org.apache.axis2.om.impl.llom.factory.OMXMLBuilderFactory;
 import org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver;
 import org.apache.axis2.soap.SOAPEnvelope;
+import org.apache.axis2.soap.SOAPFactory;
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamReader;
@@ -94,12 +95,13 @@
 
             Object[] objectArray = processRequest(methodElement);
             Object resObject = method.invoke(obj, objectArray);
+            SOAPFactory fac = getSOAPFactory(inMessage);
 
             // Handling the response
             //todo NameSpace has to be taken from the AxisService
-            OMNamespace ns = getSOAPFactory().createOMNamespace(
+            OMNamespace ns = fac.createOMNamespace(
                     "http://soapenc/", "res");
-            SOAPEnvelope envelope = getSOAPFactory().getDefaultEnvelope();
+            SOAPEnvelope envelope = fac.getDefaultEnvelope();
             OMElement bodyContent = null;
 
             if (resObject instanceof Object[]) {
@@ -107,7 +109,7 @@
                 OMElement bodyChild = getResponseElement(resName, (Object[]) resObject);
                 envelope.getBody().addChild(bodyChild);
             } else {
-                processResponse(resObject, bodyContent, ns, envelope);
+                processResponse(fac, resObject, bodyContent, ns, envelope);
             }
 
             outMessage.setEnvelope(envelope);
@@ -126,20 +128,20 @@
         return BeanUtil.getOMElement(resname, objs);
     }
 
-    private void processResponse(Object resObject, OMElement bodyContent, OMNamespace ns, SOAPEnvelope envelope) {
+    private void processResponse(SOAPFactory fac, Object resObject, OMElement bodyContent, OMNamespace ns, SOAPEnvelope envelope) {
         if (resObject != null) {
             //todo first check to see where the desrilizer for the return object
             //simple type
             if (resObject instanceof OMElement) {
                 bodyContent = (OMElement) resObject;
             } else if (SimpleTypeMapper.isSimpleType(resObject)) {
-                bodyContent = getSOAPFactory().createOMElement(
+                bodyContent = fac.createOMElement(
                         method.getName() + "Response", ns);
-                OMElement child = getSOAPFactory().createOMElement(RETURN_WRAPPER, null);
+                OMElement child = fac.createOMElement(RETURN_WRAPPER, null);
                 child.addChild(fac.createText(child, SimpleTypeMapper.getStringValue(resObject)));
                 bodyContent.addChild(child);
             } else {
-                bodyContent = getSOAPFactory().createOMElement(
+                bodyContent = fac.createOMElement(
                         method.getName() + "Response", ns);
                 // Java Beans
                 XMLStreamReader xr = BeanUtil.getPullParser(resObject,

Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl?rev=359017&r1=359016&r2=359017&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl Sun Dec 25 16:09:10 2005
@@ -84,10 +84,10 @@
                     </xsl:choose>
 
 
-                    //Create a default envelop
-                    envelope = getSOAPFactory().getDefaultEnvelope();
-                    //Create a Omelement of the result if a result exist
+                    //Create a default envelope
+                    envelope = getSOAPFactory(msgContext).getDefaultEnvelope();
 
+                    //Create a OMElement of the result if a result exists
                     <xsl:if test="$returntype!=''">envelope.getBody().setFirstChild(toOM(<xsl:value-of select="$returnvariable"/>));
                     </xsl:if>
                 </xsl:when>

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/receivers/AbstractMessageReceiver.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/receivers/AbstractMessageReceiver.java?rev=359017&r1=359016&r2=359017&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/receivers/AbstractMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/receivers/AbstractMessageReceiver.java Sun Dec 25 16:09:10 2005
@@ -32,7 +32,6 @@
 public abstract class AbstractMessageReceiver implements MessageReceiver {
     public static final String SERVICE_CLASS = "ServiceClass";
     public static final String SCOPE = "scope";
-    protected SOAPFactory fac;
 
     /**
      * Method makeNewServiceObject
@@ -43,16 +42,6 @@
      */
     protected Object makeNewServiceObject(MessageContext msgContext) throws AxisFault {
         try {
-            String nsURI = msgContext.getEnvelope().getNamespace().getName();
-
-            if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(nsURI)) {
-                fac = OMAbstractFactory.getSOAP12Factory();
-            } else if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(nsURI)) {
-                fac = OMAbstractFactory.getSOAP11Factory();
-            } else {
-                throw new AxisFault(Messages.getMessage("invalidSOAPversion"));
-            }
-
             AxisService service =
                     msgContext.getOperationContext().getServiceContext().getAxisService();
             ClassLoader classLoader = service.getClassLoader();
@@ -71,8 +60,15 @@
         }
     }
 
-    public SOAPFactory getSOAPFactory() {
-        return fac;
+    public SOAPFactory getSOAPFactory(MessageContext msgContext) throws AxisFault {
+        String nsURI = msgContext.getEnvelope().getNamespace().getName();
+        if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(nsURI)) {
+            return OMAbstractFactory.getSOAP12Factory();
+        } else if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(nsURI)) {
+            return OMAbstractFactory.getSOAP11Factory();
+        } else {
+            throw new AxisFault(Messages.getMessage("invalidSOAPversion"));
+        }
     }
 
     /**

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java?rev=359017&r1=359016&r2=359017&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/receivers/RawXMLINOutMessageReceiver.java Sun Dec 25 16:09:10 2005
@@ -26,6 +26,7 @@
 import org.apache.axis2.om.OMElement;
 import org.apache.axis2.om.OMNamespace;
 import org.apache.axis2.soap.SOAPEnvelope;
+import org.apache.axis2.soap.SOAPFactory;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.wsdl.WSDLService;
@@ -123,17 +124,17 @@
                 OMElement result = (OMElement) method.invoke(obj, args);
                 OMElement bodyContent;
 
+                SOAPFactory fac = getSOAPFactory(msgContext);
                 if (WSDLService.STYLE_RPC.equals(style)) {
-                    OMNamespace ns = getSOAPFactory().createOMNamespace("http://soapenc/", "res");
-
-                    bodyContent = getSOAPFactory().createOMElement(method.getName() + "Response",
+                    OMNamespace ns = fac.createOMNamespace("http://soapenc/", "res");
+                    bodyContent = fac.createOMElement(method.getName() + "Response",
                             ns);
                     bodyContent.addChild(result);
                 } else {
                     bodyContent = result;
                 }
 
-                SOAPEnvelope envelope = getSOAPFactory().getDefaultEnvelope();
+                SOAPEnvelope envelope = fac.getDefaultEnvelope();
 
                 if (bodyContent != null) {
                     envelope.getBody().addChild(bodyContent);