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 du...@apache.org on 2001/10/16 15:25:53 UTC
cvs commit: xml-axis/java/test/encoding TestSer.java TestString.java TestXsiType.java
dug 01/10/16 06:25:52
Modified: java/samples/encoding TestSer.java
java/src/org/apache/axis Message.java MessageContext.java
java/src/org/apache/axis/client Call.java ServiceClient.java
java/src/org/apache/axis/encoding
DeserializationContext.java
SerializationContext.java ServiceDescription.java
java/src/org/apache/axis/message BodyBuilder.java
RPCHandler.java
java/src/org/apache/axis/transport/http HTTPSender.java
SimpleAxisServer.java
java/test/encoding TestSer.java TestString.java
TestXsiType.java
Log:
Remove some dependency on ServiceDescription in the code.
Add support for not sending XSI type attributes to the Call object.
Revision Changes Path
1.11 +2 -2 xml-axis/java/samples/encoding/TestSer.java
Index: TestSer.java
===================================================================
RCS file: /home/cvs/xml-axis/java/samples/encoding/TestSer.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- TestSer.java 2001/07/15 23:38:28 1.10
+++ TestSer.java 2001/10/16 13:25:52 1.11
@@ -63,12 +63,12 @@
reader = new FileReader(args[0]);
}
- msgContext.setServiceDescription(service);
+ msgContext.setProperty( MessageContext.SERVICE_DESCRIPTION,service);
TypeMappingRegistry reg = msgContext.getTypeMappingRegistry();
reg.addDeserializerFactory(dataQName, Data.class, DataSer.getFactory());
DeserializationContext dser = new DeserializationContext(
- new InputSource(reader), msgContext, ServiceDescription.REQUEST);
+ new InputSource(reader), msgContext, org.apache.axis.Message.REQUEST);
SOAPEnvelope env = dser.getEnvelope();
RPCElement rpcElem = (RPCElement)env.getFirstBody();
1.47 +3 -0 xml-axis/java/src/org/apache/axis/Message.java
Index: Message.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/Message.java,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -r1.46 -r1.47
--- Message.java 2001/10/03 15:30:02 1.46
+++ Message.java 2001/10/16 13:25:52 1.47
@@ -84,6 +84,9 @@
private Object originalMessage ;
private Object currentMessage ;
+ public static final String REQUEST = "request" ;
+ public static final String RESPONSE = "response" ;
+
private static final int FORM_STRING = 1;
private static final int FORM_INPUTSTREAM = 2;
private static final int FORM_SOAPENVELOPE = 3;
1.56 +66 -18 xml-axis/java/src/org/apache/axis/MessageContext.java
Index: MessageContext.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/MessageContext.java,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -r1.55 -r1.56
--- MessageContext.java 2001/10/03 15:30:02 1.55
+++ MessageContext.java 2001/10/16 13:25:52 1.56
@@ -55,7 +55,6 @@
package org.apache.axis ;
-import org.apache.axis.encoding.ServiceDescription;
import org.apache.axis.encoding.TypeMappingRegistry;
import org.apache.axis.handlers.soap.SOAPService;
import org.apache.axis.registries.HandlerRegistry;
@@ -189,19 +188,6 @@
}
/**
- * A description of the service
- */
- private ServiceDescription serviceDesc = null;
-
- public ServiceDescription getServiceDescription() {
- return serviceDesc;
- }
-
- public void setServiceDescription(ServiceDescription serviceDesc) {
- this.serviceDesc = serviceDesc;
- }
-
- /**
* Transport
*/
public String getTransportName()
@@ -396,10 +382,6 @@
SOAPService service = (SOAPService)sh;
TypeMappingRegistry tmr = service.getTypeMappingRegistry();
setTypeMappingRegistry(tmr);
-
- if (serviceDesc == null) {
- serviceDesc = service.getServiceDescription();
- }
}
}
@@ -429,10 +411,76 @@
/** Place to store an AuthenticatedUser */
public static String AUTHUSER = "authenticatedUser";
+ /** Is this message an RPC message (instead of just a blob of xml) */
+ public static String ISRPC ="is_rpc" ;
+
+ /** Temporary */
+ public static String SERVICE_DESCRIPTION = "service_description" ;
+
/** Just a util so we don't have to cast the result
*/
public String getStrProp(String propName) {
return( (String) getProperty(propName) );
+ }
+
+ /**
+ * Tests to see if the named property is set in the 'bag'.
+ * If not there then 'false' is returned.
+ * If there, then...
+ * if its a Boolean, we'll return booleanValue()
+ * if its an Integer, we'll return 'false' if its '0' else 'true'
+ * if its a String, we'll return 'false' if its 'false' or '0' else 'true'
+ * All other types return 'true'
+ */
+ public boolean isPropertyTrue(String propName) {
+ Object val = getProperty(propName);
+ if ( val == null ) return( false );
+ if ( val instanceof Boolean ) {
+ Boolean b = (Boolean) val ;
+ return( b.booleanValue() );
+ }
+ if ( val instanceof Integer ) {
+ Integer i = (Integer) val ;
+ if ( i.intValue() == 0 ) return( false );
+ return( true );
+ }
+ if ( val instanceof String ) {
+ String s = (String) val ;
+ if ( s.equalsIgnoreCase("false") ||
+ s.equalsIgnoreCase("no") ) return( false );
+ return( true );
+ }
+ return( true );
+ }
+
+ /**
+ * Tests to see if the named property is set in the 'bag'.
+ * If not there then 'defaultVal' will be returned.
+ * If there, then...
+ * if its a Boolean, we'll return booleanValue()
+ * if its an Integer, we'll return 'false' if its '0' else 'true'
+ * if its a String, we'll return 'false' if its 'false' or '0' else 'true'
+ * All other types return 'true'
+ */
+ public boolean isPropertyTrue(String propName, boolean defaultVal) {
+ Object val = getProperty(propName);
+ if ( val == null ) return( defaultVal );
+ if ( val instanceof Boolean ) {
+ Boolean b = (Boolean) val ;
+ return( b.booleanValue() );
+ }
+ if ( val instanceof Integer ) {
+ Integer i = (Integer) val ;
+ if ( i.intValue() == 0 ) return( false );
+ return( true );
+ }
+ if ( val instanceof String ) {
+ String s = (String) val ;
+ if ( s.equalsIgnoreCase("false") ||
+ s.equalsIgnoreCase("no") ) return( false );
+ return( true );
+ }
+ return( true );
}
public Object getProperty(String propName) {
1.12 +20 -20 xml-axis/java/src/org/apache/axis/client/Call.java
Index: Call.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/Call.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- Call.java 2001/10/15 20:49:51 1.11
+++ Call.java 2001/10/16 13:25:52 1.12
@@ -60,7 +60,6 @@
import org.apache.axis.Message;
import org.apache.axis.MessageContext;
import org.apache.axis.Constants;
-import org.apache.axis.encoding.ServiceDescription;
import org.apache.axis.encoding.TypeMappingRegistry;
import org.apache.axis.message.RPCParam;
import org.apache.axis.rpc.encoding.XMLType;
@@ -89,6 +88,13 @@
* interface. This class should be used to actually invoke the Web Service.
* It can be prefilled by a WSDL document (on the constructor to the Service
* object) or you can fill in the data yourself.
+ * <pre>
+ * Properties:
+ * NAMESPACE - Namespace URI of RPC Body
+ * SEND_TYPE_ATTR - Should we send the XSI type attributes (true/false)
+ * TIMEOUT - Timeout used by transport sender in seconds
+ * TRANSPORT_NAME - Name of transport handler to use
+ * </pre>
*
* @author Doug Davis (dug@us.ibm.com)
*/
@@ -97,11 +103,12 @@
static Category category = Category.getInstance(Call.class.getName());
private QName portTypeName = null ;
- private ServiceDescription serviceDesc = null ;
private String operationName = null ;
private Vector paramNames = null ;
private Vector paramTypes = null ;
private Vector paramModes = null ;
+ private String encodingStyle = null ;
+ private XMLType returnType = null ;
private AxisEngine engine = null ;
private MessageContext msgContext = null ;
@@ -112,6 +119,7 @@
private boolean maintainSession = false ;
+
// Our Transport, if any
private Transport transport = null ;
private String transportName = null ;
@@ -123,9 +131,10 @@
private Vector myHeaders = null;
- public static final String TRANSPORT_NAME = "transport_name" ;
- public static final String TIMEOUT = "timeout" ;
public static final String NAMESPACE = "namespace" ;
+ public static final String SEND_TYPE_ATTR = "send_type_attr" ;
+ public static final String TIMEOUT = "timeout" ;
+ public static final String TRANSPORT_NAME = "transport_name" ;
public static final String TRANSPORT_PROPERTY= "java.protocol.handler.pkgs";
/**
@@ -146,7 +155,6 @@
* Default constructor - not much else to say.
*/
public Call() {
- serviceDesc = new ServiceDescription(null, true);
setEngine( new AxisClient(configProvider) );
if ( !initialized ) initialize();
}
@@ -158,7 +166,7 @@
* @return String URI of the encoding style to use
*/
public String getEncodingStyle() {
- return( serviceDesc.getEncodingStyleURI() );
+ return( encodingStyle );
}
/**
@@ -167,7 +175,7 @@
* @param namespaceURI URI of the encoding to use.
*/
public void setEncodingStyle(String namespaceURI) {
- serviceDesc.setEncodingStyleURI( namespaceURI );
+ encodingStyle = namespaceURI ;
}
/**
@@ -201,10 +209,7 @@
* @param type XMLType of the return value.
*/
public void setReturnType(XMLType type) {
- QName qn = type.getType();
- serviceDesc.setReturnType(
- new org.apache.axis.utils.QName(qn.getNamespaceURI(),
- qn.getLocalPart()));
+ returnType = type ;
}
/**
@@ -220,9 +225,6 @@
if (paramModes != null) {
paramModes.clear();
}
- if (serviceDesc != null) {
- serviceDesc.removeAllParams();
- }
}
/**
@@ -756,7 +758,7 @@
public Object invoke(String namespace, String method, Object[] args)
throws AxisFault {
category.debug("Enter: Call::invoke(ns, meth, args)" );
- RPCElement body = new RPCElement(namespace, method, args, serviceDesc);
+ RPCElement body = new RPCElement(namespace, method, args);
Object ret = invoke( body );
category.debug("Exit: Call::invoke(ns, meth, args)" );
return ret;
@@ -809,15 +811,14 @@
}
}
- String uri = null;
- if (serviceDesc != null) uri = serviceDesc.getEncodingStyleURI();
+ String uri = encodingStyle ;
if (uri != null) reqEnv.setEncodingStyleURI(uri);
msgContext.setRequestMessage(reqMsg);
msgContext.setResponseMessage(resMsg);
reqEnv.addBodyElement(body);
- reqEnv.setMessageType(ServiceDescription.REQUEST);
+ reqEnv.setMessageType(Message.REQUEST);
if ( body.getPrefix() == null ) body.setPrefix( "m" );
if ( body.getNamespaceURI() == null ) {
@@ -859,7 +860,7 @@
/** This must happen before deserialization...
*/
- resMsg.setMessageType(ServiceDescription.RESPONSE);
+ resMsg.setMessageType(Message.RESPONSE);
resEnv = (SOAPEnvelope)resMsg.getAsSOAPEnvelope();
@@ -932,7 +933,6 @@
}
}
- msgContext.setServiceDescription(serviceDesc);
msgContext.setMaintainSession(maintainSession);
// set up message context if there is a transport
1.56 +5 -3 xml-axis/java/src/org/apache/axis/client/ServiceClient.java
Index: ServiceClient.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/ServiceClient.java,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -r1.55 -r1.56
--- ServiceClient.java 2001/10/11 19:44:15 1.55
+++ ServiceClient.java 2001/10/16 13:25:52 1.56
@@ -645,11 +645,14 @@
if (serviceDesc != null) uri = serviceDesc.getEncodingStyleURI();
if (uri != null) reqEnv.setEncodingStyleURI(uri);
+ if (serviceDesc != null && serviceDesc.isRPC())
+ msgContext.setProperty(MessageContext.ISRPC, "true" );
+
msgContext.setRequestMessage(reqMsg);
msgContext.setResponseMessage(resMsg);
reqEnv.addBodyElement(body);
- reqEnv.setMessageType(ServiceDescription.REQUEST);
+ reqEnv.setMessageType(Message.REQUEST);
if ( body.getPrefix() == null ) body.setPrefix( "m" );
if ( body.getNamespaceURI() == null ) {
@@ -690,7 +693,7 @@
/** This must happen before deserialization...
*/
- resMsg.setMessageType(ServiceDescription.RESPONSE);
+ resMsg.setMessageType(Message.RESPONSE);
resEnv = (SOAPEnvelope)resMsg.getAsSOAPEnvelope();
@@ -750,7 +753,6 @@
}
}
- msgContext.setServiceDescription(serviceDesc);
msgContext.setMaintainSession(maintainSession);
// set up message context if there is a transport
1.26 +0 -5 xml-axis/java/src/org/apache/axis/encoding/DeserializationContext.java
Index: DeserializationContext.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DeserializationContext.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- DeserializationContext.java 2001/10/03 15:30:04 1.25
+++ DeserializationContext.java 2001/10/16 13:25:52 1.26
@@ -279,11 +279,6 @@
return getQNameFromString(type);
}
- public ServiceDescription getServiceDescription()
- {
- return msgContext.getServiceDescription();
- }
-
public TypeMappingRegistry getTypeMappingRegistry()
{
return msgContext.getTypeMappingRegistry();
1.41 +4 -9 xml-axis/java/src/org/apache/axis/encoding/SerializationContext.java
Index: SerializationContext.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/SerializationContext.java,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- SerializationContext.java 2001/10/15 19:08:41 1.40
+++ SerializationContext.java 2001/10/16 13:25:52 1.41
@@ -58,6 +58,7 @@
import org.apache.axis.AxisEngine;
import org.apache.axis.Constants;
import org.apache.axis.MessageContext;
+import org.apache.axis.client.Call;
import org.apache.axis.utils.Mapping;
import org.apache.axis.utils.NSStack;
import org.apache.axis.utils.QName;
@@ -171,10 +172,9 @@
if (shouldSendMultiRefs != null)
doMultiRefs = shouldSendMultiRefs.booleanValue();
- ServiceDescription sd = msgContext.getServiceDescription();
- if (sd != null) {
- sendXSIType = sd.getSendTypeAttr();
- }
+ // Only turn this off is the user tells us to
+ if ( !msgContext.isPropertyTrue(Call.SEND_TYPE_ATTR, true ) )
+ sendXSIType = false ;
}
public void setSendDecl(boolean sendDecl)
@@ -184,11 +184,6 @@
public boolean shouldSendXSIType() {
return sendXSIType;
- }
-
- public ServiceDescription getServiceDescription()
- {
- return msgContext.getServiceDescription();
}
public TypeMappingRegistry getTypeMappingRegistry()
1.11 +3 -16 xml-axis/java/src/org/apache/axis/encoding/ServiceDescription.java
Index: ServiceDescription.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ServiceDescription.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- ServiceDescription.java 2001/10/15 20:49:51 1.10
+++ ServiceDescription.java 2001/10/16 13:25:52 1.11
@@ -56,6 +56,7 @@
*/
import org.apache.axis.Constants;
+import org.apache.axis.Message;
import org.apache.axis.utils.QName;
import java.util.Enumeration;
@@ -74,10 +75,6 @@
*/
public class ServiceDescription
{
- public static final String REQUEST = "Request";
- public static final String RESPONSE = "Response";
-
-
String name;
boolean serviceIsRPC = true;
private String encodingStyleURI = null;
@@ -152,16 +149,6 @@
returnType = type;
}
- public void setSendTypeAttr(boolean sendType)
- {
- sendXsiType = sendType;
- }
-
- public boolean getSendTypeAttr()
- {
- return sendXsiType;
- }
-
Param findByName(String name, Vector list)
{
Enumeration e = list.elements();
@@ -209,9 +196,9 @@
public QName getParamTypeByName(String messageType, String paramName)
{
if (messageType != null) {
- if (messageType.equals(REQUEST))
+ if (messageType.equals(Message.REQUEST))
return getInputParamTypeByName(paramName);
- if (messageType.equals(RESPONSE))
+ if (messageType.equals(Message.RESPONSE))
return getOutputParamTypeByName(paramName);
// Only understand these two at present...
1.8 +7 -8 xml-axis/java/src/org/apache/axis/message/BodyBuilder.java
Index: BodyBuilder.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/BodyBuilder.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- BodyBuilder.java 2001/10/03 15:30:05 1.7
+++ BodyBuilder.java 2001/10/16 13:25:52 1.8
@@ -6,8 +6,8 @@
*/
import org.apache.axis.Constants;
+import org.apache.axis.MessageContext;
import org.apache.axis.encoding.DeserializationContext;
-import org.apache.axis.encoding.ServiceDescription;
import org.apache.log4j.Category;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
@@ -66,8 +66,7 @@
* a) have an non-root element, or
* b) have a non-RPC service
*/
- ServiceDescription serviceDesc = context.getMessageContext().
- getServiceDescription();
+ MessageContext msgContext = context.getMessageContext();
if (localName.equals(Constants.ELEM_FAULT) &&
namespace.equals(Constants.URI_SOAP_ENV)) {
@@ -77,11 +76,11 @@
context);
} else if (!gotRPCElement &&
isRoot &&
- ((serviceDesc == null) || (serviceDesc.isRPC()))) {
- gotRPCElement = true;
- element = new RPCElement(namespace, localName, prefix,
- attributes, context);
- //handler = new RPCHandler((RPCElement)element);
+ msgContext.isPropertyTrue(MessageContext.ISRPC, true) ) {
+ gotRPCElement = true;
+ element = new RPCElement(namespace, localName, prefix,
+ attributes, context);
+ //handler = new RPCHandler((RPCElement)element);
} else {
element = new SOAPBodyElement(namespace, localName, prefix,
attributes, context);
1.8 +3 -2 xml-axis/java/src/org/apache/axis/message/RPCHandler.java
Index: RPCHandler.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/RPCHandler.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- RPCHandler.java 2001/10/03 15:30:05 1.7
+++ RPCHandler.java 2001/10/16 13:25:52 1.8
@@ -85,8 +85,9 @@
* - Cache typeMappingRegistry
* - Cache service description
*/
- ServiceDescription serviceDesc = context.getMessageContext().
- getServiceDescription();
+ ServiceDescription serviceDesc = (ServiceDescription)
+ context.getMessageContext().
+ getProperty(MessageContext.SERVICE_DESCRIPTION);
if (DEBUG_LOG) {
System.err.println("In RPCHandler.onStartChild()");
1.24 +1 -2 xml-axis/java/src/org/apache/axis/transport/http/HTTPSender.java
Index: HTTPSender.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/transport/http/HTTPSender.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- HTTPSender.java 2001/10/06 15:19:32 1.23
+++ HTTPSender.java 2001/10/16 13:25:52 1.24
@@ -384,8 +384,7 @@
outMsg = new Message( inp );
}
- outMsg.setMessageType(org.apache.axis.encoding.
- ServiceDescription.RESPONSE);
+ outMsg.setMessageType(org.apache.axis.Message.RESPONSE);
msgContext.setResponseMessage( outMsg );
// if we are maintaining session state,
1.30 +1 -1 xml-axis/java/src/org/apache/axis/transport/http/SimpleAxisServer.java
Index: SimpleAxisServer.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/transport/http/SimpleAxisServer.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- SimpleAxisServer.java 2001/10/04 15:42:43 1.29
+++ SimpleAxisServer.java 2001/10/16 13:25:52 1.30
@@ -203,7 +203,7 @@
// resetting state between requests:
// msgContext = new MessageContext();
// requestMsg = new Message("", "String");
- msgContext.setServiceDescription(null);
+ msgContext.clearProperty( MessageContext.SERVICE_DESCRIPTION );
msgContext.setTargetService(null);
msgContext.setResponseMessage(null);
msgContext.reset();
1.9 +1 -1 xml-axis/java/test/encoding/TestSer.java
Index: TestSer.java
===================================================================
RCS file: /home/cvs/xml-axis/java/test/encoding/TestSer.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- TestSer.java 2001/08/14 03:49:19 1.8
+++ TestSer.java 2001/10/16 13:25:52 1.9
@@ -59,7 +59,7 @@
StringReader reader = new StringReader(msgString);
DeserializationContext dser = new DeserializationContext(
- new InputSource(reader), msgContext, ServiceDescription.REQUEST);
+ new InputSource(reader), msgContext, org.apache.axis.Message.REQUEST);
reg = dser.getTypeMappingRegistry();
reg.addDeserializerFactory(dataQName, Data.class, DataSer.getFactory());
dser.parse();
1.9 +1 -1 xml-axis/java/test/encoding/TestString.java
Index: TestString.java
===================================================================
RCS file: /home/cvs/xml-axis/java/test/encoding/TestString.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- TestString.java 2001/08/04 16:09:18 1.8
+++ TestString.java 2001/10/16 13:25:52 1.9
@@ -39,7 +39,7 @@
StringReader reader = new StringReader(msgString);
DeserializationContext dser = new DeserializationContext(
- new InputSource(reader), msgContext, ServiceDescription.REQUEST);
+ new InputSource(reader), msgContext, org.apache.axis.Message.REQUEST);
dser.parse();
SOAPEnvelope env = dser.getEnvelope();
1.2 +3 -2 xml-axis/java/test/encoding/TestXsiType.java
Index: TestXsiType.java
===================================================================
RCS file: /home/cvs/xml-axis/java/test/encoding/TestXsiType.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestXsiType.java 2001/08/22 22:55:10 1.1
+++ TestXsiType.java 2001/10/16 13:25:52 1.2
@@ -7,6 +7,7 @@
import org.apache.axis.encoding.*;
import org.apache.axis.server.AxisServer;
import org.apache.axis.utils.QName;
+import org.apache.axis.client.Call;
import java.io.Writer;
import java.io.StringWriter;
@@ -34,9 +35,9 @@
ServiceDescription sd = new ServiceDescription("testXsiType", true);
// Don't serialize xsi:type attributes
- sd.setSendTypeAttr(false);
+ msgContext.setProperty(Call.SEND_TYPE_ATTR, "false" );
- msgContext.setServiceDescription(sd);
+ msgContext.setProperty(MessageContext.SERVICE_DESCRIPTION, sd);
SOAPEnvelope msg = new SOAPEnvelope();
RPCParam arg1 = new RPCParam("urn:myNamespace",