Class WsdlDefinitionHandlerAdapter

All Implemented Interfaces:
org.springframework.beans.factory.InitializingBean, org.springframework.web.servlet.HandlerAdapter

public class WsdlDefinitionHandlerAdapter extends LocationTransformerObjectSupport implements org.springframework.web.servlet.HandlerAdapter, org.springframework.beans.factory.InitializingBean
Adapter to use the WsdlDefinition interface with the generic DispatcherServlet.

Reads the source from the mapped WsdlDefinition implementation, and writes that as the result to the HttpServletResponse.

If the property transformLocations is set to true, this adapter will change location attributes in the WSDL definition to reflect the URL of the incoming request. If the location field in the original WSDL is an absolute path, the scheme, hostname, and port will be changed. If the location is a relative path, the scheme, hostname, port, and context path will be prepended. This behavior can be customized by overriding the transformLocation() method.

For instance, if the location attribute defined in the WSDL is http://localhost:8080/context/services/myService, and the request URI for the WSDL is http://example.com/context/myService.wsdl, the location will be changed to http://example.com/context/services/myService.

If the location attribute defined in the WSDL is /services/myService, and the request URI for the WSDL is http://example.com:8080/context/myService.wsdl, the location will be changed to http://example.com:8080/context/services/myService.

When transformLocations is enabled, all location attributes found in the WSDL definition are changed by default. This behavior can be customized by changing the locationExpression property, which is an XPath expression that matches the attributes to change.

Since:
1.0.0
Author:
Arjen Poutsma
See Also:
  • Field Details

    • DEFAULT_LOCATION_EXPRESSION

      public static final String DEFAULT_LOCATION_EXPRESSION
      Default XPath expression used for extracting all location attributes from the WSDL definition.
      See Also:
    • DEFAULT_SCHEMA_LOCATION_EXPRESSION

      public static final String DEFAULT_SCHEMA_LOCATION_EXPRESSION
      Default XPath expression used for extracting all schemaLocation attributes from the WSDL definition.
      See Also:
  • Constructor Details

    • WsdlDefinitionHandlerAdapter

      public WsdlDefinitionHandlerAdapter()
  • Method Details

    • setLocationExpression

      public void setLocationExpression(String locationExpression)
      Sets the XPath expression used for extracting the location attributes from the WSDL 1.1 definition.

      Defaults to DEFAULT_LOCATION_EXPRESSION.

    • setSchemaLocationExpression

      public void setSchemaLocationExpression(String schemaLocationExpression)
      Sets the XPath expression used for extracting the schemaLocation attributes from the WSDL 1.1 definition.

      Defaults to DEFAULT_SCHEMA_LOCATION_EXPRESSION.

    • setTransformLocations

      public void setTransformLocations(boolean transformLocations)
      Sets whether relative address locations in the WSDL are to be transformed using the request URI of the incoming HttpServletRequest. Defaults to false.
    • setTransformSchemaLocations

      public void setTransformSchemaLocations(boolean transformSchemaLocations)
      Sets whether relative address schema locations in the WSDL are to be transformed using the request URI of the incoming HttpServletRequest. Defaults to false.
    • getLastModified

      public long getLastModified(jakarta.servlet.http.HttpServletRequest request, Object handler)
      Specified by:
      getLastModified in interface org.springframework.web.servlet.HandlerAdapter
    • handle

      public org.springframework.web.servlet.ModelAndView handle(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, Object handler) throws Exception
      Specified by:
      handle in interface org.springframework.web.servlet.HandlerAdapter
      Throws:
      Exception
    • supports

      public boolean supports(Object handler)
      Specified by:
      supports in interface org.springframework.web.servlet.HandlerAdapter
    • afterPropertiesSet

      public void afterPropertiesSet() throws Exception
      Specified by:
      afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
      Throws:
      Exception
    • transformLocations

      protected void transformLocations(Document definitionDocument, jakarta.servlet.http.HttpServletRequest request) throws Exception
      Transforms all location attributes to reflect the server name given HttpServletRequest. Determines the suitable attributes by evaluating the defined XPath expression, and delegates to transformLocation to do the transformation for all attributes that match.

      This method is only called when the transformLocations property is true.

      Throws:
      Exception
      See Also:
    • transformSchemaLocations

      protected void transformSchemaLocations(Document definitionDocument, jakarta.servlet.http.HttpServletRequest request) throws Exception
      Transforms all schemaLocation attributes to reflect the server name given HttpServletRequest. Determines the suitable attributes by evaluating the defined XPath expression, and delegates to transformLocation to do the transformation for all attributes that match.

      This method is only called when the transformSchemaLocations property is true.

      Throws:
      Exception
      See Also: