Spring-WS WSDL Generation Problem

I am trying to make a very simple web service and I am having some difficulties creating spring creating the correct wsdl. I did my best to copy an example from this spring tutorial . If someone knows what I'm doing wrong, I would be very grateful for the help.

In essence, there is one EndPoint called IncidentHeaderEndpoint (which currently has no functions). I want clients to invoke an xml request in the form:

<browseIncidents> <responsibleManager>foo</responsibleManager> </browseIncidents> 

My EndPoint is as follows:

 public class IncidentHeaderEndpoint extends AbstractJDomPayloadEndpoint { XPath respMgrExpression; public IncidentHeaderEndpoint() { Namespace namespace = Namespace.getNamespace("trust-service", "http://act-informatics.co.uk/trust-service/schemas"); try { respMgrExpression = XPath.newInstance("//trust-service:StartDate"); respMgrExpression.addNamespace(namespace); } catch (JDOMException e) { e.printStackTrace(); } } protected Element invokeInternal(Element request) throws Exception { String respMgr = respMgrExpression.valueOf(request); return null; } } 

When I deploy to tomcat, I get the following warnings:

 14-Oct-2010 13:08:43 org.springframework.ws.wsdl.wsdl11.provider.DefaultMessagesProvider addMessages WARNING: No messages were created, make sure the referenced schema(s) contain elements 14-Oct-2010 13:08:43 org.springframework.ws.wsdl.wsdl11.provider.AbstractPortTypesProvider createOperations WARNING: No operations were created, make sure the WSDL contains messages 

This is my spring config:

 <!-- TRUST WEB SERVICES --> <bean id="incidentHeaderEndpoint" class="co.uk.act.cics.ws.IncidentHeaderEndpoint" /> <!-- Routing Mapping --> <bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping"> <property name="mappings"> <props> <prop key="{http://act-informatics.co.uk/trust-service/schemas}BrowseIncidents">incidentHeaderEndpoint</prop> </props> </property> <property name="interceptors"> <bean class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor" /> </property> </bean> <!-- WSDL Generation --> <bean id="browse" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition"> <property name="schema" ref="trust-schema" /> <property name="portTypeName" value="TrustService" /> <property name="locationUri" value="http://localhost:8080/trust-service/browseIncidents/" /> <property name="targetNamespace" value="http://act-informatics.co.uk/trust-service/definitions"/> </bean> <bean id="trust-schema" class="org.springframework.xml.xsd.SimpleXsdSchema"> <property name="xsd" value="/WEB-INF/trust-service.xsd" /> </bean> 

This is my scheme - WEB-INF / trust-service.xsd:

 <?xml version="1.0" encoding="UTF-8"?>` <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://act-informatics.co.uk/trust-service/schemas" xmlns:schemas="http://act-informatics.co.uk/trust-service/schemas"> <xs:element name="browseIncidents"> <xs:complexType> <xs:sequence> <xs:element name="responsibleManager" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> 

and this is the problematic WSDL located at http: // localhost: 8080 / trust-service / browseIncidents / browse.wsdl :

 <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:sch="http://act-informatics.co.uk/trust-service/schemas" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://act-informatics.co.uk/trust-service/definitions" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://act-informatics.co.uk/trust-service/definitions"> <wsdl:types> <xs:schema xmlns:schemas="http://act-informatics.co.uk/trust-service/schemas" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://act-informatics.co.uk/trust-service/schemas"> <xs:element name="browseIncidents"> <xs:complexType> <xs:sequence> <xs:element name="responsibleManager" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </wsdl:types> <wsdl:portType name="TrustService"> </wsdl:portType> <wsdl:binding name="TrustServiceSoap11" type="tns:TrustService"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> </wsdl:binding> <wsdl:service name="TrustServiceService"> <wsdl:port binding="tns:TrustServiceSoap11" name="TrustServiceSoap11"> <soap:address location="http://localhost:8080/trust-service/browseIncidents/"/> </wsdl:port> </wsdl:service> </wsdl:definitions> 
+4
source share
1 answer

The names of the input and output elements in your xsd must have a suffix as the request and response. then only spring-ws will identify it as input and output parameters.

if you have OrderRequest and OrderResponse elements, an operation named Order will be created using input and output as OrderRequest and OrderResponse

+12
source

All Articles