With UriEndpointMapping you have to map the whole url in case of http protocol is used. I wrote a small class which uses the url path instead of full uri. So that hostname and port is not important.
Mapping wirh UriEndpointMapping and URLPathEndpointMapping
"http://theserver:9084/service/abc" -> "/service/abc"
Can you please add this to source code?
Code: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 { @Override protected boolean validateLookupKey(String key) { try { new URI(key); return true; } catch (URISyntaxException e) { return false; } } @Override 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; } }


Reply With Quote