axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marc Boorshtein <marc.boorsht...@octetstring.com>
Subject Re: Going from Text Based XML to a SOAPBody?
Date Sun, 01 Aug 2004 20:58:39 GMT
I've made some great progress on this.  I now have almost what I am  
looking for.  I have the following code in my invoke method:

	public void invoke(MessageContext msgContext) throws AxisFault {
		System.out.println("In INVOKE!!!!!!!!");

		Message resMsg = msgContext.getResponseMessage();
		SOAPEnvelope resEnv;
		// If we didn't have a response message, make sure we set one up
		// with the appropriate versions of SOAP and Schema
		if (resMsg == null) {
			resEnv = new SOAPEnvelope(msgContext.getSOAPConstants(), msgContext
					.getSchemaVersion());

			resMsg = new Message(resEnv);
			msgContext.setResponseMessage(resMsg);
		} else {
			resEnv = resMsg.getSOAPEnvelope();
		}

		Message reqMsg = msgContext.getRequestMessage();
		SOAPEnvelope reqEnv = reqMsg.getSOAPEnvelope();

		DocumentBuilderFactory domFactory = DocumentBuilderFactory
				.newInstance();
		DocumentBuilder domBuilder = null;
		Document doc = null;
		try {
			domBuilder = domFactory.newDocumentBuilder();

			doc = domBuilder.parse("/Users/mlb/test.xml");

		} catch (Exception e) {
			e.printStackTrace();

		}

		RPCElement body = null;
		body = new RPCElement("rpc-resp");

		RPCElement resBody = new RPCElement("Response");
		resBody.setPrefix(body.getPrefix());
		resBody.setNamespaceURI(body.getNamespaceURI());
		try {
			resBody.setEncodingStyle(msgContext.getEncodingStyle());
			RPCParam param = new RPCParam(new QName("http://soapinterop.org/",
					"echoString"), doc);
			resBody.addParam(param);
			resEnv.addBodyElement(resBody);
		} catch (SOAPException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

	}

I took most of the code from the JavaProdiver and the RPCProvider.   
This will produce the following SOAP message:
<?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope  
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"  
xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       <soapenv:Body>
          <echoString xmlns="http://soapinterop.org/">
             <myxml xmlns="">	
                <val>test</val>	
                <val>test</val>	
                <val>test</val>
             </myxml>
          </echoString>
       </soapenv:Body>
    </soapenv:Envelope>

Everything is great except for the "<echoString" tag.  The tag is  
generated be the RPCParam  which deserizlized the Document object.  It  
looks like that at this point I need to look at the RPCParam class to  
see if I can create a version that will not create the wrapper tags and  
will just de-serialize the Document into the soap body.  Any thoughts?

------------------------------------------------------------------------ 
--------------------------
Marc Boorshtein
Sr. Software Engineer, Octet String
marc.boorshtein@octetstring.com
On Aug 1, 2004, at 1:36 PM, Vijai Mohan wrote:

> I think that will work.
>
>   
>
>  
>
> Vijai Mohan
>
> Software Design Engineer
>
> SensorLogic│M2M made easy.
>
> 972-934-7375 x 2111
>
> 972-934-7376 (fax)
>
> vmohan@sensorlogic.com
>
> www.Sensorlogic.com
>
>  <image.tiff>
>
>  
>
> -----Original Message-----
> From: Marc Boorshtein [mailto:marc.boorshtein@octetstring.com]
>  Sent: Sunday, August 01, 2004 1:33 PM
> To: axis-user@ws.apache.org
> Subject: Re: Going from Text Based XML to a SOAPBody?
>
>  
>
> Thanks for the tip, but this is a bit simple for what I'm looking to  
> do. I'd like to build a provider that will let me take the XML in the  
> request's body, perform some tasks to extract the information into an  
> object model and then pass that information into a dynamic content  
> generation system to generate some XML and add it to the SOAPBody.  
> From the looks of it, I can serialize the XML into Document as you  
> showed below, and then create an RPCElement and add it to the body as  
> it's done in RPCProvider. Is this correct?
>
>   
> ----------------------------------------------------------------------- 
> ---------------------------
>  Marc Boorshtein
>  Sr. Software Engineer, Octet String
>  marc.boorshtein@octetstring.com
>  On Aug 1, 2004, at 12:41 PM, Vijai Mohan wrote:
>
>
>
>  Create a simple webservice and use this snippet to return a xml  
> document
>  from an xml file.
>  Axis automatically converts the Document in to the soap body .
>
>
>  public static Document getXMLDocument(){
>  DocumentBuilderFactory domFactory = DocumentBuilderFactory
>  .newInstance();
>  DocumentBuilder domBuilder = null;
>  try {
>  domBuilder = domFactory.newDocumentBuilder();
>
>  Document doc = domBuilder.parse("c:\\XMLFILE.xml");
>
>  return doc;
>  } catch (Exception e) {
>  e.printStackTrace();
>  return null;
>  }
>  }
>
>  Vijai Mohan
>  Software Design Engineer
>  SensorLogic│M2M made easy.
>  972-934-7375 x 2111
>  972-934-7376 (fax)
>  vmohan@sensorlogic.com
>  www.Sensorlogic.com
>
>
>
>  -----Original Message-----
>  From: Marc Boorshtein [mailto:marc.boorshtein@octetstring.com]
>  Sent: Sunday, August 01, 2004 12:11 PM
>  To: axis-dev@ws.apache.org; axis-user@ws.apache.org
>  Subject: Going from Text Based XML to a SOAPBody?
>
>  Hello,
>
>  I am working on implementing a document service in which I want to  
> take
>  text representation of XML and add it to a SOAPBody. From the looks of
>  it, it appears that I have to use an XML Parser to go from
>  XML->SOAPElement in a similar way that I would parse XML into a DOM
>  Tree. The only problem is that I can't find this "parsing" class. I
>  found SOAPFactory, but it doesn't seem to be a parser. Am I missing
>  something?
>
>  Thanks!
>
>   
> ----------------------------------------------------------------------- 
> -
>  --------------------------
>  Marc Boorshtein
>  Sr. Software Engineer, Octet String
>  marc.boorshtein@octetstring.com
>
>

Mime
View raw message