Hallo,
ich versuche momentan, mittels eines JSP Scripts einen SOAP Request an ein Servlet zu schicken. Dieses soll dann die SOAP Message parsen und mit den erhaltenen Daten eine Datenbankabfrage durchführen.
Momentan baue ich die Verarbeitung der SOAP Message im Servlet. Dazu habe ich ein Bsp.-Servlet zu Testzwecken programmiert:
import javax.servlet.*;
import javax.servlet.http.*;
import javax.xml.soap.*;
public class RequestHandler extends HttpServlet {
public static void main(String args[]/*SOAPMessage message*/){
try {
// create message for test purposes
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection connection = soapConnectionFactory.createConnection();
SOAPFactory soapFactory = SOAPFactory.newInstance();
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message = factory.createMessage();
SOAPHeader header = message.getSOAPHeader();
SOAPBody body = message.getSOAPBody();
header.detachNode();
Name bodyName = soapFactory.createName(„getAddress“, „m“, „!!!ANY NAMESPACE!!!“);
SOAPBodyElement getaddress = body.addBodyElement(bodyName);
Name name = soapFactory.createName(„test_coordinates“);
SOAPElement test_coordinates = getaddress.addChildElement(name);
Name xc = soapFactory.createName(„xcoordinate“);
Name yc = soapFactory.createName(„ycoordinate“);
SOAPElement test_xcoordinate = test_coordinates.addChildElement(xc);
SOAPElement test_ycoordinate = test_coordinates.addChildElement(yc);
test_xcoordinate.addTextNode(„xcoord“);
test_ycoordinate.addTextNode(„ycoord“);
////////////// parse SOAP message
SOAPBody responseBody = message.getSOAPBody();
Name coordinates = responseBody.getElementName();
Iterator iterator = responseBody.getChildElements(coordinates);
String test =iterator.toString();
System.out.print(iterator);
SOAPBodyElement bodyElementResponse = (SOAPBodyElement)iterator.next();
} catch (Exception ex) {ex.printStackTrace();}
} // end main()
} // end RequestHandler
Ich hoffe, der Code ist nicht zu unübersichtlich. Jedenfalls bekomme ich nach diversen Library-Includes folgende Fehlermeldung beim Ausführen:
com.sun.xml.messaging.saaj.soap.impl.ElementImpl$[email protected]
at com.sun.xml.messaging.saaj.soap.impl.ElementImpl$3.next(ElementImpl.java:499)
at RequestHandler.main(RequestHandler.java:72)
Ich glaube, dass eine anonyme Klasse in der Funktion ElementImpl() fehlt, o. Ä.
Mit der Bitte um eine baldige Antwort,
Bernd.