There is no exception. I monitor the output on the server console (Tomcat). Can someone try this and show me how to get this working?
-----Original Message----- From: Lanto Randriamiharisoa [mailto:[EMAIL PROTECTED] Sent: Wednesday, March 03, 2004 5:30 AM To: [EMAIL PROTECTED] Subject: [despammed] Re: Why can't I modify a SOAP message? Are you sure you have no exception raised ? Because the exception cathing block uses "System.out.println" instead of "log", perhaps you didn't take a look at your servlet's console or it's corresponding file... Steve Smith wrote: >I have a simple servlet which reads in a soap message, parses the >XML payload and attempts to add a single element to the existing >(soap message just read in)soap message. I receive the soap message >(from client) and display the elements to log file - no problem. >However, when I add an element to the soap message and return the >message the change does not take place. It's as if I never changed >the message. Can I modify the soap message I just read? Do I have to >recreate a new message from scratch or is there something I'm missing? >The servlet code is below. Thanks for any help. > >SLS > >------------------ > >// >// ModifySoapMsgService.java >// >// This program reads a SOAP message and returns a modify version of >// the same >// message back to the client application (requester). >// >// >// Build Instructions: >// o set classpath= <tomcat path>\common\lib\servlet.jar >// o javac ModifySoapMsgService.java >// o Copy ModifySoapMsgService.class file to >// <your web apps path>\MyWsApps\WEB-INF\classes >// o Call from client application (ModifySoapMsgClient). >// > > > >/* Servlet related packages. */ >import javax.servlet.*; // Generic servlet package. >import javax.servlet.http.*; // Web server extensions to encapsulate HTTP >communication. > >/* SOAP related packages. */ >import javax.xml.soap.MessageFactory; >import javax.xml.soap.SOAPMessage; >import javax.xml.soap.SOAPPart; >import javax.xml.soap.SOAPEnvelope; >import javax.xml.soap.SOAPHeader; >import javax.xml.soap.SOAPBody; >import javax.xml.soap.MimeHeaders; >import javax.xml.soap.SOAPException; >import javax.xml.soap.Name; >import javax.xml.soap.SOAPBodyElement; >import javax.xml.soap.SOAPElement; > >/* Other needed packages. */ >import java.io.*; >import java.util.Iterator; > > >public class ModifySoapMsgService extends HttpServlet{ > private static MessageFactory myMsgFactory; > > /* Create static instance of message factory. */ > static{ > try { > /* Create a new message factory. */ > myMsgFactory = MessageFactory.newInstance(); > > }catch(SOAPException e){ > System.out.println("Caught Exception: " + e.getMessage()); > } > } > > > public void init(ServletConfig servletConfig) throws ServletException{ > super.init(servletConfig); // Initialize servlet w/config info >passed by Tomcat. > } > > public void doPost(HttpServletRequest request, > HttpServletResponse response) throws IOException, > ServletException{ > SOAPMessage mySoapMsg; > > System.out.println("\n\nModifySoapMsgSerice.doPost() - Received SOAP >message..."); > log("doPost() ..."); > try{ > InputStream myInputStream = request.getInputStream(); > OutputStream myOutputStream = response.getOutputStream(); > > log("o Reading SOAP message ..."); > /* Create SOAP message from SOAP content (sent by client) of >input stream. */ > mySoapMsg = myMsgFactory.createMessage(new >MimeHeaders(),myInputStream); > > /* Process SOAP message. */ > SOAPMessage reply=null; > reply = onMessage(mySoapMsg); > > /* Return modified SOAP message. */ > System.out.println("ModifySoapMsgSerice.doPost() - Return >results..."); > reply.saveChanges(); > reply.writeTo(myOutputStream); > myOutputStream.flush(); > }catch(Exception e){ > throw new ServletException("doPost failed: " + e.getMessage()); > } > } > > > public SOAPMessage onMessage(SOAPMessage inSoapMsg){ > SOAPPart mySoapPart; > SOAPEnvelope mySoapEnvelope; > SOAPHeader mySoapHeader; > SOAPBody mySoapBody; > SOAPBodyElement myAppFormElement; > SOAPElement myApplicantElement; > SOAPElement myNameElement; > SOAPElement myAddressElement; > SOAPElement myPhoneNoElement; > SOAPElement myAgeElement; > SOAPElement myBeneficiaryElement; > Iterator myElementIterator; // Create iterator for child >elements. > Name myElementName; > String nsUri = "http://ltree.com/app"; > String nsPrefix = "lt"; > ByteArrayOutputStream myByteArray = new ByteArrayOutputStream(); > > > System.out.println("ModifySoapMsgSerice.onMessage() - Processing >SOAP message..."); > log("doMessage() ..."); > > try{ > /* Log SOAP message just read in. */ > inSoapMsg.writeTo(myByteArray); > log("o inSoapMsg: " + myByteArray.toString()); > > /* Get SOAP part from message. */ > mySoapPart = inSoapMsg.getSOAPPart(); > > /* Get envelope from SOAP part. */ > mySoapEnvelope = mySoapPart.getEnvelope(); > > /* Get header from SOAP envelope. */ > mySoapHeader = mySoapEnvelope.getHeader(); > > /* Get body from envelope. */ > mySoapBody = mySoapEnvelope.getBody(); > > /* > * Parse message body. > * > * <lt:AppForm term="life" xmlns:lt="http://ltree.com/app"> > * <lt:Applicant> > * <lt:Name>Pat Brown</lt:Name> > * <lt:Address>123 Main St</lt:Address> > * <lt:PhoneNo>123-4567</lt:PhoneNo> > * </lt:Applicant> > * <lt:Beneficiary>Dale Brown</lt:Beneficiary> > * </lt:AppForm> > */ > /* - Get <AppForm> element. */ > myElementName = >mySoapEnvelope.createName("AppForm",nsPrefix,nsUri); // Creates element >name. > myElementIterator = mySoapBody.getChildElements(myElementName); >// Get child element iterator. > myAppFormElement = (SOAPBodyElement)myElementIterator.next(); // >Get <AppForm> element. > log("o Read <" + myAppFormElement.getElementName().getLocalName() + "> >element"); > > /* - Get <Applicant> element of <AppForm>. */ > myElementName = >mySoapEnvelope.createName("Applicant",nsPrefix,nsUri); > myElementIterator = >myAppFormElement.getChildElements(myElementName); // Get child element >iterator. > myApplicantElement = (SOAPElement)myElementIterator.next(); // >Get <Applicant> element. > log("o Read <" + > myApplicantElement.getElementName().getLocalName() + "> >element"); > > /* - Get <Name> element of <Applicant>. */ > myElementName = >mySoapEnvelope.createName("Name",nsPrefix,nsUri); > myElementIterator = >myApplicantElement.getChildElements(myElementName); // Get child element >iterator. > myNameElement = (SOAPElement)myElementIterator.next(); // Get ><Name> element. > log("o Read <" + myNameElement.getElementName().getLocalName() > + "> >element"); > log(" - <Name> value: " + myNameElement.getValue()); > > /* - Get <Address> element of <Applicant>. */ > myElementName = >mySoapEnvelope.createName("Address",nsPrefix,nsUri); > myElementIterator = >myApplicantElement.getChildElements(myElementName); // Get child element >iterator. > myAddressElement = (SOAPElement)myElementIterator.next(); // Get ><Address> element. > log("o Read <" + > myAddressElement.getElementName().getLocalName() + "> >element"); > log(" - <Address> value: " + myAddressElement.getValue()); > > /* - Get <PhoneNo> element of <Applicant>. */ > myElementName = >mySoapEnvelope.createName("PhoneNo",nsPrefix,nsUri); > myElementIterator = >myApplicantElement.getChildElements(myElementName); // Get child element >iterator. > myPhoneNoElement = (SOAPElement)myElementIterator.next(); // Get ><PhoneNo> element. > log("o Read <" + > myPhoneNoElement.getElementName().getLocalName() + "> >element"); > log(" - <PhoneNo> value: " + myPhoneNoElement.getValue()); > > /* - Get <Beneficiary> element of <AppForm>. */ > myElementName = >mySoapEnvelope.createName("Beneficiary",nsPrefix,nsUri); > myElementIterator = >myAppFormElement.getChildElements(myElementName); // Get child element >iterator. > myBeneficiaryElement = (SOAPElement)myElementIterator.next(); // >Get <Beneficiary> element. > log("o Read <" + > myBeneficiaryElement.getElementName().getLocalName() + >"> element"); > log(" - <Beneficiary> value: " + >myBeneficiaryElement.getValue()); > > > > /* > * Modify message body. > */ > /* - Add <Age> sub-element "<lt:Age>32</lt:Age>" to <Applicant>. >*/ > myElementName = mySoapEnvelope.createName("Age",nsPrefix,nsUri); > myAgeElement = >myApplicantElement.addChildElement(myElementName); > myAgeElement.addTextNode("32"); > > inSoapMsg.saveChanges(); > > log("o <Age> element: " + myAgeElement.getValue()); > myByteArray.reset(); > inSoapMsg.writeTo(myByteArray); > log("o inSoapMsg: " + myByteArray.toString()); > > }catch(Exception e){ > System.out.println("Caught Exception: " + e.getMessage()); > } > > return inSoapMsg; > } > >} > > > ---------------------------------------------- Filtered by despammed.com. Tracer: 1078310209 Consider a PayPal donation to help Despammed stay a step or two ahead of the bad guys. A new PayPal donation button is now on the home page. Thanks!
