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();
}
}
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();
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货