When an invokation to a ws endpoint happens, the URLMapper.invoke is called which does a MessageContext.getTargetService, which eventually goes to WSDDDeployment.getService. In WSDDDeployment the available services are stored in a HashMap, the key being the service name. This map is initialized during axis startup from the deployed services.
Now if the service name has spaces e.g. "My Service", I see a problem when running axis with tomcat 4.1.24. When the invokation is done, the URL will be encoded, i.e it will be like http://host:port/axis/My+Service/... Axis gets the path to the service from this invokation from a MessageContext property: msgContext.getProperty( HTTPConstants.MC_HTTP_SERVLETPATHINFO) This property is stored by AxisServlet (during the doGet/doPost call) using HttpServletRequest.getPathInfo In this version of tomcat this call is returning the non-url-decoded path i.e. in this case "My+Service". As a result, the service cannot be found. If I use tomcat version 4.0.4. then the call returns fine e.g. it returns "My Service" and there is no problem for axis finding the service. Is this a known problem? Another issue is that to work around this, I do not see any other option other than overrifing the AxisServlet doGet and doPost. Ideally if the createMessageContext method in AxisServlet is protected instead of private, I could override that to fix it. Any ideas why this is not protected? I am using axis 1.1 Thanks for any help. Shantanu Sen