You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-dev@xml.apache.org by Iain Potter <ip...@prismtechnologies.com> on 2002/03/08 12:49:11 UTC

[Re: soap messaging XML ???]

Hi,

Have you looked at Sun's JAXM specification? Basically, it's a 
standardised SOAP API for Java.

We're currently developing an implementation of the JAXM Version 1.0 
specification which should be available soon. We allow SOAP messages to 
be transported over HTTP or JMS.

JAXM uses MessageFactory objects to produce SOAPMessage instances, which 
you then populate with your message content. If you're sending via HTTP, 
you'll generally use a SOAPConnection object to do this. Anyway, here's 
an example of how you could use JAXM to produce the same message and 
send to an endpoint via HTTP:-

----------
SOAPConnectionFactory connectionFactory = 
SOAPConnectionFactory.newInstance();
SOAPConnection connection = connectionFactory.createConnection();
MessageFactory factory = MessageFactory.newInstance();

SOAPMessage message = factory.createMessage();
SOAPPart soapPart = message.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPBody body = envelope.getBody();

Name name = envelope.createName("methodToCall", "ns1", 
"uri:MySoapObjectToCall");
SOAPBodyElement element = body.addBodyElement(name);

URLEndpoint endpoint = new URLEndpoint(some_url);
SOAPMessage reply = connection.call(message, endpoint);
-------------

Obviously, you will only receive a reply from the connection.send() call 
if one is actually sent back!

What is also quite nice is that it's very easy to create SOAPMessage 
instances from an XML file. All you need to do is create an InputStream 
containing the file content, and set the "Content-Type" MIME header for 
the message (you can also set other MIME headers if you wish). So, the 
code would be:-

-------------
SOAPConnectionFactory connectionFactory = 
SOAPConnectionFactory.newInstance();
SOAPConnection connection = connectionFactory.createConnection();
MessageFactory factory = MessageFactory.newInstance();
FileInputStream inputStream = new FileInputStream(new 
File("some_xml_file.xml"));
MimeHeaders headers = new MimeHeaders();
headers.addHeader("Content-Type", "text/xml");
SOAPMessage message = factory.createMessage(headers, inputStream);
SOAPMessage reply = connection.call(message, new URLEndpoint("some_url"));
-------------

Really easy!

Feel free to mail me at ip@prismtechnologies.com for more information on 
our JAXM implementation. Alternatively, our website is 
http://www.prismtechnologies.com

Thanks,
Iain

-----Original Message----- >From: Beer, Christian [mailto:BEE@DIRON.de] 
 >Sent: 08 March 2002 10:27 >To: 'soap-user@xml.apache.org' >Subject: 
AW: soap messaging XML ??? > > >

Try it this way: > >------- >
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 >DocumentBuilder db = dbf.newDocumentBuilder(); >Document doc = 
db.newDocument(); >Element methodCall = 
doc.createElement("ns1:methodToCall"); 
 >methodCall.setAttribute("xmlns:ns1", "uri:MySoapObjectToCall); 
 >methodCall.appendChild(message_body_element); > >Body body = new 
Body(); >Vector bodyEntries = new Vector(); 
 >bodyEntries.add(methodCall); >body.setBodyEntries(bodyEntries); > 
 >Envelope msgEnvelope = new Envelope(); >msgEnvelope.setBody(body); > 
 >Message msg = new Message(); > >msg.send(endpoint, "", msgEnvelope); 
 >------- > >Christian > >-----Ursprüngliche Nachricht----- >Von: Shashi 
Anand [mailto:Shashia@india.infogain.com] >Gesendet: Freitag, 8. März 
2002 11:14 >An: SOAP@DISCUSS.DEVELOP.COM; soap-dev@xml.apache.org; 
 >soap-user@xml.apache.org >Betreff: soap messaging XML ??? > > >Hi, > 
 >One strange thing I noticed is that all the tutorials explaining the 
SOAP >messaging assume whole SOAP message to be readilly available in 
XML file, >where as this is not the case. None of tutorials explain how 
to form this >SOAP message given the XML which is only part of message 
body. >Does somebody have any idea on how to form the SOAP message using 
API. > >+Shashi Anand >(Senior Software Engineer >8Infogain India >OB 15 
Sec 58, NOida, UP 201301, India > > > -- Iain Potter Senior Software 
Engineer PrismTech Limited www.prismtechnologies.com

-- 

Iain Potter
Senior Software Engineer
PrismTech Limited

www.prismtechnologies.com