spring配置:
spring-ws-servlet.xml<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.1.xsd"> <bean id="echoEndpoint" class="echo.endpoint.EchoEndpoint">
<property name="echoService">
<ref bean="echoService" />
</property>
</bean> <bean id="echoService" class="echo.service.EchoServiceImpl" /> <bean
class="org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping">
<property name="mappings">
<props>
<prop key="{http://www.averconsulting.com/sample/schemas}Request">
echoEndpoint</prop>
</props>
</property>
<property name="interceptors">
<bean
class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor" />
</property>
</bean> <bean id="sample"
class="org.springframework.ws.wsdl.wsdl11.DynamicWsdl11Definition">
<property name="builder">
<bean
class="org.springframework.ws.wsdl.wsdl11.builder.XsdBasedSoap11Wsdl4jDefinitionBuilder">
<property name="schema" value="/WEB-INF/sample.xsd" />
<property name="portTypeName" value="sample" />
<property name="locationUri" value="http://localhost:9090/sample-wsdl/" />
</bean>
</property>
</bean>
</beans>

sample.xsd 内容为:<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:ec="http://www.averconsulting.com/sample/schemas" elementFormDefault="qualified"
    targetNamespace="http://www.averconsulting.com/sample/schemas">
    <xs:element name="Request">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="request1" type="xs:string"/>
                 <xs:element name="request2" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Response">
        <xs:complexType>
            <xs:all>
                <xs:element name="response" type="xs:string"/>
            </xs:all>
        </xs:complexType>
    </xs:element>
</xs:schema>
由于我对webservice不是很熟悉,才开始入门,请大家指教,我该怎么写一个客户端去调用这个webservice?我的endpoint,EchoEndpoint.java内容为:package echo.endpoint;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.Namespace;
import org.jdom.output.XMLOutputter;
import org.jdom.xpath.XPath;
import org.springframework.ws.server.endpoint.AbstractJDomPayloadEndpoint;import echo.service.EchoService;public class EchoEndpoint extends AbstractJDomPayloadEndpoint {
    private EchoService echoService;    public void setEchoService(EchoService echoService) {
        this.echoService = echoService;
    }    protected Element invokeInternal(Element request) throws Exception {
     
        System.out.println("XML Doc >> ");
        System.out.println(request.getName() + "=====================");
        XMLOutputter xmlOutputter = new XMLOutputter();
        xmlOutputter.output(request, System.out);        Namespace namespace = Namespace.getNamespace("ec", "http://www.averconsulting.com/sample/schemas");
        
        XPath nameExpression1 = XPath.newInstance("concat(//ec:request1,' ',//ec:request2)");
        //concat(//hr:FirstName,' ',//hr:LastName)
        
        nameExpression1.addNamespace(namespace);
        String name1 = nameExpression1.valueOf(request);
        
        XPath nameExpression2 = XPath.newInstance("//ec:request2");
        nameExpression2.addNamespace(namespace);
        String name2 = nameExpression2.valueOf(request);
        
        String msg = echoService.echo(name1 , name2);
        
        Namespace echoNamespace = Namespace.getNamespace("ec", "http://www.averconsulting.com/sample/schemas");
        Element root = new Element("Response", echoNamespace);
        Element echoResponse = new Element("response", echoNamespace);
        root.addContent(echoResponse);
        echoResponse.addContent(msg);
        Document doc = new Document(root);        // return response XML
        System.out.println();
        System.out.println("XML Response Doc >> ");
        xmlOutputter.output(doc, System.out);
        return root;// doc.getRootElement();
    }
}