Announcement Announcement Module
Collapse
No announcement yet.
Client side configuration Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • Client side configuration

    I'm having trouble configuring a spring-ws client to talk to the corresponding servlet. The current issue is that running connection.call(message, endpoint) produces the following output:
    Code:
    Mar 7, 2008 8:59:24 AM com.sun.xml.messaging.saaj.soap.MessageImpl saveChanges
    SEVERE: SAAJ0540: Error during saving a multipart message
    java.security.PrivilegedActionException: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Error during saving a multipart message
    I'm assuming this is related to either a malformed message, or an incorrect configuration setting for the servlet. I'm testing against apache tomcat 5.5. Here's the client code:
    Code:
    try {
                // Create a SOAPConnection
                SOAPConnectionFactory factory = SOAPConnectionFactory.newInstance();
    
                SOAPConnection connection = factory.createConnection();
                // Create a SOAPMessage
                MessageFactory messageFactory = MessageFactory.newInstance();
                SOAPMessage message = messageFactory.createMessage();
    
                SOAPPart soapPart = message.getSOAPPart();
                SOAPEnvelope envelope = soapPart.getEnvelope();
                envelope.addNamespaceDeclaration("xsd","http://www.w3.org/2001/XMLSchema");
                envelope.addNamespaceDeclaration("xsi","http://www.w3.org/2001/XMLSchema-instance");
                envelope.addNamespaceDeclaration("enc","http://schemas.xmlsoap.org/soap/encoding/");
                envelope.addNamespaceDeclaration("env","http://schemas.xmlsoap.org/soap/envelope/");
                envelope.setEncodingStyle("http://schemas.xmlsoap.org/soap/encoding/");
                
                SOAPHeader header = envelope.getHeader();
                SOAPBody body = envelope.getBody();
                header.detachNode();
                // Create a SOAPBodyElement
                Name bodyName = envelope.createName("PersonLookupRequest", "p", "http://localhost:8080/pl/schemas");
                
                SOAPBodyElement bodyElement = body.addBodyElement(bodyName);
                bodyElement.addNamespaceDeclaration("xsi", "http://www.w3.org/2001/XMLSchema-instance");
                bodyElement.setAttribute("xsi:schemaLocation", "http://localhost:8080/pl/schemas pl.xsd");
    
    
                // Insert Content
                SOAPElement symbol = bodyElement.addChildElement(envelope.createName("Name",
                        "p",
                "http://localhost:8080/pl/schemas"));
                symbol.addTextNode("p:SUNW");
                Name typeName = envelope.createName("type","xsi","string");
                
                symbol.addAttribute(typeName, "xsi:string");
    
                // Create an endpint point which is either URL or String type
                URL endpoint = new URL("http://localhost:8080/PersonLookup");
    
                // Check the input
                System.out.println(message.getSOAPPart().getEnvelope());
                
                // Send a SOAPMessage (request) and then wait for SOAPMessage (response)
                SOAPMessage response = connection.call(message, endpoint);
    
                System.out.println("\nRESPONSE:\n");
                // Create the transformer
                TransformerFactory transformerFactory = TransformerFactory.newInstance();
                Transformer transformer = transformerFactory.newTransformer();
                // Extract the content of the reply
                Source sourceContent = response.getSOAPPart().getContent();
                // Set the output for the transformation
                StreamResult result = new StreamResult(System.out);
                transformer.transform(sourceContent, result);
                System.out.println();
    
                // Close the SOAPConnection
                connection.close();
    
            }
            catch (Exception e) {
                System.out.println(e.getMessage());
            }
    Which produces the soap request:
    Code:
    <?xml version="1.0" encoding="UTF-16"?>
    <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Body><p:PersonLookupRequest xmlns:p="http://localhost:8080/pl/schemas" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://localhost:8080/pl/schemas pl.xsd"><p:Name xmlns:xsi="string" xsi:type="xsi:string">p:SUNW</p:Name></p:PersonLookupRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>
    The schema from pl.xsd:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    
            <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://localhost:8080/pl/schemas"
    xmlns="http://localhost:8080/pl/schemas"
    elementFormDefault="qualified">
        <xs:element name="PersonLookupRequest">
            <xs:complexType>
                <xs:all>
                    <xs:element name="Name" type="xs:string"/>       
                </xs:all>
            </xs:complexType>
        </xs:element>
        <xs:element name="PersonLookupResponse">
            <xs:complexType>
                <xs:all>
                    <xs:element name="Name" type="xs:string"/>   
                    <xs:element name="Email" type="xs:string"/>    
                </xs:all>
            </xs:complexType>
        </xs:element>
        
    </xs:schema>
    Help?

  • #2
    Also, if I navigate to index.html in my browser, I get a 405 error:
    The specified HTTP method is not allowed for the requested resource ().

    Comment

    Working...
    X