[SWS-784] Add URLPathEndpointMapping Feature Created: 29/Jun/12  Updated: 10/Jul/12  Resolved: 10/Jul/12

Status: Resolved
Project: Spring Web Services
Component/s: Core
Affects Version/s: None
Fix Version/s: 2.1.1

Type: Improvement Priority: Minor
Reporter: Kaan Yamanyar Assignee: Arjen Poutsma
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: 11m
Original Estimate: Not Specified


With UriEndpointMapping you have to map the whole url in case of http protocol is used. With following class, url path instead of full uri is used. So that hostname and port is not important.

Mapping with UriEndpointMapping and URLPathEndpointMapping
"http://theserver:9084/service/abc" -> "/service/abc"

Please add a class like:

package org.springframework.ws.server.endpoint.mapping;

import org.springframework.ws.context.MessageContext;
import org.springframework.ws.server.endpoint.mapping.AbstractMapBasedEndpointMapping;
import org.springframework.ws.transport.WebServiceConnection;
import org.springframework.ws.transport.context.TransportContext;
import org.springframework.ws.transport.context.TransportContextHolder;

import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Locale;

 *@author Kaan Yamanyar
public class URLPathEndpointMapping extends AbstractMapBasedEndpointMapping {

    protected boolean validateLookupKey(String key) {
        try {
            new URI(key);
            return true;
        } catch (URISyntaxException e) {
            return false;

    protected String getLookupKeyForMessage(MessageContext messageContext) throws Exception {
        TransportContext transportContext = TransportContextHolder.getTransportContext();
        if (transportContext != null) {
            WebServiceConnection connection = transportContext.getConnection();
            if (connection != null) {
                String connectionUri = connection.getUri().toString();
                URL connectionURL = new URL(connectionUri);
                String path = connectionURL.getPath().toLowerCase(Locale.ENGLISH);
                logger.debug("Required endpoint: "+path);
                return path;
        return null;

Generated at Sun Nov 18 14:12:06 UTC 2018 using JIRA 7.9.2#79002-sha1:3bb15b68ecd99a30eb364c4c1a393359bcad6278.