From 2a1a6ba22e756068dda838ce1b44e5cb077bcf39 Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Wed, 19 Mar 2008 22:28:42 +0000 Subject: [PATCH] SWS-306 --- src/docbkx/server.xml | 70 +++++++++++++++++++++++++++++++++---------- 1 file changed, 54 insertions(+), 16 deletions(-) diff --git a/src/docbkx/server.xml b/src/docbkx/server.xml index d5a38345..c2dc519e 100644 --- a/src/docbkx/server.xml +++ b/src/docbkx/server.xml @@ -175,6 +175,15 @@ servlet context path as appropriate). + + + All WsdlDefinition bean definitions are exposed by the + MessageDispatcherServlet under their bean id (or bean id) with the + suffix .wsdl. So if the bean id is echo, the host name + is "server", and the Servlet context (war name) is "spring-ws", the WSDL can be + obtained via http://server/spring-ws/echo.wsdl + + Another cool feature of the MessageDispatcherServlet (or more correctly the WsdlDefinitionHandlerAdapter) is that it is able to @@ -214,28 +223,25 @@ The next application context snippet shows how to create such a dynamic WSDL file: - - - - - - - + + + + + + + + ]]> - The DynamicWsdl11Definition uses a - Wsdl11DefinitionBuilder implementation - to generate a WSDL the first time it is requested. - Typically, we use a XsdBasedSoap11Wsdl4jDefinitionBuilder, which builds - a WSDL from a XSD schema. This builder iterates over all element elements - found in the schema, and creates a message for elements that end with the + The DefaultWsdl11Definition which builds + a WSDL from a XSD schema. This definition iterates over all element elements + found in the schema, and creates a message for all elements. Next, it creates + WSDL operation for all messages that end with the defined request or response suffix. The default request suffix is Request; the default response suffix is Response, though these can be changed by setting the requestSuffix and responseSuffix properties, respectively. - Next, the builder combines the request and response messages into a WSDL - operations, and builds a portType based on the operations. + It also builds a portType, binding, and service based on the operations. For instance, if our Orders.xsd schema defines the @@ -244,6 +250,38 @@ GetOrdersRequest and GetOrdersResponse message, and a GetOrders operation, which is put in a Orders port type. + + If you want to use multiple schemas, either by includes or imports, you might want to use the + CommonsXsdSchemaCollection, and refer to that from the + DefaultWsdl11Definition, like so: + + + + This bean wrap the messages.xsd (which imports types.xsd), and inlines them as a one. + + + + /WEB-INF/xsds/Orders.xsd + /WEB-INF/xsds/Customers.xsd + + + +]]> + + When the inline property is enabled, it folows all XSD imports and includes, + and inlines them in the WSDL. This greatly simplifies the deloyment of the schemas, which still + making it possible to edit them separately. + + + The DefaultWsdl11Definition uses WSDL providers in the + org.springframework.ws.wsdl.wsdl11.provider package and the + ProviderBasedWsdl4jDefinition + to generate a WSDL the first time it is requested. + Refer to the class-level Javadoc of these classes to see how you can extend this mechanism, + if necessary. + +