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
[EMAIL PROTECTED]
On Aug 1, 2004, at 1:36 PM, Vijai Mohan wrote:
<x-tad-bigger>I think that will work.</x-tad-bigger>
<x-tad-bigger> Â</x-tad-bigger>
<x-tad-bigger>Â</x-tad-bigger>
<x-tad-bigger>Vijai Mohan</x-tad-bigger>
<x-tad-bigger>Software Design Engineer</x-tad-bigger>
<x-tad-bigger>SensorLogic</x-tad-bigger><x-tad-bigger>â</x-tad-bigger><x-tad-bigger> </x-tad-bigger><x-tad-bigger>made easy.</x-tad-bigger>
<x-tad-bigger>972-934-7375 x 2111</x-tad-bigger>
<x-tad-bigger>972-934-7376 (fax)</x-tad-bigger>
<x-tad-bigger>[EMAIL PROTECTED]</x-tad-bigger>
<x-tad-bigger>www.Sensorlogic.com</x-tad-bigger>
Â<image.tiff>
<x-tad-bigger>Â</x-tad-bigger>
<x-tad-bigger>-----Original Message-----</x-tad-bigger>
<x-tad-bigger>From:</x-tad-bigger><x-tad-bigger> Marc Boorshtein [mailto:[EMAIL PROTECTED]</x-tad-bigger>
<x-tad-bigger> </x-tad-bigger><x-tad-bigger>Sent:</x-tad-bigger><x-tad-bigger> Sunday, August 01, 2004 1:33 PM</x-tad-bigger>
<x-tad-bigger>To:</x-tad-bigger><x-tad-bigger> [EMAIL PROTECTED]</x-tad-bigger>
<x-tad-bigger>Subject:</x-tad-bigger><x-tad-bigger> Re: Going from Text Based XML to a SOAPBody?</x-tad-bigger>
Â
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
[EMAIL PROTECTED]
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)
[EMAIL PROTECTED]
www.Sensorlogic.com
-----Original Message-----
From: Marc Boorshtein [mailto:[EMAIL PROTECTED]
Sent: Sunday, August 01, 2004 12:11 PM
To: [EMAIL PROTECTED]; [EMAIL PROTECTED]
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
[EMAIL PROTECTED]
