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);